Skip to content

Commit 15ce7cb

Browse files
committed
Prefer <S>::default instead of default struct literal
1 parent 7e0deb1 commit 15ce7cb

4 files changed

Lines changed: 11 additions & 40 deletions

File tree

‎cpp2rust/converter/converter.cpp‎

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4048,11 +4048,6 @@ std::string Converter::GetDefaultAsStringFallback(clang::QualType qual_type) {
40484048
return getTypedLiteral("0.0", ToString(qual_type));
40494049
}
40504050

4051-
if (auto literal = GetDefaultStructLiteralAsString(qual_type);
4052-
!literal.empty()) {
4053-
return literal;
4054-
}
4055-
40564051
if (auto record = qual_type->getAsRecordDecl()) {
40574052
if (ctx_.getSourceManager().isInSystemHeader(record->getLocation()) &&
40584053
qual_type.isPODType(ctx_)) {
@@ -4072,21 +4067,6 @@ std::string Converter::GetDefaultAsStringFallback(clang::QualType qual_type) {
40724067
return std::format("<{}>::default()", ToString(qual_type));
40734068
}
40744069

4075-
std::string
4076-
Converter::GetDefaultStructLiteralAsString(clang::QualType qual_type) {
4077-
auto *record = qual_type->getAsRecordDecl();
4078-
if (record == nullptr || record->isUnion()) {
4079-
return {};
4080-
}
4081-
if (auto *cxx = clang::dyn_cast<clang::CXXRecordDecl>(record);
4082-
cxx && GetUserDefinedDefaultConstructor(cxx)) {
4083-
return {};
4084-
}
4085-
Buffer buf(*this);
4086-
EmitDefaultStructLiteral(record);
4087-
return std::move(buf).str();
4088-
}
4089-
40904070
std::string Converter::ConvertVarDefaultInit(clang::QualType qual_type) {
40914071
return GetDefaultAsString(qual_type);
40924072
}

‎cpp2rust/converter/converter.h‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -552,9 +552,6 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
552552

553553
virtual std::string GetDefaultAsStringFallback(clang::QualType qual_type);
554554

555-
virtual std::string
556-
GetDefaultStructLiteralAsString(clang::QualType qual_type);
557-
558555
virtual std::string ConvertVarDefaultInit(clang::QualType qual_type);
559556

560557
virtual std::string

‎cpp2rust/converter/models/converter_refcount.cpp‎

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,22 +2187,19 @@ std::string ConverterRefCount::GetDefaultAsString(clang::QualType qual_type) {
21872187

21882188
std::string
21892189
ConverterRefCount::GetDefaultAsStringFallback(clang::QualType qual_type) {
2190-
if (qual_type->isReferenceType()) {
2191-
return Converter::GetDefaultAsStringFallback(qual_type);
2192-
}
2193-
2194-
std::string unboxed;
2195-
{
2196-
PushConversionKind push(*this, ConversionKind::Unboxed);
2197-
unboxed = Converter::GetDefaultAsStringFallback(qual_type);
2190+
auto canonical = qual_type.getUnqualifiedType().getCanonicalType();
2191+
if (canonical->isBooleanType() ||
2192+
(canonical->isIntegerType() && !canonical->isEnumeralType()) ||
2193+
canonical->isFloatingType()) {
2194+
std::string unboxed;
2195+
{
2196+
PushConversionKind push(*this, ConversionKind::Unboxed);
2197+
unboxed = Converter::GetDefaultAsStringFallback(qual_type);
2198+
}
2199+
return BoxValue(std::move(unboxed));
21982200
}
2199-
return BoxValue(std::move(unboxed));
2200-
}
22012201

2202-
std::string
2203-
ConverterRefCount::GetDefaultStructLiteralAsString(clang::QualType qual_type) {
2204-
PushConversionKind push(*this, ConversionKind::FullRefCount);
2205-
return Converter::GetDefaultStructLiteralAsString(qual_type);
2202+
return std::format("<{}>::default()", ToString(qual_type));
22062203
}
22072204

22082205
std::string

‎cpp2rust/converter/models/converter_refcount.h‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,6 @@ class ConverterRefCount final : public Converter {
182182

183183
std::string GetDefaultAsStringFallback(clang::QualType qual_type) override;
184184

185-
std::string
186-
GetDefaultStructLiteralAsString(clang::QualType qual_type) override;
187-
188185
std::string ConvertVarDefaultInit(clang::QualType qual_type) override;
189186

190187
std::vector<const char *>

0 commit comments

Comments
 (0)