From c41f264a1dba68c89b4a224a70e3a5783f7fa879 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 24 Jun 2025 17:55:48 -0400 Subject: Remove implicit conversions from Confidence to underlying type, these can cause bugs and also issues with C++20 --- lang/rust/rusttypes.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'lang/rust/rusttypes.cpp') diff --git a/lang/rust/rusttypes.cpp b/lang/rust/rusttypes.cpp index c43817ab..70bf3162 100644 --- a/lang/rust/rusttypes.cpp +++ b/lang/rust/rusttypes.cpp @@ -13,8 +13,8 @@ RustTypePrinter::RustTypePrinter(): TypePrinter("RustTypePrinter") void RustTypePrinter::AppendCallingConventionTokens(Type* type, Platform* platform, uint8_t baseConfidence, vector& tokens) { - if (type->GetCallingConvention() && platform && - type->GetCallingConvention().GetValue() != platform->GetDefaultCallingConvention()) + if (type->GetCallingConvention().GetValue() && platform + && type->GetCallingConvention().GetValue() != platform->GetDefaultCallingConvention()) { uint8_t ccConfidence = type->GetCallingConvention().GetCombinedConfidence(baseConfidence); tokens.emplace_back(baseConfidence, KeywordToken, "extern"); @@ -83,7 +83,7 @@ void RustTypePrinter::GetStructureMemberTokens(Platform* platform, Type* type, u } vector after = - GetTypeTokensAfterName(members[i].type, platform, BN_FULL_CONFIDENCE, nullptr, escaping); + GetTypeTokensAfterName(members[i].type.GetValue(), platform, BN_FULL_CONFIDENCE, nullptr, escaping); out.emplace_back(baseConfidence, FieldNameToken, NameList::EscapeTypeName(members[i].name, escaping)); @@ -144,7 +144,7 @@ vector RustTypePrinter::GetTypeTokensAfterNameInternal( if (i != 0) tokens.emplace_back(baseConfidence, TextToken, ", "); - vector paramTokens = GetTypeTokensAfterName(params[i].type, platform, + vector paramTokens = GetTypeTokensAfterName(params[i].type.GetValue(), platform, params[i].type.GetCombinedConfidence(baseConfidence), type, escaping); if (functionHeader) @@ -219,10 +219,10 @@ vector RustTypePrinter::GetTypeTokensAfterNameInternal( tokens.emplace_back(baseConfidence, TextToken, " -> "); tokens.emplace_back(type->CanReturn().GetCombinedConfidence(baseConfidence), TextToken, "!"); } - else if (type->GetChildType() && type->GetChildType()->GetClass() != VoidTypeClass) + else if (type->GetChildType().GetValue() && type->GetChildType()->GetClass() != VoidTypeClass) { tokens.emplace_back(baseConfidence, TextToken, " -> "); - vector retn = GetTypeTokensAfterName(type->GetChildType(), platform, + vector retn = GetTypeTokensAfterName(type->GetChildType().GetValue(), platform, type->GetChildType().GetCombinedConfidence(baseConfidence), type, escaping); if (functionHeader) { @@ -287,8 +287,8 @@ vector RustTypePrinter::GetTypeTokensAfterNameInternal( { if (type->GetChildType()->GetClass() == FunctionTypeClass) { - vector inner = GetTypeTokensAfterName( - type->GetChildType(), platform, baseConfidence, type, escaping); + vector inner = + GetTypeTokensAfterName(type->GetChildType().GetValue(), platform, baseConfidence, type, escaping); tokens.insert(tokens.end(), inner.begin(), inner.end()); return tokens; } @@ -299,7 +299,7 @@ vector RustTypePrinter::GetTypeTokensAfterNameInternal( else tokens.emplace_back(baseConfidence, KeywordToken, "mut"); tokens.emplace_back(baseConfidence, TextToken, " "); - vector inner = GetTypeTokensAfterName(type->GetChildType(), platform, + vector inner = GetTypeTokensAfterName(type->GetChildType().GetValue(), platform, type->GetChildType().GetCombinedConfidence(baseConfidence), type, escaping); tokens.insert(tokens.end(), inner.begin(), inner.end()); break; @@ -307,7 +307,7 @@ vector RustTypePrinter::GetTypeTokensAfterNameInternal( case ArrayTypeClass: { tokens.emplace_back(baseConfidence, BraceToken, "["); - vector inner = GetTypeTokensAfterName(type->GetChildType(), platform, + vector inner = GetTypeTokensAfterName(type->GetChildType().GetValue(), platform, type->GetChildType().GetCombinedConfidence(baseConfidence), type, escaping); tokens.insert(tokens.end(), inner.begin(), inner.end()); tokens.emplace_back(baseConfidence, TextToken, "; "); -- cgit v1.3.1