From 43835f859c49d905249c250438aa39fef3b65718 Mon Sep 17 00:00:00 2001 From: zhelyapovaleksey Date: Thu, 25 Jul 2024 13:01:17 +0300 Subject: [PATCH] Fix codecheck Issue: https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/IAFDJK Reason: fix codecheck Description: fix codecheck in ets2panda Tests: ninja all tests Signed-off-by: zhelyapovaleksey --- ets2panda/checker/TSchecker.h | 2 ++ ets2panda/checker/ts/object.cpp | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ets2panda/checker/TSchecker.h b/ets2panda/checker/TSchecker.h index 6879b76e21..c3bb88f34a 100644 --- a/ets2panda/checker/TSchecker.h +++ b/ets2panda/checker/TSchecker.h @@ -389,6 +389,8 @@ private: // Binary like expression void CheckBooleanLikeType(Type *leftType, Type *rightType, ir::AstNode *expr, lexer::TokenType op); + + void CheckExtendsBases(ObjectType *&baseObj, InterfaceType *&type, varbinder::InterfaceDecl *&decl); }; } // namespace ark::es2panda::checker diff --git a/ets2panda/checker/ts/object.cpp b/ets2panda/checker/ts/object.cpp index 793103f5a1..7116a8a5e3 100644 --- a/ets2panda/checker/ts/object.cpp +++ b/ets2panda/checker/ts/object.cpp @@ -478,13 +478,7 @@ ArenaVector TSChecker::GetBaseTypes(InterfaceType *type) continue; } - ArenaVector extendsBases = GetBaseTypes(baseObj->AsInterfaceType()); - for (auto *extendBase : extendsBases) { - if (extendBase == type) { - ThrowTypeError({"Type ", type->Name(), " recursively references itself as a base type."}, - decl->Node()->AsTSInterfaceDeclaration()->Id()->Start()); - } - } + CheckExtendsBases(baseObj, type, decl); } } @@ -492,6 +486,17 @@ ArenaVector TSChecker::GetBaseTypes(InterfaceType *type) return type->Bases(); } +void TSChecker::CheckExtendsBases(ObjectType *&baseObj, InterfaceType *&type, varbinder::InterfaceDecl *&decl) +{ + ArenaVector extendsBases = GetBaseTypes(baseObj->AsInterfaceType()); + for (auto *extendBase : extendsBases) { + if (extendBase == type) { + ThrowTypeError({"Type ", type->Name(), " recursively references itself as a base type."}, + decl->Node()->AsTSInterfaceDeclaration()->Id()->Start()); + } + } +} + void TSChecker::ResolveDeclaredMembers(InterfaceType *type) { if (type->HasObjectFlag(ObjectFlags::RESOLVED_DECLARED_MEMBERS)) { -- Gitee