diff --git a/ets2panda/checker/types/ets/etsObjectType.cpp b/ets2panda/checker/types/ets/etsObjectType.cpp index e1564d8e3b9701b06649411ec445ed7accf314c0..7f07ea057c76b1794e255c218bbf10e45325fac4 100644 --- a/ets2panda/checker/types/ets/etsObjectType.cpp +++ b/ets2panda/checker/types/ets/etsObjectType.cpp @@ -253,7 +253,13 @@ void ETSObjectType::CollectSignaturesForSyntheticType(std::multimapCollectSignaturesForSyntheticType(signatureSet, name, flags); + superType_->CollectSignaturesForSyntheticType(signatureSet, name, flags); + } + + if ((flags & PropertySearchFlags::SEARCH_IN_INTERFACES) != 0) { + for (auto *interface : interfaces_) { + interface->CollectSignaturesForSyntheticType(signatureSet, name, flags); + } } } diff --git a/ets2panda/checker/types/ets/etsObjectType.h b/ets2panda/checker/types/ets/etsObjectType.h index 3894142c7753f7c35db4ed515c6713354dff8683..82b7b190aa2317a7ad82fc3dcae5f7089522a31f 100644 --- a/ets2panda/checker/types/ets/etsObjectType.h +++ b/ets2panda/checker/types/ets/etsObjectType.h @@ -405,8 +405,8 @@ protected: virtual ETSFunctionType *CreateMethodTypeForProp(const util::StringView &name) const; private: - void CollectSignaturesForSyntheticType(std::multimap &signatures, - const util::StringView &name, PropertySearchFlags flags) const; + void CollectSignaturesForSyntheticType(std::multimap &signatures, const util::StringView &name, + PropertySearchFlags flags) const; template explicit ETSObjectType(ArenaAllocator *allocator, util::StringView name, util::StringView assemblerName, diff --git a/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp b/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp index 131b839841f6acfa1a58afbf6b6ff607f7730151..0683c5bc79ef2594f20c48a812c5f0c6329bafc3 100644 --- a/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp +++ b/ets2panda/compiler/lowering/ets/constantExpressionLowering.cpp @@ -461,7 +461,7 @@ static bool PerformRelationOperation(InputType left, InputType right, lexer::Tok } case lexer::TokenType::PUNCTUATOR_STRICT_EQUAL: case lexer::TokenType::PUNCTUATOR_EQUAL: { - return left == right; + return left == right; } case lexer::TokenType::PUNCTUATOR_NOT_STRICT_EQUAL: case lexer::TokenType::PUNCTUATOR_NOT_EQUAL: { diff --git a/ets2panda/compiler/lowering/ets/opAssignment.cpp b/ets2panda/compiler/lowering/ets/opAssignment.cpp index 8f9c6584b1a5071c2ea10dfdb6acc7f13f14664c..427de9932e1b5738305c44598d4c0e2aa9906e0f 100644 --- a/ets2panda/compiler/lowering/ets/opAssignment.cpp +++ b/ets2panda/compiler/lowering/ets/opAssignment.cpp @@ -193,9 +193,11 @@ static std::string GetCastString(checker::ETSChecker *checker, ir::Expression *e return " as @@T" + std::to_string(vec.size()); } -static ir::Expression *GenerateLoweredResultForLoweredAssignment( - const lexer::TokenType opEqual, ir::MemberExpression *expr, checker::ETSChecker *const checker, - parser::ETSParser *parser, ir::Expression * additionalAssignmentExpression) +static ir::Expression *GenerateLoweredResultForLoweredAssignment(const lexer::TokenType opEqual, + ir::MemberExpression *expr, + checker::ETSChecker *const checker, + parser::ETSParser *parser, + ir::Expression *additionalAssignmentExpression) { auto *allocator = checker->Allocator(); // Generated a formatString for the new lowered assignment expression @@ -250,7 +252,7 @@ static ir::Expression *ConstructOpAssignmentResult(public_lib::Context *ctx, ir: if (left->IsIdentifier()) { std::string formatString = "@@I1 = (@@I2 " + std::string(lexer::TokenToString(CombinedOpToOp(opEqual))) + " (@@E3))"; - ArenaVector retVec (allocator->Adapter()); + ArenaVector retVec(allocator->Adapter()); retVec.push_back(GetClone(allocator, left->AsIdentifier())); retVec.push_back(GetClone(allocator, left->AsIdentifier())); retVec.push_back(right); @@ -258,8 +260,7 @@ static ir::Expression *ConstructOpAssignmentResult(public_lib::Context *ctx, ir: retVal = parser->CreateFormattedExpression(formatString, retVec); } else if (left->IsMemberExpression()) { // Generate ArkTS code string for new lowered assignment expression: - retVal = GenerateLoweredResultForLoweredAssignment(opEqual, left->AsMemberExpression(), checker, parser, - right); + retVal = GenerateLoweredResultForLoweredAssignment(opEqual, left->AsMemberExpression(), checker, parser, right); } else { ES2PANDA_UNREACHABLE(); }