arkanalyzer 1.0.93 → 2.0.0-beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Config.d.ts +7 -0
- package/lib/Config.d.ts.map +1 -1
- package/lib/Scene.d.ts +134 -170
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +412 -976
- package/lib/callgraph/algorithm/AbstractAnalysis.js +3 -2
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +2 -3
- package/lib/callgraph/model/CallGraph.js +1 -1
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +1 -3
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +17 -7
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +4 -14
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +2 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +1 -2
- package/lib/callgraph/pointerAnalysis/plugins/WorkerPlugin.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/plugins/WorkerPlugin.js +0 -1
- package/lib/cli/commands/cg.d.ts +1 -0
- package/lib/cli/commands/cg.d.ts.map +1 -1
- package/lib/cli/commands/cg.js +22 -18
- package/lib/cli/commands/ir.d.ts +1 -0
- package/lib/cli/commands/ir.d.ts.map +1 -1
- package/lib/cli/commands/ir.js +5 -2
- package/lib/core/base/Constant.d.ts +5 -5
- package/lib/core/base/Constant.d.ts.map +1 -1
- package/lib/core/base/Constant.js +12 -9
- package/lib/core/base/Expr.d.ts +36 -20
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +206 -94
- package/lib/core/base/Local.d.ts +10 -20
- package/lib/core/base/Local.d.ts.map +1 -1
- package/lib/core/base/Local.js +25 -28
- package/lib/core/base/Position.d.ts +6 -0
- package/lib/core/base/Position.d.ts.map +1 -1
- package/lib/core/base/Position.js +37 -11
- package/lib/core/base/Ref.d.ts +45 -33
- package/lib/core/base/Ref.d.ts.map +1 -1
- package/lib/core/base/Ref.js +225 -51
- package/lib/core/base/Stmt.d.ts +19 -9
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +135 -52
- package/lib/core/base/Type.d.ts +67 -4
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +391 -20
- package/lib/core/base/TypeExpr.d.ts +6 -4
- package/lib/core/base/TypeExpr.d.ts.map +1 -1
- package/lib/core/base/TypeExpr.js +34 -10
- package/lib/core/base/Value.d.ts +20 -2
- package/lib/core/base/Value.d.ts.map +1 -1
- package/lib/core/base/Value.js +12 -0
- package/lib/core/common/ArkIRTransformer.d.ts +18 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +94 -75
- package/lib/core/common/ArkValueTransformer.d.ts +21 -3
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +458 -266
- package/lib/core/common/Builtin.d.ts +48 -24
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +90 -52
- package/lib/core/common/CanonicalizerValidator.d.ts +308 -0
- package/lib/core/common/CanonicalizerValidator.d.ts.map +1 -0
- package/lib/core/common/CanonicalizerValidator.js +888 -0
- package/lib/core/common/Const.d.ts +3 -3
- package/lib/core/common/Const.d.ts.map +1 -1
- package/lib/core/common/Const.js +3 -3
- package/lib/core/common/DummyMainCreater.d.ts +2 -21
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +8 -105
- package/lib/core/common/IRInference.d.ts +55 -3
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +407 -126
- package/lib/core/common/IRUtils.d.ts +1 -0
- package/lib/core/common/IRUtils.d.ts.map +1 -1
- package/lib/core/common/IRUtils.js +44 -13
- package/lib/core/common/ModelUtils.d.ts +44 -20
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +378 -208
- package/lib/core/common/SdkUtils.d.ts +35 -5
- package/lib/core/common/SdkUtils.d.ts.map +1 -1
- package/lib/core/common/SdkUtils.js +203 -59
- package/lib/core/common/SignatureCanonicalizer.d.ts +95 -0
- package/lib/core/common/SignatureCanonicalizer.d.ts.map +1 -0
- package/lib/core/common/SignatureCanonicalizer.js +116 -0
- package/lib/core/common/SignatureCanonicalizerRegistry.d.ts +176 -0
- package/lib/core/common/SignatureCanonicalizerRegistry.d.ts.map +1 -0
- package/lib/core/common/SignatureCanonicalizerRegistry.js +343 -0
- package/lib/core/common/SignatureModelCanonicalizer.d.ts +69 -0
- package/lib/core/common/SignatureModelCanonicalizer.d.ts.map +1 -0
- package/lib/core/common/SignatureModelCanonicalizer.js +109 -0
- package/lib/core/common/StmtUseReplacer.d.ts +1 -0
- package/lib/core/common/StmtUseReplacer.d.ts.map +1 -1
- package/lib/core/common/StmtUseReplacer.js +9 -0
- package/lib/core/common/StringUtils.d.ts +12 -1
- package/lib/core/common/StringUtils.d.ts.map +1 -1
- package/lib/core/common/StringUtils.js +36 -17
- package/lib/core/common/TempSignatureCanonicalizer.d.ts +82 -0
- package/lib/core/common/TempSignatureCanonicalizer.d.ts.map +1 -0
- package/lib/core/common/TempSignatureCanonicalizer.js +177 -0
- package/lib/core/common/TypeInference.d.ts +24 -6
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +243 -117
- package/lib/core/common/ValueUtil.d.ts +2 -1
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/common/ValueUtil.js +4 -1
- package/lib/core/graph/Cfg.d.ts.map +1 -1
- package/lib/core/graph/Cfg.js +21 -6
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +46 -33
- package/lib/core/graph/builder/IfBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/IfBuilder.js +6 -2
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +6 -2
- package/lib/core/inference/ModelInference.d.ts +24 -4
- package/lib/core/inference/ModelInference.d.ts.map +1 -1
- package/lib/core/inference/ModelInference.js +273 -79
- package/lib/core/inference/ValueInference.d.ts +3 -2
- package/lib/core/inference/ValueInference.d.ts.map +1 -1
- package/lib/core/inference/ValueInference.js +90 -40
- package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
- package/lib/core/inference/abc/AbcInference.js +28 -15
- package/lib/core/inference/arkts/ArkTsInference.d.ts +9 -3
- package/lib/core/inference/arkts/ArkTsInference.d.ts.map +1 -1
- package/lib/core/inference/arkts/ArkTsInference.js +54 -16
- package/lib/core/model/ArkClass.d.ts +192 -18
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +852 -122
- package/lib/core/model/ArkExport.d.ts.map +1 -1
- package/lib/core/model/ArkExport.js +1 -2
- package/lib/core/model/ArkField.d.ts +34 -2
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +89 -14
- package/lib/core/model/ArkFile.d.ts +72 -12
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +275 -65
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +1 -2
- package/lib/core/model/ArkMethod.d.ts +101 -15
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +252 -39
- package/lib/core/model/ArkModule.d.ts +1 -1
- package/lib/core/model/ArkModule.js +1 -1
- package/lib/core/model/ArkNamespace.d.ts +80 -10
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +309 -76
- package/lib/core/model/ArkSignature.d.ts +242 -18
- package/lib/core/model/ArkSignature.d.ts.map +1 -1
- package/lib/core/model/ArkSignature.js +725 -95
- package/lib/core/model/builder/ArkClassBuilder.d.ts +6 -3
- package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkClassBuilder.js +119 -73
- package/lib/core/model/builder/ArkExportBuilder.d.ts +1 -1
- package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkExportBuilder.js +1 -1
- package/lib/core/model/builder/ArkFieldBuilder.d.ts +0 -2
- package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFieldBuilder.js +9 -43
- package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkFileBuilder.js +32 -33
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +10 -3
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +40 -26
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +3 -2
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkNamespaceBuilder.js +45 -77
- package/lib/core/model/builder/ArkSignatureBuilder.d.ts +9 -0
- package/lib/core/model/builder/ArkSignatureBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkSignatureBuilder.js +26 -3
- package/lib/core/model/builder/BodyBuilder.d.ts +1 -0
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/BodyBuilder.js +37 -11
- package/lib/core/model/builder/builderUtils.d.ts +11 -1
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +124 -90
- package/lib/frontend/FrontendBuilder.d.ts +10 -6
- package/lib/frontend/FrontendBuilder.d.ts.map +1 -1
- package/lib/frontend/FrontendBuilder.js +19 -45
- package/lib/frontend/ModuleScene.d.ts +43 -0
- package/lib/frontend/ModuleScene.d.ts.map +1 -0
- package/lib/frontend/ModuleScene.js +143 -0
- package/lib/frontend/SceneBuildStage.d.ts +15 -0
- package/lib/frontend/SceneBuildStage.d.ts.map +1 -0
- package/lib/frontend/SceneBuildStage.js +32 -0
- package/lib/frontend/SceneBuilder.d.ts +153 -0
- package/lib/frontend/SceneBuilder.d.ts.map +1 -0
- package/lib/frontend/SceneBuilder.js +859 -0
- package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts +0 -2
- package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts.map +1 -1
- package/lib/frontend/arktsFrontend/ArktsFrontend.js +0 -18
- package/lib/frontend/arktsFrontend/FileBodyRemount.d.ts +17 -0
- package/lib/frontend/arktsFrontend/FileBodyRemount.d.ts.map +1 -0
- package/lib/frontend/arktsFrontend/FileBodyRemount.js +187 -0
- package/lib/frontend/common/ModuleBuilder.d.ts +4 -2
- package/lib/frontend/common/ModuleBuilder.d.ts.map +1 -1
- package/lib/frontend/common/ModuleBuilder.js +19 -9
- package/lib/frontend/cppFrontend/CppFrontend.d.ts +0 -6
- package/lib/frontend/cppFrontend/CppFrontend.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/CppFrontend.js +0 -56
- package/lib/frontend/cppFrontend/base/Type.d.ts +7 -0
- package/lib/frontend/cppFrontend/base/Type.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/base/Type.js +29 -0
- package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +56 -56
- package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +1 -1
- package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +124 -113
- package/lib/frontend/cppFrontend/common/Builtin.d.ts +29 -19
- package/lib/frontend/cppFrontend/common/Builtin.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/Builtin.js +56 -35
- package/lib/frontend/cppFrontend/common/IRInference.d.ts +7 -2
- package/lib/frontend/cppFrontend/common/IRInference.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/IRInference.js +61 -28
- package/lib/frontend/cppFrontend/common/IRUtils.d.ts +1 -0
- package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/IRUtils.js +22 -10
- package/lib/frontend/cppFrontend/common/ModelUtils.d.ts +19 -0
- package/lib/frontend/cppFrontend/common/ModelUtils.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/ModelUtils.js +84 -3
- package/lib/frontend/cppFrontend/common/TypeInference.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/common/TypeInference.js +44 -54
- package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +2 -1
- package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts +1 -1
- package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/inference/CxxValueInference.js +41 -5
- package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +18 -28
- package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.js +2 -3
- package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +2 -2
- package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +31 -24
- package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +10 -16
- package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +0 -2
- package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +19 -37
- package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +1 -0
- package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/BodyBuilder.js +30 -3
- package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/model/builder/builderUtils.js +8 -4
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -2
- package/lib/save/json/JsonSerialization.js +2 -2
- package/lib/save/source/SourceStmt.js +1 -1
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +0 -9
- package/lib/statistics/StageStatistics.d.ts +195 -0
- package/lib/statistics/StageStatistics.d.ts.map +1 -0
- package/lib/statistics/StageStatistics.js +346 -0
- package/lib/statistics/StageStatisticsReporter.d.ts +58 -0
- package/lib/statistics/StageStatisticsReporter.d.ts.map +1 -0
- package/lib/statistics/StageStatisticsReporter.js +255 -0
- package/lib/utils/Canonicalizer.d.ts +9 -2
- package/lib/utils/Canonicalizer.d.ts.map +1 -1
- package/lib/utils/Canonicalizer.js +19 -2
- package/lib/utils/CxxSceneUtils.d.ts +7 -0
- package/lib/utils/CxxSceneUtils.d.ts.map +1 -1
- package/lib/utils/CxxSceneUtils.js +10 -1
- package/lib/utils/FileUtils.d.ts +0 -1
- package/lib/utils/FileUtils.d.ts.map +1 -1
- package/lib/utils/FileUtils.js +1 -9
- package/lib/utils/HashUtils.d.ts +9 -0
- package/lib/utils/HashUtils.d.ts.map +1 -0
- package/lib/utils/HashUtils.js +65 -0
- package/lib/utils/ModuleUtils.d.ts.map +1 -1
- package/lib/utils/ModuleUtils.js +24 -5
- package/lib/utils/VisitedSegment.d.ts +23 -0
- package/lib/utils/VisitedSegment.d.ts.map +1 -0
- package/lib/utils/VisitedSegment.js +64 -0
- package/lib/utils/callGraphUtils.d.ts.map +1 -1
- package/lib/utils/callGraphUtils.js +7 -7
- package/lib/utils/getAllFiles.d.ts.map +1 -1
- package/lib/utils/getAllFiles.js +11 -8
- package/lib/utils/logger.d.ts +4 -0
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +16 -0
- package/lib/utils/parseArkSourceFile.d.ts +33 -0
- package/lib/utils/parseArkSourceFile.d.ts.map +1 -0
- package/lib/utils/parseArkSourceFile.js +131 -0
- package/package.json +1 -1
- package/lib/node_modules/ohos-typescript/README.OpenSource +0 -11
- package/lib/node_modules/ohos-typescript/README.md +0 -81
- package/lib/node_modules/ohos-typescript/SECURITY.md +0 -41
- package/lib/node_modules/ohos-typescript/ThirdPartyNoticeText.txt +0 -193
- package/lib/node_modules/ohos-typescript/bin/tsc +0 -2
- package/lib/node_modules/ohos-typescript/bin/tsserver +0 -2
- package/lib/node_modules/ohos-typescript/lib/README.md +0 -5
- package/lib/node_modules/ohos-typescript/lib/cancellationToken.js +0 -86
- package/lib/node_modules/ohos-typescript/lib/cs/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/de/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/es/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/fr/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/it/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/ja/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/ko/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/lib.dom.d.ts +0 -18505
- package/lib/node_modules/ohos-typescript/lib/lib.dom.iterable.d.ts +0 -341
- package/lib/node_modules/ohos-typescript/lib/lib.scripthost.d.ts +0 -327
- package/lib/node_modules/ohos-typescript/lib/lib.webworker.d.ts +0 -6192
- package/lib/node_modules/ohos-typescript/lib/lib.webworker.importscripts.d.ts +0 -26
- package/lib/node_modules/ohos-typescript/lib/lib.webworker.iterable.d.ts +0 -175
- package/lib/node_modules/ohos-typescript/lib/pl/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/pt-br/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/ru/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/tr/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/tsc.js +0 -114551
- package/lib/node_modules/ohos-typescript/lib/tsserver.js +0 -179691
- package/lib/node_modules/ohos-typescript/lib/tsserverlibrary.d.ts +0 -13648
- package/lib/node_modules/ohos-typescript/lib/tsserverlibrary.js +0 -178688
- package/lib/node_modules/ohos-typescript/lib/typesMap.json +0 -497
- package/lib/node_modules/ohos-typescript/lib/typingsInstaller.js +0 -39871
- package/lib/node_modules/ohos-typescript/lib/watchGuard.js +0 -49
- package/lib/node_modules/ohos-typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -1880
- package/lib/node_modules/ohos-typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -1880
- package/lib/utils/DependenciesSort.d.ts +0 -3
- package/lib/utils/DependenciesSort.d.ts.map +0 -1
- package/lib/utils/DependenciesSort.js +0 -72
- package/lib/utils/crypto_utils.d.ts +0 -6
- package/lib/utils/crypto_utils.d.ts.map +0 -1
- package/lib/utils/crypto_utils.js +0 -57
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import { ClassSignature
|
|
1
|
+
import { ClassSignature } from '../../../core/model/ArkSignature';
|
|
2
2
|
import { ClassType } from '../../../core/base/Type';
|
|
3
|
+
/**
|
|
4
|
+
* C++ built-in container names, syntax constants, and signature stubs.
|
|
5
|
+
*
|
|
6
|
+
* Signatures created here are **unclear stubs** (declaring file = FileSignature.DEFAULT) that
|
|
7
|
+
* live in the temp canonicalizer and are resolved to real signatures during type inference.
|
|
8
|
+
*/
|
|
3
9
|
export declare class BuiltinCxx {
|
|
4
10
|
static ARRAY: string;
|
|
5
11
|
static SET: string;
|
|
@@ -26,17 +32,6 @@ export declare class BuiltinCxx {
|
|
|
26
32
|
static OPERATOR_ISTREAM: string;
|
|
27
33
|
static OPERATOR_OSTREAM: string;
|
|
28
34
|
static BUILT_IN_CLASSES: Set<string>;
|
|
29
|
-
static DUMMY_PROJECT_NAME: string;
|
|
30
|
-
static DUMMY_FILE_NAME: string;
|
|
31
|
-
static BUILT_IN_CLASSES_FILE_SIGNATURE: FileSignature;
|
|
32
|
-
static OBJECT_CLASS_SIGNATURE: ClassSignature;
|
|
33
|
-
static OBJECT_CLASS_TYPE: ClassType;
|
|
34
|
-
static ARRAY_CLASS_SIGNATURE: ClassSignature;
|
|
35
|
-
static SET_CLASS_SIGNATURE: ClassSignature;
|
|
36
|
-
static MAP_CLASS_SIGNATURE: ClassSignature;
|
|
37
|
-
static REGEXP_CLASS_SIGNATURE: ClassSignature;
|
|
38
|
-
static REGEXP_CLASS_TYPE: ClassType;
|
|
39
|
-
static BUILT_IN_CLASS_SIGNATURE_MAP: Map<string, ClassSignature>;
|
|
40
35
|
static ITERATOR_FUNCTION: string;
|
|
41
36
|
static ITERATOR: string;
|
|
42
37
|
static ITERATOR_NEXT: string;
|
|
@@ -44,14 +39,29 @@ export declare class BuiltinCxx {
|
|
|
44
39
|
static ITERATOR_RESULT_BEGIN: string;
|
|
45
40
|
static ITERATOR_RESULT_END: string;
|
|
46
41
|
static ITERATOR_VALUE: string;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Unclear stub signature for a built-in class name (shared instance per name).
|
|
44
|
+
* Delegates to the core Builtin cache so that core and C++ consumers of the same
|
|
45
|
+
* name (e.g. 'Object') share one stub instance — and thus one temp SigID.
|
|
46
|
+
*/
|
|
47
|
+
static getBuiltinClassSignature(className: string): ClassSignature;
|
|
48
|
+
static get OBJECT_CLASS_SIGNATURE(): ClassSignature;
|
|
49
|
+
static get OBJECT_CLASS_TYPE(): ClassType;
|
|
50
|
+
static get ARRAY_CLASS_SIGNATURE(): ClassSignature;
|
|
51
|
+
static get SET_CLASS_SIGNATURE(): ClassSignature;
|
|
52
|
+
static get MAP_CLASS_SIGNATURE(): ClassSignature;
|
|
53
|
+
static get REGEXP_CLASS_SIGNATURE(): ClassSignature;
|
|
54
|
+
static get REGEXP_CLASS_TYPE(): ClassType;
|
|
55
|
+
static get ITERATOR_CLASS_SIGNATURE(): ClassSignature;
|
|
56
|
+
static get ITERATOR_RESULT_CLASS_SIGNATURE(): ClassSignature;
|
|
57
|
+
static get ITERATOR_CLASS_TYPE(): ClassType;
|
|
58
|
+
static get ITERATOR_RESULT_CLASS_TYPE(): ClassType;
|
|
51
59
|
private static buildBuiltInClasses;
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Whether the signature is an unresolved (stub) built-in container class.
|
|
62
|
+
* The old projectName check is replaced by the unclear check: stubs are unclear,
|
|
63
|
+
* while real parsed / resolved classes have concrete declaring files.
|
|
64
|
+
*/
|
|
54
65
|
static isBuiltinClass(classSignature: ClassSignature): boolean;
|
|
55
|
-
private static buildBuiltInClassSignatureMap;
|
|
56
66
|
}
|
|
57
67
|
//# sourceMappingURL=Builtin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAe,MAAM,yBAAyB,CAAC;AAGjE;;;;;GAKG;AACH,qBAAa,UAAU;IAEnB,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,aAAa,SAAmB;IAC9C,OAAc,KAAK,SAAW;IAC9B,OAAc,KAAK,SAAW;IAC9B,OAAc,KAAK,SAAW;IAC9B,OAAc,IAAI,SAAU;IAC5B,OAAc,MAAM,SAAY;IAChC,OAAc,aAAa,SAAmB;IAC9C,OAAc,cAAc,SAAoB;IAChD,OAAc,YAAY,SAAkB;IAC5C,OAAc,QAAQ,SAAc;IACpC,OAAc,QAAQ,SAAc;IACpC,OAAc,kBAAkB,SAAwB;IACxD,OAAc,kBAAkB,SAAwB;IACxD,OAAc,MAAM,SAAY;IAChC,OAAc,MAAM,SAAY;IAChC,OAAc,MAAM,SAAS;IAC7B,OAAc,SAAS,SAAW;IAClC,OAAc,gBAAgB,SAAe;IAC7C,OAAc,uBAAuB,SAA6B;IAClE,OAAc,gBAAgB,SAAgB;IAC9C,OAAc,gBAAgB,SAAgB;IAE9C,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,iBAAiB,SAAc;IAC7C,OAAc,QAAQ,SAAsB;IAC5C,OAAc,aAAa,SAAgB;IAC3C,OAAc,eAAe,SAAe;IAC5C,OAAc,qBAAqB,SAAW;IAC9C,OAAc,mBAAmB,SAAS;IAC1C,OAAc,cAAc,SAAO;IAInC;;;;OAIG;WACW,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAIzE,WAAkB,sBAAsB,IAAI,cAAc,CAEzD;IACD,WAAkB,iBAAiB,IAAI,SAAS,CAE/C;IACD,WAAkB,qBAAqB,IAAI,cAAc,CAExD;IACD,WAAkB,mBAAmB,IAAI,cAAc,CAEtD;IACD,WAAkB,mBAAmB,IAAI,cAAc,CAEtD;IACD,WAAkB,sBAAsB,IAAI,cAAc,CAEzD;IACD,WAAkB,iBAAiB,IAAI,SAAS,CAE/C;IAED,WAAkB,wBAAwB,IAAI,cAAc,CAE3D;IACD,WAAkB,+BAA+B,IAAI,cAAc,CAElE;IACD,WAAkB,mBAAmB,IAAI,SAAS,CAEjD;IACD,WAAkB,0BAA0B,IAAI,SAAS,CAExD;IAED,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC;;;;OAIG;WACW,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO;CAGxE"}
|
|
@@ -16,9 +16,57 @@
|
|
|
16
16
|
var _a;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.BuiltinCxx = void 0;
|
|
19
|
-
const ArkSignature_1 = require("../../../core/model/ArkSignature");
|
|
20
19
|
const Type_1 = require("../../../core/base/Type");
|
|
20
|
+
const Builtin_1 = require("../../../core/common/Builtin");
|
|
21
|
+
/**
|
|
22
|
+
* C++ built-in container names, syntax constants, and signature stubs.
|
|
23
|
+
*
|
|
24
|
+
* Signatures created here are **unclear stubs** (declaring file = FileSignature.DEFAULT) that
|
|
25
|
+
* live in the temp canonicalizer and are resolved to real signatures during type inference.
|
|
26
|
+
*/
|
|
21
27
|
class BuiltinCxx {
|
|
28
|
+
// --- Stable unclear stubs (shared per name, delegate to core Builtin's cache) ---
|
|
29
|
+
/**
|
|
30
|
+
* Unclear stub signature for a built-in class name (shared instance per name).
|
|
31
|
+
* Delegates to the core Builtin cache so that core and C++ consumers of the same
|
|
32
|
+
* name (e.g. 'Object') share one stub instance — and thus one temp SigID.
|
|
33
|
+
*/
|
|
34
|
+
static getBuiltinClassSignature(className) {
|
|
35
|
+
return Builtin_1.Builtin.getBuiltinClassSignature(className);
|
|
36
|
+
}
|
|
37
|
+
static get OBJECT_CLASS_SIGNATURE() {
|
|
38
|
+
return this.getBuiltinClassSignature(this.OBJECT);
|
|
39
|
+
}
|
|
40
|
+
static get OBJECT_CLASS_TYPE() {
|
|
41
|
+
return new Type_1.ClassType(this.OBJECT_CLASS_SIGNATURE);
|
|
42
|
+
}
|
|
43
|
+
static get ARRAY_CLASS_SIGNATURE() {
|
|
44
|
+
return this.getBuiltinClassSignature(this.ARRAY);
|
|
45
|
+
}
|
|
46
|
+
static get SET_CLASS_SIGNATURE() {
|
|
47
|
+
return this.getBuiltinClassSignature(this.SET);
|
|
48
|
+
}
|
|
49
|
+
static get MAP_CLASS_SIGNATURE() {
|
|
50
|
+
return this.getBuiltinClassSignature(this.MAP);
|
|
51
|
+
}
|
|
52
|
+
static get REGEXP_CLASS_SIGNATURE() {
|
|
53
|
+
return this.getBuiltinClassSignature(this.REGEXP);
|
|
54
|
+
}
|
|
55
|
+
static get REGEXP_CLASS_TYPE() {
|
|
56
|
+
return new Type_1.ClassType(this.REGEXP_CLASS_SIGNATURE);
|
|
57
|
+
}
|
|
58
|
+
static get ITERATOR_CLASS_SIGNATURE() {
|
|
59
|
+
return this.getBuiltinClassSignature(this.ITERATOR);
|
|
60
|
+
}
|
|
61
|
+
static get ITERATOR_RESULT_CLASS_SIGNATURE() {
|
|
62
|
+
return this.getBuiltinClassSignature(this.ITERATOR_RESULT);
|
|
63
|
+
}
|
|
64
|
+
static get ITERATOR_CLASS_TYPE() {
|
|
65
|
+
return new Type_1.ClassType(this.ITERATOR_CLASS_SIGNATURE, [new Type_1.GenericType('T')]);
|
|
66
|
+
}
|
|
67
|
+
static get ITERATOR_RESULT_CLASS_TYPE() {
|
|
68
|
+
return new Type_1.ClassType(this.ITERATOR_RESULT_CLASS_SIGNATURE, [new Type_1.GenericType('T')]);
|
|
69
|
+
}
|
|
22
70
|
static buildBuiltInClasses() {
|
|
23
71
|
const builtInClasses = new Set();
|
|
24
72
|
builtInClasses.add(this.ARRAY);
|
|
@@ -32,25 +80,13 @@ class BuiltinCxx {
|
|
|
32
80
|
builtInClasses.add(this.VECTOR);
|
|
33
81
|
return builtInClasses;
|
|
34
82
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
83
|
+
/**
|
|
84
|
+
* Whether the signature is an unresolved (stub) built-in container class.
|
|
85
|
+
* The old projectName check is replaced by the unclear check: stubs are unclear,
|
|
86
|
+
* while real parsed / resolved classes have concrete declaring files.
|
|
87
|
+
*/
|
|
41
88
|
static isBuiltinClass(classSignature) {
|
|
42
|
-
|
|
43
|
-
const projectName = classSignature.getDeclaringFileSignature().getProjectName();
|
|
44
|
-
return this.BUILT_IN_CLASSES.has(className) && projectName === this.DUMMY_PROJECT_NAME;
|
|
45
|
-
}
|
|
46
|
-
static buildBuiltInClassSignatureMap() {
|
|
47
|
-
const builtInClassSignatureMap = new Map();
|
|
48
|
-
builtInClassSignatureMap.set(this.OBJECT, this.OBJECT_CLASS_SIGNATURE);
|
|
49
|
-
builtInClassSignatureMap.set(this.ARRAY, this.ARRAY_CLASS_SIGNATURE);
|
|
50
|
-
builtInClassSignatureMap.set(this.SET, this.SET_CLASS_SIGNATURE);
|
|
51
|
-
builtInClassSignatureMap.set(this.MAP, this.MAP_CLASS_SIGNATURE);
|
|
52
|
-
builtInClassSignatureMap.set(this.REGEXP, this.REGEXP_CLASS_SIGNATURE);
|
|
53
|
-
return builtInClassSignatureMap;
|
|
89
|
+
return this.BUILT_IN_CLASSES.has(classSignature.getClassName()) && classSignature.isUnclear();
|
|
54
90
|
}
|
|
55
91
|
}
|
|
56
92
|
exports.BuiltinCxx = BuiltinCxx;
|
|
@@ -81,18 +117,7 @@ BuiltinCxx.ANONYMOUS_NAMESPACE_REF = '(anonymous namespace)::';
|
|
|
81
117
|
BuiltinCxx.OPERATOR_ISTREAM = 'operator>>';
|
|
82
118
|
BuiltinCxx.OPERATOR_OSTREAM = 'operator<<';
|
|
83
119
|
BuiltinCxx.BUILT_IN_CLASSES = _a.buildBuiltInClasses();
|
|
84
|
-
|
|
85
|
-
BuiltinCxx.DUMMY_FILE_NAME = 'BuiltinClass';
|
|
86
|
-
BuiltinCxx.BUILT_IN_CLASSES_FILE_SIGNATURE = BuiltinCxx.buildBuiltInClassesFileSignature();
|
|
87
|
-
BuiltinCxx.OBJECT_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.OBJECT);
|
|
88
|
-
BuiltinCxx.OBJECT_CLASS_TYPE = new Type_1.ClassType(_a.OBJECT_CLASS_SIGNATURE);
|
|
89
|
-
BuiltinCxx.ARRAY_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.ARRAY);
|
|
90
|
-
BuiltinCxx.SET_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.SET);
|
|
91
|
-
BuiltinCxx.MAP_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.MAP);
|
|
92
|
-
BuiltinCxx.REGEXP_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.REGEXP);
|
|
93
|
-
BuiltinCxx.REGEXP_CLASS_TYPE = new Type_1.ClassType(_a.REGEXP_CLASS_SIGNATURE);
|
|
94
|
-
BuiltinCxx.BUILT_IN_CLASS_SIGNATURE_MAP = _a.buildBuiltInClassSignatureMap();
|
|
95
|
-
// signature for built-in class
|
|
120
|
+
// iterator constants (C++ range-for lowering)
|
|
96
121
|
BuiltinCxx.ITERATOR_FUNCTION = 'iterator';
|
|
97
122
|
BuiltinCxx.ITERATOR = 'IterableIterator';
|
|
98
123
|
BuiltinCxx.ITERATOR_NEXT = 'iterator++';
|
|
@@ -100,7 +125,3 @@ BuiltinCxx.ITERATOR_RESULT = 'operator*';
|
|
|
100
125
|
BuiltinCxx.ITERATOR_RESULT_BEGIN = 'begin';
|
|
101
126
|
BuiltinCxx.ITERATOR_RESULT_END = 'end';
|
|
102
127
|
BuiltinCxx.ITERATOR_VALUE = '*';
|
|
103
|
-
BuiltinCxx.ITERATOR_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.ITERATOR);
|
|
104
|
-
BuiltinCxx.ITERATOR_RESULT_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.ITERATOR_RESULT);
|
|
105
|
-
BuiltinCxx.ITERATOR_CLASS_TYPE = new Type_1.ClassType(_a.ITERATOR_CLASS_SIGNATURE, [new Type_1.GenericType('T')]);
|
|
106
|
-
BuiltinCxx.ITERATOR_RESULT_CLASS_TYPE = new Type_1.ClassType(_a.ITERATOR_RESULT_CLASS_SIGNATURE, [new Type_1.GenericType('T')]);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { FieldSigResolution } from '../../../core/common/IRInference';
|
|
1
2
|
import { ArkMethod } from '../../../core/model/ArkMethod';
|
|
2
3
|
import { ClassType, Type } from '../../../core/base/Type';
|
|
3
4
|
import { Local } from '../../../core/base/Local';
|
|
4
5
|
import { AbstractExpr, AbstractInvokeExpr, AliasTypeExpr, ArkInstanceInvokeExpr, ArkStaticInvokeExpr } from '../../../core/base/Expr';
|
|
5
6
|
import { Scene } from '../../../Scene';
|
|
6
7
|
import { ArkClass } from '../../../core/model/ArkClass';
|
|
7
|
-
import { ClassSignature,
|
|
8
|
+
import { ClassSignature, MethodSignature } from '../../../core/model/ArkSignature';
|
|
8
9
|
import { AbstractFieldRef, AbstractRef, ArkInstanceFieldRef, ArkParameterRef } from '../../../core/base/Ref';
|
|
9
10
|
import { ArkFile } from '../../../core/model/ArkFile';
|
|
10
11
|
import { KeyofTypeExpr, TypeQueryExpr } from '../../../core/base/TypeExpr';
|
|
@@ -39,7 +40,11 @@ export declare class IRInference {
|
|
|
39
40
|
static replaceMethodSignature(init: MethodSignature, declared: MethodSignature): MethodSignature;
|
|
40
41
|
private static processForEach;
|
|
41
42
|
static inferLocal(base: Local, arkMethod: ArkMethod): void;
|
|
42
|
-
|
|
43
|
+
/**
|
|
44
|
+
* 判别联合——定义点 canonical(formal 分支,终点确定)与新构造值(params 分支,终点不确定)分流;null = 未解析。
|
|
45
|
+
* 泛型守卫(泛型字段不走定义点)为 cpp 侧遗留语义,照搬不改。
|
|
46
|
+
*/
|
|
47
|
+
static generateNewFieldSignature(ref: AbstractFieldRef, arkClass: ArkClass, baseType: Type): FieldSigResolution;
|
|
43
48
|
private static repairType;
|
|
44
49
|
static inferAnonymousClass(anon: ArkClass | null, declaredSignature: ClassSignature, set?: Set<string>): void;
|
|
45
50
|
private static assignAnonMethod;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/IRInference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/IRInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,7 @@ exports.IRInference = void 0;
|
|
|
43
43
|
*/
|
|
44
44
|
const fs_1 = __importDefault(require("fs"));
|
|
45
45
|
const path_1 = __importStar(require("path"));
|
|
46
|
+
const IRInference_1 = require("../../../core/common/IRInference");
|
|
46
47
|
const cppUtils_1 = require("../utils/cppUtils");
|
|
47
48
|
const ArkMethod_1 = require("../../../core/model/ArkMethod");
|
|
48
49
|
const Type_1 = require("../../../core/base/Type");
|
|
@@ -118,8 +119,12 @@ class IRInference {
|
|
|
118
119
|
this.inferExportInfos(file);
|
|
119
120
|
}
|
|
120
121
|
static inferStaticInvokeExpr(expr, arkMethod) {
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
// Builtin stubs carry FileSignature.DEFAULT (FileSigID 0), so the ID > 0 check lets
|
|
123
|
+
// real files through to inference (the old reference comparison against the core
|
|
124
|
+
// ES2015 virtual signature was always true for CXX/std signatures — dead condition, now removed).
|
|
125
|
+
// Pure field read: FileSigID 0 = DEFAULT (internDefaults 固化), > 0 = real file.
|
|
126
|
+
const fileSigID = expr.getMethodSignature().getDeclaringClassSignature().getDeclaringFileSigID();
|
|
127
|
+
if (fileSigID > 0) {
|
|
123
128
|
return expr;
|
|
124
129
|
}
|
|
125
130
|
const arkClass = arkMethod.getDeclaringArkClass();
|
|
@@ -139,7 +144,7 @@ class IRInference {
|
|
|
139
144
|
else if (methodName === TSConst_1.SUPER_NAME) {
|
|
140
145
|
const superClass = arkClass.getSuperClass();
|
|
141
146
|
if (superClass !== null) {
|
|
142
|
-
const newMethodSignature = new ArkSignature_1.MethodSignature(superClass.
|
|
147
|
+
const newMethodSignature = new ArkSignature_1.MethodSignature(superClass.getClassSigID(), expr.getMethodSignature().getMethodSubSignature());
|
|
143
148
|
expr.setMethodSignature(newMethodSignature);
|
|
144
149
|
}
|
|
145
150
|
return expr;
|
|
@@ -161,7 +166,7 @@ class IRInference {
|
|
|
161
166
|
static inferStaticInvokeExprByMethodName(methodName, arkMethod, expr) {
|
|
162
167
|
var _a, _b, _c, _d;
|
|
163
168
|
const arkClass = arkMethod.getDeclaringArkClass();
|
|
164
|
-
const arkExport = (_d = (_c = (_b = (_a = ModelUtils_2.CxxModelUtils.getStaticMethodWithName(methodName, arkClass)) !== null && _a !== void 0 ? _a : arkMethod.getFunctionLocal(methodName)) !== null && _b !== void 0 ? _b : ModelUtils_1.ModelUtils.findDeclaredLocal(new Local_1.Local(methodName), arkMethod)) !== null && _c !== void 0 ? _c : ModelUtils_2.CxxModelUtils.getArkExportInImportInfoWithName(methodName, arkClass.getDeclaringArkFile(), arkClass)) !== null && _d !== void 0 ? _d :
|
|
169
|
+
const arkExport = (_d = (_c = (_b = (_a = ModelUtils_2.CxxModelUtils.getStaticMethodWithName(methodName, arkClass)) !== null && _a !== void 0 ? _a : arkMethod.getFunctionLocal(methodName)) !== null && _b !== void 0 ? _b : ModelUtils_1.ModelUtils.findDeclaredLocal(new Local_1.Local(methodName), arkMethod)) !== null && _c !== void 0 ? _c : ModelUtils_2.CxxModelUtils.getArkExportInImportInfoWithName(methodName, arkClass.getDeclaringArkFile(), arkClass)) !== null && _d !== void 0 ? _d : SdkUtils_1.SdkUtils.getSdkGlobal(methodName);
|
|
165
170
|
let { mtd: method, sig: signature } = this.processArkExportForMethodAndSignature(arkExport, arkClass);
|
|
166
171
|
if (method) {
|
|
167
172
|
signature = method.matchMethodSignature(expr.getArgs());
|
|
@@ -274,16 +279,13 @@ class IRInference {
|
|
|
274
279
|
this.inferBase(ref, arkMethod);
|
|
275
280
|
const baseType = TypeInference_1.TypeInference.replaceAliasType(ref.getBase().getType());
|
|
276
281
|
if (baseType instanceof Type_1.ArrayType && ref.getFieldName() !== 'length') {
|
|
282
|
+
// 替换埋葬:本 ref 即将被 ArkArrayRef 替换——纯 retire。
|
|
283
|
+
ref.retireTemp();
|
|
277
284
|
return new Ref_1.ArkArrayRef(ref.getBase(), ValueUtil_1.ValueUtil.createConst(ref.getFieldName()));
|
|
278
285
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
return new Ref_1.ArkStaticFieldRef(newFieldSignature);
|
|
283
|
-
}
|
|
284
|
-
ref.setFieldSignature(newFieldSignature);
|
|
285
|
-
}
|
|
286
|
-
return ref;
|
|
286
|
+
// 判别联合消费——终态执行统一走 core 的 applyFieldResolution(formal:graduate/static 转换;params:static probe 转换/就地演进)。
|
|
287
|
+
const resolution = this.generateNewFieldSignature(ref, arkMethod.getDeclaringArkClass(), baseType);
|
|
288
|
+
return IRInference_1.IRInference.applyFieldResolution(ref, resolution);
|
|
287
289
|
}
|
|
288
290
|
static inferBase(instance, arkMethod) {
|
|
289
291
|
const base = instance.getBase();
|
|
@@ -466,7 +468,7 @@ class IRInference {
|
|
|
466
468
|
return null;
|
|
467
469
|
}
|
|
468
470
|
static inferInvokeExprWithArray(methodName, expr, baseType, scene) {
|
|
469
|
-
const arrayInterface =
|
|
471
|
+
const arrayInterface = SdkUtils_1.SdkUtils.getSdkGlobal(Builtin_1.Builtin.ARRAY);
|
|
470
472
|
if (arrayInterface instanceof ArkClass_1.ArkClass) {
|
|
471
473
|
return this.inferInvokeExpr(expr, new Type_1.ClassType(arrayInterface.getSignature(), [baseType.getBaseType()]), methodName, scene);
|
|
472
474
|
}
|
|
@@ -482,7 +484,7 @@ class IRInference {
|
|
|
482
484
|
expr.setMethodSignature(baseType.getMethodSignature());
|
|
483
485
|
return expr;
|
|
484
486
|
}
|
|
485
|
-
const funcInterface =
|
|
487
|
+
const funcInterface = SdkUtils_1.SdkUtils.getSdkGlobal(TSConst_1.FUNCTION);
|
|
486
488
|
if (funcInterface instanceof ArkClass_1.ArkClass) {
|
|
487
489
|
const method = ModelUtils_1.ModelUtils.findPropertyInClass(methodName, funcInterface);
|
|
488
490
|
if (method instanceof ArkMethod_1.ArkMethod) {
|
|
@@ -497,7 +499,7 @@ class IRInference {
|
|
|
497
499
|
var _a, _b;
|
|
498
500
|
let declaredClass = scene.getClass(baseType.getClassSignature());
|
|
499
501
|
if (!declaredClass) {
|
|
500
|
-
const globalClass =
|
|
502
|
+
const globalClass = SdkUtils_1.SdkUtils.getSdkGlobal(baseType.getClassSignature().getClassName());
|
|
501
503
|
if (globalClass instanceof ArkClass_1.ArkClass) {
|
|
502
504
|
declaredClass = globalClass;
|
|
503
505
|
}
|
|
@@ -526,12 +528,16 @@ class IRInference {
|
|
|
526
528
|
}
|
|
527
529
|
else {
|
|
528
530
|
const subSignature = new ArkSignature_1.MethodSubSignature(methodName, [], new Type_1.ClassType(baseType.getClassSignature()));
|
|
531
|
+
// getClassSignature() (not getClassSigID()): the class may still be unclear and live in
|
|
532
|
+
// the temp canonicalizer; the object overload interns it properly.
|
|
529
533
|
expr.setMethodSignature(new ArkSignature_1.MethodSignature(baseType.getClassSignature(), subSignature));
|
|
530
534
|
}
|
|
531
535
|
return expr;
|
|
532
536
|
}
|
|
533
537
|
else if (methodName === Builtin_1.Builtin.ITERATOR_NEXT &&
|
|
534
|
-
baseType.
|
|
538
|
+
baseType.getClassSigID() === -1 &&
|
|
539
|
+
baseType.getClassSignature().getClassName() === Builtin_1.Builtin.ITERATOR) {
|
|
540
|
+
// Fires only on the UNRESOLVED iterator stub (old: virtual 'CXX/std' project check).
|
|
535
541
|
expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_RESULT_CLASS_TYPE);
|
|
536
542
|
expr.setRealGenericTypes(baseType.getRealGenericTypes());
|
|
537
543
|
return expr;
|
|
@@ -588,12 +594,20 @@ class IRInference {
|
|
|
588
594
|
static replaceMethodSignature(init, declared) {
|
|
589
595
|
const className = init.getDeclaringClassSignature().getClassName();
|
|
590
596
|
let classSignature;
|
|
591
|
-
|
|
597
|
+
// display 归一化:仅当 init 类名有信息量(非 %unk——组件 create/pop 的 init 由组件名直构)时包 alias。普通 interface 解析(init 为 %unk stub,
|
|
598
|
+
// 如 TestInterface.callf)直接用 declared——alias 会把显示退化为 %unk。
|
|
599
|
+
if (className !== Const_1.UNKNOWN_CLASS_NAME && declared.getDeclaringClassSignature().getClassName().endsWith('Interface')) {
|
|
592
600
|
classSignature = new ArkSignature_1.AliasClassSignature(className, declared.getDeclaringClassSignature());
|
|
593
601
|
}
|
|
594
602
|
let newSubSignature;
|
|
595
603
|
if (classSignature || newSubSignature) {
|
|
596
|
-
|
|
604
|
+
const result = new ArkSignature_1.MethodSignature(classSignature !== null && classSignature !== void 0 ? classSignature : declared.getDeclaringClassSignature(), newSubSignature !== null && newSubSignature !== void 0 ? newSubSignature : declared.getMethodSubSignature());
|
|
605
|
+
// display 归一化:alias 产物 intern formal + 双注册 declared 的 ArkMethod model——expr 的 route() formal 命中持 SigID(display 由 formal
|
|
606
|
+
// canonical 自持,不再依赖 expr 锚定传入实例)。
|
|
607
|
+
if (classSignature !== undefined) {
|
|
608
|
+
(0, ArkSignature_1.internAliasMethodSignature)(result, declared);
|
|
609
|
+
}
|
|
610
|
+
return result;
|
|
597
611
|
}
|
|
598
612
|
return declared;
|
|
599
613
|
}
|
|
@@ -641,6 +655,10 @@ class IRInference {
|
|
|
641
655
|
base.setType(new Type_2.PointerType(baseType, 1));
|
|
642
656
|
}
|
|
643
657
|
}
|
|
658
|
+
/**
|
|
659
|
+
* 判别联合——定义点 canonical(formal 分支,终点确定)与新构造值(params 分支,终点不确定)分流;null = 未解析。
|
|
660
|
+
* 泛型守卫(泛型字段不走定义点)为 cpp 侧遗留语义,照搬不改。
|
|
661
|
+
*/
|
|
644
662
|
static generateNewFieldSignature(ref, arkClass, baseType) {
|
|
645
663
|
if (baseType instanceof Type_1.AliasType) {
|
|
646
664
|
return this.generateNewFieldSignature(ref, arkClass, baseType.getOriginalType());
|
|
@@ -658,17 +676,21 @@ class IRInference {
|
|
|
658
676
|
if (typeWithoutPtrOrRef instanceof Type_1.ClassType) {
|
|
659
677
|
const property = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[0];
|
|
660
678
|
if (property instanceof ArkField_1.ArkField && property.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER && !(property.getType() instanceof Type_1.GenericType)) {
|
|
661
|
-
|
|
679
|
+
// 定义点 canonical(formalId 直读)。
|
|
680
|
+
return { kind: 'formal', formalId: property.getFieldSigID(), staticFlag: property.isStatic(), type: property.getType() };
|
|
662
681
|
}
|
|
663
682
|
staticFlag =
|
|
664
683
|
typeWithoutPtrOrRef.getClassSignature().getClassName() === Const_1.DEFAULT_ARK_CLASS_NAME ||
|
|
665
684
|
((property instanceof ArkField_1.ArkField || property instanceof ArkMethod_1.ArkMethod) && property.isStatic());
|
|
685
|
+
// Note: getClassSignature() (not getClassSigID()) — the class may still be unclear
|
|
686
|
+
// and live in the temp canonicalizer; the object overload interns it properly.
|
|
666
687
|
signature = property instanceof ArkMethod_1.ArkMethod ? property.getSignature().getDeclaringClassSignature() : typeWithoutPtrOrRef.getClassSignature();
|
|
667
688
|
}
|
|
668
689
|
else if (typeWithoutPtrOrRef instanceof Type_1.ArrayType) {
|
|
669
690
|
const property = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[0];
|
|
670
691
|
if (property instanceof ArkField_1.ArkField) {
|
|
671
|
-
|
|
692
|
+
// 定义点 canonical(Array 字段)。
|
|
693
|
+
return { kind: 'formal', formalId: property.getFieldSigID(), staticFlag: property.isStatic(), type: property.getType() };
|
|
672
694
|
}
|
|
673
695
|
return null;
|
|
674
696
|
}
|
|
@@ -679,7 +701,10 @@ class IRInference {
|
|
|
679
701
|
else {
|
|
680
702
|
return null;
|
|
681
703
|
}
|
|
682
|
-
|
|
704
|
+
// 新构造值(终点不确定)——参数元组。
|
|
705
|
+
return signature instanceof ArkSignature_1.NamespaceSignature
|
|
706
|
+
? { kind: 'params', fieldName, declaringOrID: signature.getNamespaceSigID(), type: propertyType !== null && propertyType !== void 0 ? propertyType : ref.getType(), staticFlag, namespaceDeclared: true }
|
|
707
|
+
: { kind: 'params', fieldName, declaringOrID: signature, type: propertyType !== null && propertyType !== void 0 ? propertyType : ref.getType(), staticFlag, namespaceDeclared: false };
|
|
683
708
|
}
|
|
684
709
|
static repairType(propertyType, fieldName, arkClass) {
|
|
685
710
|
if (!propertyType || propertyType instanceof Type_1.UnknownType) {
|
|
@@ -723,7 +748,9 @@ class IRInference {
|
|
|
723
748
|
this.assignAnonMethod(scene.getMethod(type.getMethodSignature()), property);
|
|
724
749
|
}
|
|
725
750
|
if (type instanceof Type_1.UnknownType) {
|
|
726
|
-
|
|
751
|
+
// 类型对齐而非签名过户:同 assignAnonField——只补类型,不把匿名字段
|
|
752
|
+
// intern 到声明类名下(防 model 顶替写穿)。
|
|
753
|
+
anonField.getSignature().setType(new Type_1.FunctionType(property.getSignature()));
|
|
727
754
|
}
|
|
728
755
|
}
|
|
729
756
|
}
|
|
@@ -765,10 +792,12 @@ class IRInference {
|
|
|
765
792
|
}
|
|
766
793
|
const leftOp = lastStmt.getLeftOp();
|
|
767
794
|
if (leftOp instanceof Ref_1.AbstractFieldRef) {
|
|
768
|
-
|
|
795
|
+
// A2 快路径:定义点 canonical 回写(property 为 ArkField,ID 直读)。
|
|
796
|
+
leftOp.graduateToFormal(property.getFieldSigID());
|
|
769
797
|
}
|
|
770
798
|
}
|
|
771
|
-
|
|
799
|
+
// 类型对齐而非签名过户(同 core 侧 assignAnonField,防 model 顶替写穿)。
|
|
800
|
+
anonField.getSignature().setType(property.getSignature().getType());
|
|
772
801
|
}
|
|
773
802
|
static inferAliasTypeExpr(expr, arkMethod) {
|
|
774
803
|
const originalObject = expr.getOriginalObject();
|
|
@@ -946,8 +975,10 @@ class IRInference {
|
|
|
946
975
|
*@ param sortedRefFiles - sorted reference file array
|
|
947
976
|
*/
|
|
948
977
|
static findMtdImpl(mtd, implClasses) {
|
|
949
|
-
if (mtd.getImplementationSignature() ||
|
|
950
|
-
mtd.
|
|
978
|
+
if (mtd.getImplementationSignature() ||
|
|
979
|
+
mtd.isDefaultArkMethod() ||
|
|
980
|
+
mtd.getName() === Const_1.INSTANCE_INIT_METHOD_NAME ||
|
|
981
|
+
mtd.getName() === Const_1.STATIC_INIT_METHOD_NAME) {
|
|
951
982
|
return;
|
|
952
983
|
}
|
|
953
984
|
this.mapHeaderToSource(mtd, implClasses);
|
|
@@ -1031,7 +1062,7 @@ class IRInference {
|
|
|
1031
1062
|
static getClassWithNameAndNamespace(clsName, file, namespaceName) {
|
|
1032
1063
|
let tgtNamespacesInFile = [];
|
|
1033
1064
|
if (namespaceName) {
|
|
1034
|
-
tgtNamespacesInFile =
|
|
1065
|
+
tgtNamespacesInFile = file.getAllNamespacesUnderThisFile().filter(ns => ns.getName() === namespaceName);
|
|
1035
1066
|
}
|
|
1036
1067
|
const searchedClasses = [];
|
|
1037
1068
|
if (tgtNamespacesInFile.length !== 0) {
|
|
@@ -1078,7 +1109,9 @@ class IRInference {
|
|
|
1078
1109
|
const declSignature = mtdDecl.getDeclareSignatures();
|
|
1079
1110
|
const declSignatureInMtdImpl = mtdImpl.getDeclareSignatures();
|
|
1080
1111
|
if (declSignature) {
|
|
1081
|
-
|
|
1112
|
+
// getDeclareSignatures() returns a rebuilt copy — write the merged list back explicitly.
|
|
1113
|
+
const merged = declSignatureInMtdImpl ? [...declSignatureInMtdImpl, ...declSignature] : [...declSignature];
|
|
1114
|
+
mtdImpl.setDeclareSignatures(merged);
|
|
1082
1115
|
}
|
|
1083
1116
|
// 3.The function implementation may be missing the existing modifiers (such as static) in the function declaration. Here we add
|
|
1084
1117
|
mtdImpl.setModifiers(mtdDecl.getModifiers() | mtdImpl.getModifiers());
|
|
@@ -15,6 +15,7 @@ export declare class IRUtils {
|
|
|
15
15
|
static isTempLocal(value: Value): boolean;
|
|
16
16
|
static findOperandIdx(stmt: Stmt, operand: Value): number;
|
|
17
17
|
static adjustOperandOriginalPositions(stmt: Stmt, oldValue: Value, newValue: Value): void;
|
|
18
|
+
static generateDefaultPositionsPacked(count: number): number[];
|
|
18
19
|
static generateDefaultPositions(count: number): FullPosition[];
|
|
19
20
|
static buildLambdaCaptureListFromAst(lambdaExpr: CxxAstNode): string;
|
|
20
21
|
private static formatLambdaCaptureEntry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRUtils.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/IRUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IRUtils.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/IRUtils.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAgC,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,qBAAa,OAAO;WACF,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;WAczC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;WAWvC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;WAYjH,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB;WAS1H,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;WAIlC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM;WAYlD,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI;WAqClF,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;WAUvD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;WAQvD,6BAA6B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAc3E,OAAO,CAAC,MAAM,CAAC,wBAAwB;WAezB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;WAmB5C,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;WAiB9E,4BAA4B,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE;CAUnF"}
|
|
@@ -78,11 +78,11 @@ class IRUtils {
|
|
|
78
78
|
return index;
|
|
79
79
|
}
|
|
80
80
|
static adjustOperandOriginalPositions(stmt, oldValue, newValue) {
|
|
81
|
-
const
|
|
82
|
-
if (!
|
|
81
|
+
const packed = stmt.getOperandPositionsPacked();
|
|
82
|
+
if (!packed) {
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
|
-
const operandOriginalPositionSize =
|
|
85
|
+
const operandOriginalPositionSize = packed.length >> 1;
|
|
86
86
|
const defUseSize = stmt.getDefAndUses().length;
|
|
87
87
|
const oldValueUseSize = oldValue.getUses().length;
|
|
88
88
|
const newValueUseSize = newValue.getUses().length;
|
|
@@ -91,30 +91,39 @@ class IRUtils {
|
|
|
91
91
|
const fieldValueOffset = 2;
|
|
92
92
|
if (oldValue instanceof Ref_1.AbstractRef && newValue instanceof Ref_1.AbstractRef) {
|
|
93
93
|
if (newValue instanceof Ref_1.ArkStaticFieldRef) {
|
|
94
|
-
|
|
94
|
+
packed.splice(2 * (oldValueIdx + baseValueOffset), 2 * (oldValueUseSize - newValueUseSize));
|
|
95
95
|
}
|
|
96
96
|
else if (oldValue instanceof Ref_1.ArkStaticFieldRef) {
|
|
97
|
-
|
|
97
|
+
packed.splice(2 * (oldValueIdx + baseValueOffset), 0, ...IRUtils.generateDefaultPositionsPacked(newValueUseSize - oldValueUseSize));
|
|
98
98
|
}
|
|
99
99
|
if (oldValue instanceof Ref_1.ArkInstanceFieldRef && newValue instanceof Ref_1.ArkArrayRef) {
|
|
100
100
|
if (operandOriginalPositionSize === defUseSize) {
|
|
101
101
|
// may not reserve positions for field name
|
|
102
|
-
|
|
102
|
+
packed.splice(2 * (oldValueIdx + fieldValueOffset), 0, ...IRUtils.generateDefaultPositionsPacked(newValueUseSize - oldValueUseSize));
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
else if (oldValue instanceof Ref_1.ArkArrayRef && newValue instanceof Ref_1.ArkInstanceFieldRef) {
|
|
106
|
-
|
|
106
|
+
packed.splice(2 * (oldValueIdx + fieldValueOffset), 2 * (oldValueUseSize - newValueUseSize));
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
else if (oldValue instanceof Expr_1.AbstractInvokeExpr && newValue instanceof Expr_1.AbstractInvokeExpr) {
|
|
110
110
|
if (oldValueUseSize === newValueUseSize + 1) {
|
|
111
|
-
|
|
111
|
+
packed.splice(2 * (oldValueIdx + baseValueOffset), 2);
|
|
112
112
|
}
|
|
113
113
|
else if (oldValueUseSize === newValueUseSize - 1) {
|
|
114
|
-
|
|
114
|
+
packed.splice(2 * (oldValueIdx + baseValueOffset), 0, Position_1.FullPosition.DEFAULT.getFirstPacked(), Position_1.FullPosition.DEFAULT.getLastPacked());
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
+
static generateDefaultPositionsPacked(count) {
|
|
119
|
+
const packed = [];
|
|
120
|
+
const first = Position_1.FullPosition.DEFAULT.getFirstPacked();
|
|
121
|
+
const last = Position_1.FullPosition.DEFAULT.getLastPacked();
|
|
122
|
+
for (let i = 0; i < count; i++) {
|
|
123
|
+
packed.push(first, last);
|
|
124
|
+
}
|
|
125
|
+
return packed;
|
|
126
|
+
}
|
|
118
127
|
static generateDefaultPositions(count) {
|
|
119
128
|
const defaultPositions = [];
|
|
120
129
|
for (let i = 0; i < count; i++) {
|
|
@@ -171,7 +180,10 @@ class IRUtils {
|
|
|
171
180
|
return '';
|
|
172
181
|
}
|
|
173
182
|
static analyzeLambdaDefaultCapture(captureList) {
|
|
174
|
-
const parts = captureList
|
|
183
|
+
const parts = captureList
|
|
184
|
+
.split(',')
|
|
185
|
+
.map(p => p.trim())
|
|
186
|
+
.filter(Boolean);
|
|
175
187
|
let defaultCaptureType = null;
|
|
176
188
|
for (const part of parts) {
|
|
177
189
|
if (part === '=') {
|
|
@@ -38,6 +38,25 @@ export declare class CxxModelUtils {
|
|
|
38
38
|
static getStaticMethodInFileWithName(methodName: string, arkFile: ArkFile): ArkMethod | null;
|
|
39
39
|
static getAccessibleAnonNamespacesInFile(file: ArkFile, namespace?: ArkNamespace): ArkNamespace[];
|
|
40
40
|
static findPropertyInNamespace(name: string, namespace: ArkNamespace): ArkExport | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a nested class / local class referenced by its short (unqualified) name.
|
|
43
|
+
*
|
|
44
|
+
* C++ name lookup makes nested classes visible by their bare name inside the
|
|
45
|
+
* enclosing class, but the analyzer stores them under a composed top-level name
|
|
46
|
+
* (`Inner$Outer`, multi-level chains like `I$I2$Outer`, method-local classes as
|
|
47
|
+
* `L$Cls.m`). Instead of fuzzy prefix matching on the container's class list,
|
|
48
|
+
* this walks the enclosing-name chain of the context class and resolves each
|
|
49
|
+
* candidate by an exact ClassSignature lookup (O(1) per candidate).
|
|
50
|
+
*
|
|
51
|
+
* Candidate order follows C++ scoping (innermost first), so a same-name nested
|
|
52
|
+
* class correctly shadows an outer/top-level class.
|
|
53
|
+
* @param shortName - the bare source name of the nested class
|
|
54
|
+
* @param ctxClass - the class where the reference occurs (scope context)
|
|
55
|
+
* @param ctxMethod - optional; the method where the reference occurs. When present,
|
|
56
|
+
* classes declared inside the method body (`L$Cls.m`) are also considered.
|
|
57
|
+
* @returns The matching ArkClass, or null when no candidate resolves.
|
|
58
|
+
*/
|
|
59
|
+
static findClassByShortName(shortName: string, ctxClass: ArkClass, ctxMethod?: ArkMethod): ArkClass | null;
|
|
41
60
|
static findSymbolInFileWithName(symbolName: string, arkClass: ArkClass, onlyType?: boolean): ArkExport | null;
|
|
42
61
|
static isIOStreamObjectMatched(parameters: MethodParameter[], args: Value[], scene: Scene): boolean;
|
|
43
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/ModelUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAY,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/ModelUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAY,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAc,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAI5F,OAAO,EAAE,UAAU,EAAc,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAWjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAiDvC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAanE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAe/F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAKrE;AAgHD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,GAAG,IAAI,CAqBnH;AA2FD,qBAAa,aAAa;WAER,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;WAmCvG,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI;WAyClF,oCAAoC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;WAW3F,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;WAclF,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;WAgBrF,iCAAiC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE;WAY1F,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS;IAiBnG;;;;;;;;;;;;;;;;;OAiBG;WACW,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI;WAwDnG,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAE,OAAe,GAAG,SAAS,GAAG,IAAI;WAgD7G,uBAAuB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO;CAiB7G"}
|