From 55e73cd1cc26d1b397ed91aef262c32acd8555cc Mon Sep 17 00:00:00 2001 From: lirismankarina Date: Wed, 30 Apr 2025 19:27:10 +0300 Subject: [PATCH] Clang-tidy fix Signed-off-by: lirismankarina --- ets2panda/checker/ETSAnalyzerHelpers.cpp | 1 + ets2panda/checker/ets/function.cpp | 2 +- ets2panda/checker/types/ets/etsEnumType.h | 1 + ets2panda/checker/types/ets/etsObjectType.cpp | 5 +++-- ets2panda/checker/types/ets/etsUnionType.cpp | 7 ++----- ets2panda/compiler/core/ETSCompiler.cpp | 9 +++------ .../ets/constantExpressionLowering.cpp | 14 +++++++------- .../lowering/ets/constantExpressionLowering.h | 4 ++++ .../compiler/lowering/ets/enumLowering.cpp | 18 +++++++++--------- .../lowering/ets/enumPostCheckLowering.cpp | 5 +++-- .../enumPropertiesInAnnotationsLowering.cpp | 1 - .../compiler/lowering/ets/opAssignment.cpp | 4 ++-- ets2panda/compiler/lowering/util.h | 1 - ets2panda/ir/astNode.h | 6 ++---- ets2panda/ir/expressions/memberExpression.cpp | 4 ++-- 15 files changed, 40 insertions(+), 42 deletions(-) diff --git a/ets2panda/checker/ETSAnalyzerHelpers.cpp b/ets2panda/checker/ETSAnalyzerHelpers.cpp index 024aec83a7..aeadb0eebd 100644 --- a/ets2panda/checker/ETSAnalyzerHelpers.cpp +++ b/ets2panda/checker/ETSAnalyzerHelpers.cpp @@ -818,5 +818,6 @@ std::tuple IsConstantTestValue(ir::Expression const *expr) } return {false, false}; } +// NOLINTEND(readability-else-after-return) } // namespace ark::es2panda::checker diff --git a/ets2panda/checker/ets/function.cpp b/ets2panda/checker/ets/function.cpp index 877ddfbf9a..2e5149daf6 100644 --- a/ets2panda/checker/ets/function.cpp +++ b/ets2panda/checker/ets/function.cpp @@ -495,7 +495,7 @@ Signature *ETSChecker::ValidateSignature( // setting the boxing/unboxing flag for the arguments if needed. // So handle substitution arguments only in the case of unique function or collecting signature phase. Signature *const signature = - (flags & TypeRelationFlag::NO_SUBSTITUTION_NEEDED) + ((flags & TypeRelationFlag::NO_SUBSTITUTION_NEEDED) != 0U) ? baseSignature : MaybeSubstituteTypeParameters(this, baseSignature, typeArguments, arguments, pos, flags); if (signature == nullptr) { diff --git a/ets2panda/checker/types/ets/etsEnumType.h b/ets2panda/checker/types/ets/etsEnumType.h index 22b98fc52f..afd97e4737 100644 --- a/ets2panda/checker/types/ets/etsEnumType.h +++ b/ets2panda/checker/types/ets/etsEnumType.h @@ -28,6 +28,7 @@ namespace ark::es2panda::checker { class ETSEnumType : public ETSObjectType { public: + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init) explicit ETSEnumType(ArenaAllocator *allocator, util::StringView name, util::StringView internalName, ir::AstNode *declNode, TypeRelation *relation, ETSObjectFlags const flag) : ETSObjectType(allocator, name, internalName, diff --git a/ets2panda/checker/types/ets/etsObjectType.cpp b/ets2panda/checker/types/ets/etsObjectType.cpp index 855a69a959..25da969a4f 100644 --- a/ets2panda/checker/types/ets/etsObjectType.cpp +++ b/ets2panda/checker/types/ets/etsObjectType.cpp @@ -210,12 +210,13 @@ static void AddSignatureToSignatureSet(std::unordered_multimapToString())) { + if (signatureSet.count(sigToInsert->ToString()) != 0U) { auto range = signatureSet.equal_range(sigToInsert->ToString()); for (auto it = range.first; it != range.second; ++it) { if (relation->IsSupertypeOf(sigToInsert->Owner(), it->second->Owner())) { continue; - } else if (relation->IsSupertypeOf(it->second->Owner(), sigToInsert->Owner())) { + } + if (relation->IsSupertypeOf(it->second->Owner(), sigToInsert->Owner())) { signatureSet.erase(it); signatureSet.insert({sigToInsert->ToString(), sigToInsert}); } else { diff --git a/ets2panda/checker/types/ets/etsUnionType.cpp b/ets2panda/checker/types/ets/etsUnionType.cpp index dc0dfc04a8..ebd3787491 100644 --- a/ets2panda/checker/types/ets/etsUnionType.cpp +++ b/ets2panda/checker/types/ets/etsUnionType.cpp @@ -295,11 +295,8 @@ void ETSUnionType::CheckVarianceRecursively(TypeRelation *relation, VarianceFlag bool ETSUnionType::IsAssignableType(checker::Type *sourceType) const noexcept { - if (sourceType->IsETSUnionType() || sourceType->IsETSArrayType() || sourceType->IsETSFunctionType() || - sourceType->IsETSTypeParameter() || sourceType->IsETSTupleType() || sourceType->IsTypeError()) { - return true; - } - return false; + return (sourceType->IsETSUnionType() || sourceType->IsETSArrayType() || sourceType->IsETSFunctionType() || + sourceType->IsETSTypeParameter() || sourceType->IsETSTupleType() || sourceType->IsTypeError()); } // ATTENTION! When calling this method we assume that 'AssignmentTarget(...)' check was passes successfully, diff --git a/ets2panda/compiler/core/ETSCompiler.cpp b/ets2panda/compiler/core/ETSCompiler.cpp index c6bd7ef0db..b69a7c19cb 100644 --- a/ets2panda/compiler/core/ETSCompiler.cpp +++ b/ets2panda/compiler/core/ETSCompiler.cpp @@ -739,12 +739,9 @@ bool IsCastCall(checker::Signature *signature) { ES2PANDA_ASSERT(signature->HasSignatureFlag(checker::SignatureFlags::STATIC)); auto *func = signature->Function(); - if (func->Parent()->Parent()->IsMethodDefinition() && IsCastCallName(func->Id()->Name()) && - util::Helpers::ContainingClass(func)->AsETSObjectType()->IsBoxedPrimitive() && - (signature->Params().size() == 1) && signature->Params()[0]->TsType()->IsETSPrimitiveType()) { - return true; - } - return false; + return (func->Parent()->Parent()->IsMethodDefinition() && IsCastCallName(func->Id()->Name()) && + util::Helpers::ContainingClass(func)->AsETSObjectType()->IsBoxedPrimitive() && + (signature->Params().size() == 1) && signature->Params()[0]->TsType()->IsETSPrimitiveType()); } void ETSCompiler::EmitCall(const ir::CallExpression *expr, compiler::VReg &calleeReg, diff --git a/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp b/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp index 314aba6913..19cb3b3fd6 100644 --- a/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp +++ b/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp @@ -467,22 +467,22 @@ static bool PerformRelationOperation(InputType left, InputType right, lexer::Tok // 2. with adaptive epsilon // Minimal possible difference between two float values // For float (IEEE-754 binary32) it is 2^(-23) and its bit representation is 0x34000000. - static auto EPSILON = bit_cast(0x34000000); - if (std::fabs(left - right) <= EPSILON) { + static auto epsilon = bit_cast(FLOAT_BIT_REPRESENTATION); + if (std::fabs(left - right) <= epsilon) { return true; } - return std::fabs(left - right) <= EPSILON * std::fmax(std::fabs(left), std::fabs(right)); + return std::fabs(left - right) <= epsilon * std::fmax(std::fabs(left), std::fabs(right)); } else if constexpr (std::is_same_v) { // Compare floating point numbers in two steps: // 1. With fixed epsilon // 2. with adaptive epsilon // Minimal possible difference between two double values // For double (IEEE-754 binary64) it is 2^(-52) and its bit representation is 0x3cb0000000000000. - static auto EPSILON = bit_cast(0x3cb0000000000000); - if (std::fabs(left - right) <= EPSILON) { + static auto epsilon = bit_cast(DOUBLE_BIT_REPRESENTATION); + if (std::fabs(left - right) <= epsilon) { return true; } - return std::fabs(left - right) <= EPSILON * std::fmax(std::fabs(left), std::fabs(right)); + return std::fabs(left - right) <= epsilon * std::fmax(std::fabs(left), std::fabs(right)); } else { return left == right; } @@ -752,7 +752,7 @@ static ir::AstNode *PerformStringAdditiveOperation(const ir::BinaryExpression *e auto appendLiteral = [&resStr, allocator = context->allocator](const ir::Literal *lit) { if (lit->IsCharLiteral()) { - resStr.Append(static_cast(lit->AsCharLiteral()->Char()) & 0xFFFF); + resStr.Append(static_cast(lit->AsCharLiteral()->Char()) & MAX_CHAR); return; } if (lit->IsStringLiteral()) { diff --git a/ets2panda/compiler/lowering/ets/constantExpressionLowering.h b/ets2panda/compiler/lowering/ets/constantExpressionLowering.h index 0bf1aead0f..4b4b67b7fb 100644 --- a/ets2panda/compiler/lowering/ets/constantExpressionLowering.h +++ b/ets2panda/compiler/lowering/ets/constantExpressionLowering.h @@ -20,6 +20,10 @@ namespace ark::es2panda::compiler { +constexpr static uint64_t FLOAT_BIT_REPRESENTATION = 0x34000000; +constexpr static uint64_t DOUBLE_BIT_REPRESENTATION = 0x3cb0000000000000; +constexpr static char32_t MAX_CHAR = 0xFFFF; + enum class TypeRank { // Keep this order INT8, diff --git a/ets2panda/compiler/lowering/ets/enumLowering.cpp b/ets2panda/compiler/lowering/ets/enumLowering.cpp index 3f70ae064f..f70fca125d 100644 --- a/ets2panda/compiler/lowering/ets/enumLowering.cpp +++ b/ets2panda/compiler/lowering/ets/enumLowering.cpp @@ -789,8 +789,8 @@ void EnumLoweringPhase::CreateEnumGetNameMethod(const ir::TSEnumDeclaration *con namespace { -static ir::VariableDeclaration *CreateForLoopInitVariableDeclaration(checker::ETSChecker *checker, - ir::Identifier *const loopIdentifier) +ir::VariableDeclaration *CreateForLoopInitVariableDeclaration(checker::ETSChecker *checker, + ir::Identifier *const loopIdentifier) { static_assert(EnumLoweringPhase::ORDINAL_TYPE == ir::PrimitiveType::INT); auto *const init = checker->AllocNode(lexer::Number((int32_t)0)); @@ -805,9 +805,9 @@ static ir::VariableDeclaration *CreateForLoopInitVariableDeclaration(checker::ET return declaration; } -static ir::BinaryExpression *CreateForLoopTest(checker::ETSChecker *checker, ir::Identifier *const enumClassIdentifier, - ir::Identifier *const namesArrayIdentifier, - ir::Identifier *const loopIdentifier) +ir::BinaryExpression *CreateForLoopTest(checker::ETSChecker *checker, ir::Identifier *const enumClassIdentifier, + ir::Identifier *const namesArrayIdentifier, + ir::Identifier *const loopIdentifier) { auto *const lengthIdent = checker->AllocNode("length", checker->Allocator()); auto *const propertyAccessExpr = @@ -820,7 +820,7 @@ static ir::BinaryExpression *CreateForLoopTest(checker::ETSChecker *checker, ir: return binaryExpr; } -static ir::UpdateExpression *CreateForLoopUpdate(checker::ETSChecker *checker, ir::Identifier *const loopIdentifier) +ir::UpdateExpression *CreateForLoopUpdate(checker::ETSChecker *checker, ir::Identifier *const loopIdentifier) { auto *const forLoopIdentClone = loopIdentifier->Clone(checker->Allocator(), nullptr); auto *const incrementExpr = @@ -828,9 +828,9 @@ static ir::UpdateExpression *CreateForLoopUpdate(checker::ETSChecker *checker, i return incrementExpr; } -static ir::IfStatement *CreateIf(checker::ETSChecker *checker, ir::MemberExpression *propertyAccessExpr, - ir::MemberExpression *itemAccessExpr, ir::Identifier *const loopIdentifier, - ir::ETSParameterExpression *const parameter) +ir::IfStatement *CreateIf(checker::ETSChecker *checker, ir::MemberExpression *propertyAccessExpr, + ir::MemberExpression *itemAccessExpr, ir::Identifier *const loopIdentifier, + ir::ETSParameterExpression *const parameter) { auto *const forLoopIdentClone1 = loopIdentifier->Clone(checker->Allocator(), nullptr); auto *const namesArrayElementExpr = checker->AllocNode( diff --git a/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp b/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp index e5ba691c7a..b74fb9f380 100644 --- a/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp +++ b/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp @@ -93,7 +93,8 @@ static EnumCastType NeedHandleEnumCasting(ir::TSAsExpression *node) EnumCastType castType = EnumCastType::NONE; if (type == nullptr) { return castType; - } else if (type->IsETSStringType()) { + } + if (type->IsETSStringType()) { castType = EnumCastType::CAST_TO_STRING; } else if (type->HasTypeFlag(checker::TypeFlag::ETS_NUMERIC) || (type->IsETSObjectType() && @@ -418,7 +419,7 @@ bool EnumPostCheckLoweringPhase::PerformForModule(public_lib::Context *ctx, pars } return GenerateEnumCasting(node->AsTSAsExpression(), castFlag); } - if (node->IsSwitchStatement() && node->AsSwitchStatement()->Discriminant()->TsType() && node->AsSwitchStatement()->Discriminant()->TsType()->IsETSEnumType()) { + if (node->IsSwitchStatement() && (node->AsSwitchStatement()->Discriminant()->TsType() != nullptr) && node->AsSwitchStatement()->Discriminant()->TsType()->IsETSEnumType()) { return GenerateGetOrdinalCallForSwitch(node->AsSwitchStatement()); } return node; diff --git a/ets2panda/compiler/lowering/ets/enumPropertiesInAnnotationsLowering.cpp b/ets2panda/compiler/lowering/ets/enumPropertiesInAnnotationsLowering.cpp index 3891497c8e..4546fbd8a8 100644 --- a/ets2panda/compiler/lowering/ets/enumPropertiesInAnnotationsLowering.cpp +++ b/ets2panda/compiler/lowering/ets/enumPropertiesInAnnotationsLowering.cpp @@ -14,7 +14,6 @@ */ #include "enumPropertiesInAnnotationsLowering.h" -#include "ir/base/classProperty.h" #include "checker/types/ets/etsArrayType.h" #include "checker/types/ets/etsEnumType.h" #include "ir/base/classProperty.h" diff --git a/ets2panda/compiler/lowering/ets/opAssignment.cpp b/ets2panda/compiler/lowering/ets/opAssignment.cpp index 6e01cd32cc..c9070999d5 100644 --- a/ets2panda/compiler/lowering/ets/opAssignment.cpp +++ b/ets2panda/compiler/lowering/ets/opAssignment.cpp @@ -207,8 +207,8 @@ static ir::Expression *ConstructOpAssignmentResult(public_lib::Context *ctx, ir: // Create temporary variable(s) if left hand of assignment is not defined by simple identifier[s] if (left->IsIdentifier()) { - std::string formatString = "@@I1 = (@@I2 " + std::string(lexer::TokenToString(CombinedOpToOp(opEqual))) + - " (@@E3))"; + std::string formatString = + "@@I1 = (@@I2 " + std::string(lexer::TokenToString(CombinedOpToOp(opEqual))) + " (@@E3))"; if (!left->TsType()->IsETSStringType()) { formatString += ".to" + left->TsType()->ToString() + "()"; } diff --git a/ets2panda/compiler/lowering/util.h b/ets2panda/compiler/lowering/util.h index 96cb8a8ede..f4b13825fc 100644 --- a/ets2panda/compiler/lowering/util.h +++ b/ets2panda/compiler/lowering/util.h @@ -33,7 +33,6 @@ util::UString GenName(ArenaAllocator *allocator); void ClearTypesVariablesAndScopes(ir::AstNode *node) noexcept; ArenaSet FindCaptured(ArenaAllocator *allocator, ir::AstNode *scopeBearer) noexcept; void SetSourceRangesRecursively(ir::AstNode *node, const lexer::SourceRange &range); -ir::AstNode *RefineSourceRanges(ir::AstNode *node); // Rerun varbinder on the node. varbinder::Scope *Rebind(PhaseManager *phaseManager, varbinder::ETSBinder *varBinder, ir::AstNode *node); diff --git a/ets2panda/ir/astNode.h b/ets2panda/ir/astNode.h index c302f08289..d47b1beebe 100644 --- a/ets2panda/ir/astNode.h +++ b/ets2panda/ir/astNode.h @@ -515,10 +515,8 @@ public: void TransformChildrenRecursively(const NodeTraverser &pre, const NodeTransformer &post, std::string_view transformationName); // Keep these for perf reasons: - void TransformChildrenRecursivelyPreorder(const NodeTransformer &preorderTransformer, - std::string_view transformationName); - void TransformChildrenRecursivelyPostorder(const NodeTransformer &postorderTransformer, - std::string_view transformationName); + void TransformChildrenRecursivelyPreorder(const NodeTransformer &cb, std::string_view transformationName); + void TransformChildrenRecursivelyPostorder(const NodeTransformer &cb, std::string_view transformationName); void IterateRecursively(const NodeTraverser &cb) const; void IterateRecursivelyPreorder(const NodeTraverser &cb) const; diff --git a/ets2panda/ir/expressions/memberExpression.cpp b/ets2panda/ir/expressions/memberExpression.cpp index c15fd9b075..39da888624 100644 --- a/ets2panda/ir/expressions/memberExpression.cpp +++ b/ets2panda/ir/expressions/memberExpression.cpp @@ -298,7 +298,7 @@ bool MemberExpression::CheckArrayIndexValue(checker::ETSChecker *checker) const auto const &number = property_->AsNumberLiteral()->Number(); if (number.IsInteger()) { - auto const value = number.GetValueAndCastTo(); + auto const value = number.GetValueAndCastTo(); if (value < 0) { checker->LogError(diagnostic::NEGATIVE_INDEX, {}, property_->Start()); return false; @@ -306,7 +306,7 @@ bool MemberExpression::CheckArrayIndexValue(checker::ETSChecker *checker) const index = static_cast(value); } else { ES2PANDA_ASSERT(number.IsReal()); - double value = number.GetValueAndCastTo(); + auto value = number.GetValueAndCastTo(); double fraction = std::modf(value, &value); if (value < 0.0 || fraction >= std::numeric_limits::epsilon()) { checker->LogError(diagnostic::INDEX_NEGATIVE_OR_FRACTIONAL, {}, property_->Start()); -- Gitee