From 474b335f22be045b5c4e78a3b03c99caedab280d Mon Sep 17 00:00:00 2001 From: maoruihao Date: Sat, 19 Jul 2025 17:47:29 +0800 Subject: [PATCH] [Interop] Delete declarations with @noninterop Signed-off-by: maoruihao --- ets2panda/declgen_ets2ts/declgenEts2Ts.cpp | 11 +++++++++-- ets2panda/declgen_ets2ts/declgenEts2Ts.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp b/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp index 2204455776..898bd12d94 100644 --- a/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp +++ b/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp @@ -34,6 +34,7 @@ #include "ir/ts/tsInterfaceBody.h" #include "ir/ts/tsTypeAliasDeclaration.h" #include "ir/ts/tsTypeParameter.h" +#include "compiler/lowering/util.h" #define DEBUG_PRINT 0 @@ -264,7 +265,10 @@ void TSDeclGen::GenDeclarations() for (auto *globalStatement : program_->Ast()->Statements()) { ResetState(); ResetClassNode(); - if (globalStatement->IsClassDeclaration()) { + const auto jsdoc = compiler::JsdocStringFromDeclaration(globalStatement); + if (jsdoc.Utf8().find(NON_INTEROP_FLAG) != std::string_view::npos) { + continue; + } else if (globalStatement->IsClassDeclaration()) { GenClassDeclaration(globalStatement->AsClassDeclaration()); } else if (globalStatement->IsTSInterfaceDeclaration()) { GenInterfaceDeclaration(globalStatement->AsTSInterfaceDeclaration()); @@ -1865,7 +1869,10 @@ void TSDeclGen::ProcessClassBody(const ir::ClassDefinition *classDef) state_.inClass = true; std::unordered_set processedMethods; for (const auto *prop : classDef->Body()) { - if (classDef->IsEnumTransformed()) { + const auto jsdoc = compiler::JsdocStringFromDeclaration(prop); + if (jsdoc.Utf8().find(NON_INTEROP_FLAG) != std::string_view::npos) { + continue; + } else if (classDef->IsEnumTransformed()) { if (prop->IsClassProperty()) { state_.inEnum = true; GenPropDeclaration(prop->AsClassProperty()); diff --git a/ets2panda/declgen_ets2ts/declgenEts2Ts.h b/ets2panda/declgen_ets2ts/declgenEts2Ts.h index 94471dab3b..f53c2cbfe5 100644 --- a/ets2panda/declgen_ets2ts/declgenEts2Ts.h +++ b/ets2panda/declgen_ets2ts/declgenEts2Ts.h @@ -26,6 +26,8 @@ namespace ark::es2panda::declgen_ets2ts { +constexpr const char* NON_INTEROP_FLAG = "@noninterop"; + struct DeclgenOptions { bool exportAll = false; bool isolated = false; -- Gitee