arkanalyzer 1.0.94 → 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.js +1 -1
- 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 +455 -265
- 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 +181 -53
- 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 +116 -71
- 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/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
|
@@ -73,15 +73,12 @@ function buildNormalArkClassFromArkMethod(clsNode, cls, sourceFile, declaring) {
|
|
|
73
73
|
}
|
|
74
74
|
exports.buildNormalArkClassFromArkMethod = buildNormalArkClassFromArkMethod;
|
|
75
75
|
function buildNormalArkClassFromArkFile(clsNode, arkFile, cls, sourceFile, declaring) {
|
|
76
|
-
cls.setDeclaringArkFile(arkFile);
|
|
77
76
|
cls.setOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(clsNode, sourceFile));
|
|
78
77
|
buildNormalArkClass(clsNode, cls, sourceFile, declaring);
|
|
79
78
|
arkFile.addArkClass(cls);
|
|
80
79
|
}
|
|
81
80
|
exports.buildNormalArkClassFromArkFile = buildNormalArkClassFromArkFile;
|
|
82
81
|
function buildNormalArkClassFromArkNamespace(clsNode, arkNamespace, cls, sourceFile, declaring) {
|
|
83
|
-
cls.setDeclaringArkNamespace(arkNamespace);
|
|
84
|
-
cls.setDeclaringArkFile(arkNamespace.getDeclaringArkFile());
|
|
85
82
|
cls.setOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(clsNode, sourceFile));
|
|
86
83
|
buildNormalArkClass(clsNode, cls, sourceFile, declaring);
|
|
87
84
|
arkNamespace.addArkClass(cls);
|
|
@@ -115,9 +112,8 @@ function buildNormalArkClass(clsNode, cls, sourceFile, declaring) {
|
|
|
115
112
|
}
|
|
116
113
|
exports.buildNormalArkClass = buildNormalArkClass;
|
|
117
114
|
function buildUnion2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
118
|
-
var _a;
|
|
119
115
|
const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
|
|
120
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, cls.
|
|
116
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
121
117
|
cls.setSignature(classSignature);
|
|
122
118
|
cls.setCategory(ArkClass_1.ClassCategory.UNION);
|
|
123
119
|
(0, ArkClassBuilder_1.init4InstanceInitMethod)(cls);
|
|
@@ -125,9 +121,8 @@ function buildUnion2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
|
125
121
|
buildArkClassMembers(clsNode, cls, sourceFile);
|
|
126
122
|
}
|
|
127
123
|
function buildStruct2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
128
|
-
var _a;
|
|
129
124
|
const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
|
|
130
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, cls.
|
|
125
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
131
126
|
cls.setSignature(classSignature);
|
|
132
127
|
if (clsNode.inner) {
|
|
133
128
|
processCXXHeritage(clsNode, cls);
|
|
@@ -140,9 +135,8 @@ function buildStruct2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
|
140
135
|
buildArkClassMembers(clsNode, cls, sourceFile);
|
|
141
136
|
}
|
|
142
137
|
function buildClass2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
143
|
-
var _a;
|
|
144
138
|
const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
|
|
145
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, cls.
|
|
139
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
146
140
|
cls.setSignature(classSignature);
|
|
147
141
|
if (clsNode.inner) {
|
|
148
142
|
processCXXHeritage(clsNode, cls);
|
|
@@ -159,9 +153,8 @@ function buildClass2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
|
159
153
|
cls.setModifiers((0, builderUtils_1.buildModifiersForCxxClass)(cls));
|
|
160
154
|
}
|
|
161
155
|
function buildTemplateClass(clsNode, cls, sourceFile, declaring) {
|
|
162
|
-
var _a;
|
|
163
156
|
const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
|
|
164
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, cls.
|
|
157
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
165
158
|
cls.setSignature(classSignature);
|
|
166
159
|
if (clsNode.inner) {
|
|
167
160
|
processCXXHeritage(clsNode, cls);
|
|
@@ -205,9 +198,8 @@ function processCXXHeritage(clsNode, cls) {
|
|
|
205
198
|
}
|
|
206
199
|
}
|
|
207
200
|
function buildEnum2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
208
|
-
var _a;
|
|
209
201
|
const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
|
|
210
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, cls.
|
|
202
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
211
203
|
cls.setSignature(classSignature);
|
|
212
204
|
cls.setCategory(ArkClass_1.ClassCategory.ENUM);
|
|
213
205
|
(0, ArkClassBuilder_1.init4StaticInitMethod)(cls);
|
|
@@ -216,15 +208,15 @@ function buildEnum2ArkClass(clsNode, cls, sourceFile, declaring) {
|
|
|
216
208
|
function buildInitMethodsForClassTag(tag, cls, sourceFile, instanceInitStmts, staticInitStmts) {
|
|
217
209
|
if (tag === ArkCxxAstNode_1.CxxTagUsed.Class) {
|
|
218
210
|
const tu = sourceFile;
|
|
219
|
-
const instanceIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.
|
|
220
|
-
const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.
|
|
221
|
-
(0, ArkMethodBuilder_1.buildInitMethod)(cls.
|
|
222
|
-
(0, ArkMethodBuilder_1.buildInitMethod)(cls.
|
|
211
|
+
const instanceIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getInstanceInitMethodOrNull());
|
|
212
|
+
const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getStaticInitMethodOrNull());
|
|
213
|
+
(0, ArkMethodBuilder_1.buildInitMethod)(cls.getInstanceInitMethodOrNull(), instanceInitStmts, instanceIRTransformer.getThisLocal());
|
|
214
|
+
(0, ArkMethodBuilder_1.buildInitMethod)(cls.getStaticInitMethodOrNull(), staticInitStmts, staticIRTransformer.getThisLocal());
|
|
223
215
|
}
|
|
224
216
|
else if (tag === ArkCxxAstNode_1.CxxTagUsed.Enum) {
|
|
225
217
|
const tu = sourceFile;
|
|
226
|
-
const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.
|
|
227
|
-
(0, ArkMethodBuilder_1.buildInitMethod)(cls.
|
|
218
|
+
const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getStaticInitMethodOrNull());
|
|
219
|
+
(0, ArkMethodBuilder_1.buildInitMethod)(cls.getStaticInitMethodOrNull(), staticInitStmts, staticIRTransformer.getThisLocal());
|
|
228
220
|
}
|
|
229
221
|
}
|
|
230
222
|
function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
@@ -242,7 +234,7 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
242
234
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
|
|
243
235
|
// If the parameter inner is not empty, it means it contains initialization information
|
|
244
236
|
if (member.inner.length > 0 && (0, cppUtils_1.hasNodeFlag)(member, ArkCxxAstNode_1.CxxNodeFlag.HasInClassInitializer)) {
|
|
245
|
-
staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.
|
|
237
|
+
staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethodOrNull());
|
|
246
238
|
getInitStmts(staticIRTransformer, arkField, member.inner[member.inner.length - 1]);
|
|
247
239
|
}
|
|
248
240
|
arkField.getInitializer().forEach(stmt => instanceInitStmts.push(stmt));
|
|
@@ -250,7 +242,7 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
250
242
|
}
|
|
251
243
|
case ArkCxxAstNode_1.AstKind.EnumConstantDecl: {
|
|
252
244
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
|
|
253
|
-
staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.
|
|
245
|
+
staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethodOrNull());
|
|
254
246
|
getInitStmts(staticIRTransformer, arkField, member.inner[0], enumFieldInfo);
|
|
255
247
|
arkField.getInitializer().forEach(stmt => staticInitStmts.push(stmt));
|
|
256
248
|
break;
|
|
@@ -280,8 +272,8 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
280
272
|
buildInitMethodsForClassTag(tag, cls, sourceFile, instanceInitStmts, staticInitStmts);
|
|
281
273
|
}
|
|
282
274
|
function processClassDeclInClass(classDeclNode, cls, sourceFile) {
|
|
283
|
-
const newCls = new ArkClass_1.ArkClass();
|
|
284
275
|
const namespace = cls.getDeclaringArkNamespace();
|
|
276
|
+
const newCls = new ArkClass_1.ArkClass(cls.getDeclaringFileID(), namespace === null || namespace === void 0 ? void 0 : namespace.getNamespaceSigID());
|
|
285
277
|
if (namespace) {
|
|
286
278
|
buildNormalArkClassFromArkNamespace(classDeclNode, namespace, newCls, sourceFile, cls);
|
|
287
279
|
}
|
|
@@ -312,7 +304,7 @@ function processUsingDeclInClass(usingDecl, cls) {
|
|
|
312
304
|
function processTypeAliasDeclInClass(typeAliasDecl, cls, sourceFile, instanceInitStmts) {
|
|
313
305
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(typeAliasDecl, sourceFile, cls);
|
|
314
306
|
// it's a type alias declaration
|
|
315
|
-
const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.
|
|
307
|
+
const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethodOrNull());
|
|
316
308
|
const stmts = staticIRTransformer.cxxNodeToStmts(typeAliasDecl);
|
|
317
309
|
if (stmts.length === 0) {
|
|
318
310
|
return;
|
|
@@ -329,25 +321,23 @@ function buildMethodsForClass(clsNode, cls, sourceFile) {
|
|
|
329
321
|
member.kind === ArkCxxAstNode_1.AstKind.CXXConstructorDecl ||
|
|
330
322
|
member.kind === ArkCxxAstNode_1.AstKind.CXXDestructorDecl ||
|
|
331
323
|
member.kind === ArkCxxAstNode_1.AstKind.FriendDecl) {
|
|
332
|
-
let method = new ArkMethod_1.ArkMethod();
|
|
324
|
+
let method = new ArkMethod_1.ArkMethod(cls.getClassSigID());
|
|
333
325
|
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(member, cls, method, sourceFile);
|
|
334
326
|
}
|
|
335
327
|
});
|
|
336
328
|
}
|
|
337
329
|
function buildDefaultArkClassFromArkFile(arkFile, defaultClass, astRoot) {
|
|
338
|
-
defaultClass.setDeclaringArkFile(arkFile);
|
|
339
330
|
defaultClass.setCategory(ArkClass_1.ClassCategory.CLASS);
|
|
340
331
|
buildDefaultArkClass(defaultClass, astRoot);
|
|
341
332
|
}
|
|
342
333
|
exports.buildDefaultArkClassFromArkFile = buildDefaultArkClassFromArkFile;
|
|
343
334
|
function buildDefaultArkClass(cls, sourceFile, node) {
|
|
344
|
-
|
|
345
|
-
const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
|
|
335
|
+
const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
346
336
|
cls.setSignature(defaultArkClassSignature);
|
|
347
337
|
genDefaultArkMethod(cls, sourceFile, node);
|
|
348
338
|
}
|
|
349
339
|
function genDefaultArkMethod(cls, sourceFile, node) {
|
|
350
|
-
let defaultMethod = new ArkMethod_1.ArkMethod();
|
|
340
|
+
let defaultMethod = new ArkMethod_1.ArkMethod(cls.getClassSigID());
|
|
351
341
|
(0, ArkMethodBuilder_1.buildDefaultArkMethodFromArkClass)(cls, defaultMethod, sourceFile, node);
|
|
352
342
|
cls.setDefaultArkMethod(defaultMethod);
|
|
353
343
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkFieldBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFieldBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAQ3D,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"ArkFieldBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFieldBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAQ3D,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAqB1G"}
|
|
@@ -25,9 +25,8 @@ const IRUtils_1 = require("../../common/IRUtils");
|
|
|
25
25
|
const builderUtils_2 = require("../../../../core/model/builder/builderUtils");
|
|
26
26
|
const ArkCxxAstNode_1 = require("../../utils/ArkCxxAstNode");
|
|
27
27
|
function buildProperty2ArkField(member, sourceFile, cls) {
|
|
28
|
-
let field = new ArkField_1.ArkField();
|
|
28
|
+
let field = new ArkField_1.ArkField(cls.getClassSigID());
|
|
29
29
|
field.setCategory(mapSyntaxKindToFieldOriginType(member.kind));
|
|
30
|
-
field.setDeclaringArkClass(cls);
|
|
31
30
|
field.setOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(member, sourceFile));
|
|
32
31
|
let fieldName = member.name;
|
|
33
32
|
field.addModifier((0, builderUtils_1.buildModifiers)(member));
|
|
@@ -39,7 +38,7 @@ function buildProperty2ArkField(member, sourceFile, cls) {
|
|
|
39
38
|
field.addModifier(ArkBaseModel_1.ModifierType.STATIC);
|
|
40
39
|
fieldType = new Type_1.ClassType(cls.getSignature());
|
|
41
40
|
}
|
|
42
|
-
field.setSignature(new ArkSignature_1.FieldSignature(fieldName, cls.
|
|
41
|
+
field.setSignature(new ArkSignature_1.FieldSignature(fieldName, cls.getClassSigID(), fieldType, field.isStatic()));
|
|
43
42
|
IRUtils_1.IRUtils.setComments(field, member, sourceFile, cls.getDeclaringArkFile().getScene().getOptions());
|
|
44
43
|
cls.addField(field);
|
|
45
44
|
return field;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ArkFile } from '../../../../core/model/ArkFile';
|
|
2
|
-
import { ArkClass } from '../../../../core/model/ArkClass';
|
|
3
2
|
import type { CxxAstNode } from '../../utils/ArkCxxAstNode';
|
|
4
3
|
import { Scene } from '../../../../Scene';
|
|
5
4
|
import { FrontendParseFailure } from '../../../FrontendBuilder';
|
|
@@ -20,6 +19,7 @@ export declare function prepareArkFile(scene: Scene, absoluteFilePath: string, t
|
|
|
20
19
|
* @param arkFile - Pre-allocated ArkFile to populate (must have scene and file path set).
|
|
21
20
|
*/
|
|
22
21
|
export declare function buildImportExportInfoFromFile(arkFile: ArkFile): void;
|
|
23
|
-
export declare const classMap: Map<string,
|
|
22
|
+
export declare const classMap: Map<string, number>;
|
|
23
|
+
export declare function disposeClassMap(): void;
|
|
24
24
|
export declare function buildArkClassFromCxxClass(classNode: CxxAstNode, arkFile: ArkFile, astRoot: CxxAstNode): void;
|
|
25
25
|
//# sourceMappingURL=ArkFileBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkFileBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFileBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAY,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkFileBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFileBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAY,MAAM,gCAAgC,CAAC;AAenE,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AAK5E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwFhE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,MAAM,EAAE,EAC7B,oBAAoB,GAAE,MAAU,EAChC,oBAAoB,GAAE,MAAU,EAChC,UAAU,GAAE,OAAe,GAC5B,oBAAoB,CAmCtB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CA0BhI;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BpE;AAED,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAA6B,CAAC;AAEvE,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAU5G"}
|
|
@@ -40,7 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
40
40
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
41
|
};
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.buildArkClassFromCxxClass = exports.classMap = exports.buildImportExportInfoFromFile = exports.prepareArkFile = exports.prepareArkFiles = void 0;
|
|
43
|
+
exports.buildArkClassFromCxxClass = exports.disposeClassMap = exports.classMap = exports.buildImportExportInfoFromFile = exports.prepareArkFile = exports.prepareArkFiles = void 0;
|
|
44
44
|
const fs_1 = __importDefault(require("fs"));
|
|
45
45
|
const path_1 = __importDefault(require("path"));
|
|
46
46
|
const ArkFile_1 = require("../../../../core/model/ArkFile");
|
|
@@ -170,6 +170,7 @@ function prepareArkFiles(scene, absoluteSourceFiles, maxParallelProcesses = 1, m
|
|
|
170
170
|
onSourceAst: (sourceFile, astRoot) => {
|
|
171
171
|
const target = new ArkFile_1.ArkFile(ArkFile_1.Language.CXX);
|
|
172
172
|
target.setScene(scene);
|
|
173
|
+
scene.setFile(target);
|
|
173
174
|
try {
|
|
174
175
|
applyArkFile(target, sourceFile, astRoot);
|
|
175
176
|
arkFiles.push(target);
|
|
@@ -254,15 +255,19 @@ function buildImportExportInfoFromFile(arkFile) {
|
|
|
254
255
|
}
|
|
255
256
|
exports.buildImportExportInfoFromFile = buildImportExportInfoFromFile;
|
|
256
257
|
exports.classMap = new Map();
|
|
258
|
+
function disposeClassMap() {
|
|
259
|
+
exports.classMap.clear();
|
|
260
|
+
}
|
|
261
|
+
exports.disposeClassMap = disposeClassMap;
|
|
257
262
|
function buildArkClassFromCxxClass(classNode, arkFile, astRoot) {
|
|
258
|
-
let cls = new ArkClass_1.ArkClass();
|
|
263
|
+
let cls = new ArkClass_1.ArkClass(arkFile.getFileSigID());
|
|
259
264
|
if (classNode.kind === ArkCxxAstNode_1.AstKind.ClassTemplateDecl) {
|
|
260
265
|
classNode.tagUsed = classNode.tagUsed ? classNode.tagUsed : ArkCxxAstNode_1.CxxTagUsed.Class;
|
|
261
266
|
}
|
|
262
267
|
(0, ArkClassBuilder_1.buildNormalArkClassFromArkFile)(classNode, arkFile, cls, astRoot);
|
|
263
268
|
addExportInfoOnCondition(classNode, cls, arkFile, astRoot);
|
|
264
269
|
if (classNode.id) {
|
|
265
|
-
exports.classMap.set(classNode.id, cls);
|
|
270
|
+
exports.classMap.set(classNode.id, cls.getClassSigID());
|
|
266
271
|
}
|
|
267
272
|
}
|
|
268
273
|
exports.buildArkClassFromCxxClass = buildArkClassFromCxxClass;
|
|
@@ -310,20 +315,14 @@ function addExportInfoOnCondition(currNode, arkInstance, arkFile, astRoot) {
|
|
|
310
315
|
}
|
|
311
316
|
}
|
|
312
317
|
function buildArkMethodFromCxxMethod(mtdNode, arkFile, astRoot, arkClass) {
|
|
313
|
-
|
|
314
|
-
|
|
318
|
+
const declaringClass = arkClass !== null && arkClass !== void 0 ? arkClass : arkFile.getDefaultClass();
|
|
319
|
+
let mtd = new ArkMethod_1.ArkMethod(declaringClass.getClassSigID());
|
|
320
|
+
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(mtdNode, declaringClass, mtd, astRoot);
|
|
315
321
|
addExportInfoOnCondition(mtdNode, mtd, arkFile, astRoot);
|
|
316
322
|
}
|
|
317
|
-
/**
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
* @param arkFile
|
|
321
|
-
* @param astRoot
|
|
322
|
-
* @returns
|
|
323
|
-
*/
|
|
324
|
-
function buildArkFile(arkFile, astRoot) {
|
|
325
|
-
var _a, _b;
|
|
326
|
-
// handle header units
|
|
323
|
+
/** 头部单元的 include 指令 → ImportInfo。 */
|
|
324
|
+
function buildImportInfosFromHeaderUnits(arkFile, astRoot) {
|
|
325
|
+
var _a;
|
|
327
326
|
(_a = astRoot.headerUnits) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
|
|
328
327
|
var _a;
|
|
329
328
|
if (!child.includes) {
|
|
@@ -337,8 +336,19 @@ function buildArkFile(arkFile, astRoot) {
|
|
|
337
336
|
buildImportInfoFromInclude(includeInfo, child, astRoot, arkFile);
|
|
338
337
|
}
|
|
339
338
|
});
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Building ArkFile instance
|
|
342
|
+
*
|
|
343
|
+
* @param arkFile
|
|
344
|
+
* @param astRoot
|
|
345
|
+
* @returns
|
|
346
|
+
*/
|
|
347
|
+
function buildArkFile(arkFile, astRoot) {
|
|
348
|
+
var _a;
|
|
349
|
+
buildImportInfosFromHeaderUnits(arkFile, astRoot);
|
|
340
350
|
// handle non-header unit
|
|
341
|
-
const statements = (
|
|
351
|
+
const statements = (_a = astRoot.inner) !== null && _a !== void 0 ? _a : [];
|
|
342
352
|
statements.forEach((child) => {
|
|
343
353
|
let childKind = child.kind;
|
|
344
354
|
switch (childKind) {
|
|
@@ -355,10 +365,8 @@ function buildArkFile(arkFile, astRoot) {
|
|
|
355
365
|
buildArkMethodFromCxxMethod(child, arkFile, astRoot);
|
|
356
366
|
break;
|
|
357
367
|
case ArkCxxAstNode_1.AstKind.NamespaceDecl:
|
|
358
|
-
let ns = new ArkNamespace_1.ArkNamespace();
|
|
359
|
-
ns.setDeclaringArkFile(arkFile);
|
|
368
|
+
let ns = new ArkNamespace_1.ArkNamespace(arkFile.getFileSigID());
|
|
360
369
|
(0, ArkNamespaceBuilder_1.buildArkNamespace)(child, arkFile, ns, astRoot);
|
|
361
|
-
arkFile.addNamespace(ns);
|
|
362
370
|
addExportInfoOnCondition(child, ns, arkFile, astRoot);
|
|
363
371
|
break;
|
|
364
372
|
case ArkCxxAstNode_1.AstKind.CXXMethodDecl:
|
|
@@ -395,10 +403,9 @@ function getDeclaringArkClassOfMethod(mtd, arkFile) {
|
|
|
395
403
|
const className = (_a = mtd.mangledName) !== null && _a !== void 0 ? _a : '';
|
|
396
404
|
let arkClass = arkFile.getClasses().find(arkClass => arkClass.getName() === className);
|
|
397
405
|
if (!arkClass) {
|
|
398
|
-
arkClass = new ArkClass_1.ArkClass();
|
|
399
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, arkFile.
|
|
406
|
+
arkClass = new ArkClass_1.ArkClass(arkFile.getFileSigID());
|
|
407
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, arkFile.getFileSigID());
|
|
400
408
|
arkClass.setSignature(classSignature);
|
|
401
|
-
arkClass.setDeclaringArkFile(arkFile);
|
|
402
409
|
arkFile.addArkClass(arkClass);
|
|
403
410
|
(0, ArkClassBuilder_3.init4InstanceInitMethod)(arkClass);
|
|
404
411
|
(0, ArkClassBuilder_3.init4StaticInitMethod)(arkClass);
|
|
@@ -406,8 +413,8 @@ function getDeclaringArkClassOfMethod(mtd, arkFile) {
|
|
|
406
413
|
return arkClass;
|
|
407
414
|
}
|
|
408
415
|
function genDefaultArkClass(arkFile, astRoot) {
|
|
409
|
-
let defaultClass = new ArkClass_1.ArkClass();
|
|
416
|
+
let defaultClass = new ArkClass_1.ArkClass(arkFile.getFileSigID());
|
|
410
417
|
(0, ArkClassBuilder_2.buildDefaultArkClassFromArkFile)(arkFile, defaultClass, astRoot);
|
|
411
|
-
arkFile.
|
|
418
|
+
arkFile.setDefaultClassID(defaultClass.getClassSigID());
|
|
412
419
|
arkFile.addArkClass(defaultClass);
|
|
413
420
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAO7D,OAAO,EAAkE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElH,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAepD,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AA+BhE,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAU3I;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAyB/G;AAED,wBAAgB,0BAA0B,CACtC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,QAAQ,EACxB,GAAG,EAAE,SAAS,EACd,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,SAAS,GAC5B,IAAI,CA6CN;AAwHD,wBAAgB,wCAAwC,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAWjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAoDnE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAuB5G;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAqCjE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAgBhE"}
|
|
@@ -74,9 +74,7 @@ function getSpecificNodes(methodNode, targetNode) {
|
|
|
74
74
|
return [];
|
|
75
75
|
}
|
|
76
76
|
// Handle Cpp lambda functions
|
|
77
|
-
if (methodNode.type && !(
|
|
78
|
-
!LAMBDA_WRAPPER_METHOD_KINDS.includes(methodNode.kind) &&
|
|
79
|
-
methodNode.inner) {
|
|
77
|
+
if (methodNode.type && !(0, builderUtils_1.isCxxFunctionPointer)(methodNode.type.qualType) && !LAMBDA_WRAPPER_METHOD_KINDS.includes(methodNode.kind) && methodNode.inner) {
|
|
80
78
|
return getSpecificNodes(methodNode.inner[0], targetNode);
|
|
81
79
|
}
|
|
82
80
|
let result = [];
|
|
@@ -88,9 +86,8 @@ function getSpecificNodes(methodNode, targetNode) {
|
|
|
88
86
|
return result.length > 0 ? result : [];
|
|
89
87
|
}
|
|
90
88
|
function buildDefaultArkMethodFromArkClass(declaringClass, mtd, sourceFile, node) {
|
|
91
|
-
mtd.setDeclaringArkClass(declaringClass);
|
|
92
89
|
const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Const_1.DEFAULT_ARK_METHOD_NAME, true);
|
|
93
|
-
const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().
|
|
90
|
+
const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getClassSigID(), methodSubSignature);
|
|
94
91
|
mtd.setImplementationSignature(methodSignature);
|
|
95
92
|
mtd.setImplOriginFullPosition(new Position_1.FullPosition(0, 0, 0, 0));
|
|
96
93
|
const defaultMethodNode = node ? node : sourceFile;
|
|
@@ -126,7 +123,6 @@ function handleFunctionTemplateDecl(methodNode, mtd, sourceFile) {
|
|
|
126
123
|
}
|
|
127
124
|
exports.handleFunctionTemplateDecl = handleFunctionTemplateDecl;
|
|
128
125
|
function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile, declaringMethod) {
|
|
129
|
-
mtd.setDeclaringArkClass(declaringClass);
|
|
130
126
|
if (declaringMethod !== undefined) {
|
|
131
127
|
mtd.setOuterMethod(declaringMethod);
|
|
132
128
|
}
|
|
@@ -157,7 +153,7 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
|
|
|
157
153
|
}
|
|
158
154
|
reCheckModifiers(methodName, declaringClass, mtd, methodParameters);
|
|
159
155
|
const methodSubSignature = new ArkSignature_1.MethodSubSignature(methodName, methodParameters, returnType, mtd.isStatic());
|
|
160
|
-
const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().
|
|
156
|
+
const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getClassSigID(), methodSubSignature);
|
|
161
157
|
if (isMethodImplementation(methodNode)) {
|
|
162
158
|
mtd.setImplementationSignature(methodSignature);
|
|
163
159
|
mtd.setImplOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(methodNode, sourceFile));
|
|
@@ -303,9 +299,6 @@ function buildDefaultConstructor(arkClass) {
|
|
|
303
299
|
return false;
|
|
304
300
|
}
|
|
305
301
|
recursivelyCheckAndBuildSuperConstructor(arkClass);
|
|
306
|
-
const defaultConstructor = new ArkMethod_1.ArkMethod();
|
|
307
|
-
defaultConstructor.setDeclaringArkClass(arkClass);
|
|
308
|
-
defaultConstructor.setIsGeneratedFlag(false);
|
|
309
302
|
const thisLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkClass.getSignature()));
|
|
310
303
|
const locals = new Set([thisLocal]);
|
|
311
304
|
const basicBlock = new BasicBlock_1.BasicBlock();
|
|
@@ -326,12 +319,13 @@ function buildDefaultConstructor(arkClass) {
|
|
|
326
319
|
basicBlock.addStmt(new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(new Type_1.ClassType(arkClass.getSignature()))));
|
|
327
320
|
if (superConstructor) {
|
|
328
321
|
const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, parameters, superConstructor.getReturnType());
|
|
329
|
-
const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.
|
|
322
|
+
const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getClassSigID(), superMethodSubSignature);
|
|
330
323
|
const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, parameterArgs);
|
|
331
324
|
basicBlock.addStmt(new Stmt_1.ArkInvokeStmt(superInvokeExpr));
|
|
332
325
|
}
|
|
333
|
-
const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, parameters, thisLocal.getType()
|
|
334
|
-
defaultConstructor.
|
|
326
|
+
const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, parameters, thisLocal.getType());
|
|
327
|
+
const defaultConstructor = new ArkMethod_1.ArkMethod(arkClass.getClassSigID(), new ArkSignature_1.MethodSignature(arkClass.getClassSigID(), methodSubSignature));
|
|
328
|
+
defaultConstructor.setIsGeneratedFlag(false);
|
|
335
329
|
basicBlock.addStmt(new Stmt_1.ArkReturnStmt(thisLocal));
|
|
336
330
|
const cfg = new Cfg_1.Cfg();
|
|
337
331
|
cfg.addBlock(basicBlock);
|
|
@@ -394,7 +388,7 @@ function addInitInConstructor(constructor) {
|
|
|
394
388
|
}
|
|
395
389
|
let initInvokeStmt;
|
|
396
390
|
try {
|
|
397
|
-
initInvokeStmt = new Stmt_1.ArkInvokeStmt(new Expr_1.ArkInstanceInvokeExpr(thisLocal, constructor.getDeclaringArkClass().
|
|
391
|
+
initInvokeStmt = new Stmt_1.ArkInvokeStmt(new Expr_1.ArkInstanceInvokeExpr(thisLocal, constructor.getDeclaringArkClass().getInstanceInitMethodOrNull().getSignature(), []));
|
|
398
392
|
}
|
|
399
393
|
catch (e) {
|
|
400
394
|
logger.warn('addInitInConstructor: failed to build initInvokeStmt due to exception: ', e);
|
|
@@ -410,7 +404,7 @@ function isMethodImplementation(node) {
|
|
|
410
404
|
var _a;
|
|
411
405
|
switch (node.kind) {
|
|
412
406
|
case ArkCxxAstNode_1.AstKind.LambdaExpr:
|
|
413
|
-
return
|
|
407
|
+
return node.inner && node.inner.length > 0;
|
|
414
408
|
case ArkCxxAstNode_1.AstKind.CXXMethodDecl:
|
|
415
409
|
case ArkCxxAstNode_1.AstKind.CXXConstructorDecl:
|
|
416
410
|
case ArkCxxAstNode_1.AstKind.CXXDestructorDecl:
|
|
@@ -419,7 +413,7 @@ function isMethodImplementation(node) {
|
|
|
419
413
|
case ArkCxxAstNode_1.AstKind.FriendDecl:
|
|
420
414
|
// CXXConstructorDecl-CXXCtorInitializer: using Base::Base
|
|
421
415
|
// ==> The constructor of the subclass has the same implementation as that of the parent class.
|
|
422
|
-
return !!((_a = node.inner) === null || _a === void 0 ? void 0 : _a.find((inn) =>
|
|
416
|
+
return !!((_a = node.inner) === null || _a === void 0 ? void 0 : _a.find((inn) => inn.kind === ArkCxxAstNode_1.AstKind.CompoundStmt || inn.kind === ArkCxxAstNode_1.AstKind.CXXCtorInitializer));
|
|
423
417
|
default:
|
|
424
418
|
return false;
|
|
425
419
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { ArkFile } from '../../../../core/model/ArkFile';
|
|
2
2
|
import { ArkNamespace } from '../../../../core/model/ArkNamespace';
|
|
3
|
-
import { ArkClass } from '../../../../core/model/ArkClass';
|
|
4
3
|
import { CxxAstNode } from '../../utils/ArkCxxAstNode';
|
|
5
|
-
export declare function buildDefaultArkClassFromArkNamespace(arkNamespace: ArkNamespace, defaultClass: ArkClass, nsNode: CxxAstNode, sourceFile: CxxAstNode): void;
|
|
6
4
|
export declare function genDefaultArkClass(ns: ArkNamespace, node: CxxAstNode, sourceFile: CxxAstNode): void;
|
|
7
5
|
export declare function buildArkNamespace(node: CxxAstNode, declaringInstance: ArkFile | ArkNamespace, ns: ArkNamespace, sourceFile: CxxAstNode): void;
|
|
8
6
|
//# sourceMappingURL=ArkNamespaceBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAMnE,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAoBhE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAKnG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAqB7I"}
|
|
@@ -37,9 +37,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
37
37
|
return result;
|
|
38
38
|
};
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.buildArkNamespace = exports.genDefaultArkClass =
|
|
40
|
+
exports.buildArkNamespace = exports.genDefaultArkClass = void 0;
|
|
41
41
|
const ArkClassBuilder_1 = require("./ArkClassBuilder");
|
|
42
|
-
const ArkFile_1 = require("../../../../core/model/ArkFile");
|
|
43
42
|
const ArkMethodBuilder_1 = require("./ArkMethodBuilder");
|
|
44
43
|
const ArkNamespace_1 = require("../../../../core/model/ArkNamespace");
|
|
45
44
|
const builderUtils_1 = require("./builderUtils");
|
|
@@ -53,25 +52,18 @@ const Const_1 = require("../../../../core/common/Const");
|
|
|
53
52
|
const ArkMethodBuilder_2 = require("./ArkMethodBuilder");
|
|
54
53
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkNamespaceBuilder');
|
|
55
54
|
function buildDefaultArkClass(cls, sourceFile, node) {
|
|
56
|
-
|
|
57
|
-
const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
|
|
55
|
+
const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
|
|
58
56
|
cls.setSignature(defaultArkClassSignature);
|
|
59
57
|
genDefaultArkMethod(cls, sourceFile, node);
|
|
60
58
|
}
|
|
61
59
|
function genDefaultArkMethod(cls, sourceFile, node) {
|
|
62
|
-
let defaultMethod = new ArkMethod_1.ArkMethod();
|
|
60
|
+
let defaultMethod = new ArkMethod_1.ArkMethod(cls.getClassSigID());
|
|
63
61
|
(0, ArkMethodBuilder_2.buildDefaultArkMethodFromArkClass)(cls, defaultMethod, sourceFile, node);
|
|
64
62
|
cls.setDefaultArkMethod(defaultMethod);
|
|
65
63
|
}
|
|
66
|
-
function buildDefaultArkClassFromArkNamespace(arkNamespace, defaultClass, nsNode, sourceFile) {
|
|
67
|
-
defaultClass.setDeclaringArkNamespace(arkNamespace);
|
|
68
|
-
defaultClass.setDeclaringArkFile(arkNamespace.getDeclaringArkFile());
|
|
69
|
-
buildDefaultArkClass(defaultClass, sourceFile, nsNode);
|
|
70
|
-
}
|
|
71
|
-
exports.buildDefaultArkClassFromArkNamespace = buildDefaultArkClassFromArkNamespace;
|
|
72
64
|
function genDefaultArkClass(ns, node, sourceFile) {
|
|
73
|
-
let defaultClass = new ArkClass_1.ArkClass();
|
|
74
|
-
|
|
65
|
+
let defaultClass = new ArkClass_1.ArkClass(ns.getDeclaringFileID(), ns.getNamespaceSigID());
|
|
66
|
+
buildDefaultArkClass(defaultClass, sourceFile, node);
|
|
75
67
|
ns.setDefaultClass(defaultClass);
|
|
76
68
|
ns.addArkClass(defaultClass);
|
|
77
69
|
}
|
|
@@ -81,16 +73,8 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
|
|
|
81
73
|
// modifierFlags from wire + AstParser access merge
|
|
82
74
|
ns.setModifiers((0, builderUtils_1.buildModifiers)(node));
|
|
83
75
|
ns.setDecorators((0, builderUtils_1.buildDecorators)(node, sourceFile));
|
|
84
|
-
if (declaringInstance instanceof ArkFile_1.ArkFile) {
|
|
85
|
-
ns.setDeclaringArkFile(declaringInstance);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
ns.setDeclaringArkNamespace(declaringInstance);
|
|
89
|
-
ns.setDeclaringArkFile(declaringInstance.getDeclaringArkFile());
|
|
90
|
-
}
|
|
91
|
-
ns.setDeclaringInstance(declaringInstance);
|
|
92
76
|
const namespaceName = genNamespaceName(node.name ? node.name : '', declaringInstance);
|
|
93
|
-
const namespaceSignature = new ArkSignature_1.NamespaceSignature(namespaceName, ns.
|
|
77
|
+
const namespaceSignature = new ArkSignature_1.NamespaceSignature(namespaceName, ns.getDeclaringFileID(), (_a = ns.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getNamespaceSigID());
|
|
94
78
|
ns.setSignature(namespaceSignature);
|
|
95
79
|
// set line and column
|
|
96
80
|
ns.setOriginFullPositions([Position_1.FullPosition.cxxBuildFromNode(node, sourceFile)]);
|
|
@@ -102,6 +86,7 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
|
|
|
102
86
|
else {
|
|
103
87
|
logger.warn('JSDocNamespaceDeclaration found.');
|
|
104
88
|
}
|
|
89
|
+
declaringInstance.addNamespace(ns);
|
|
105
90
|
}
|
|
106
91
|
exports.buildArkNamespace = buildArkNamespace;
|
|
107
92
|
function genNamespaceName(name, declaringInstance) {
|
|
@@ -132,16 +117,13 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
|
|
|
132
117
|
statements.forEach((child) => {
|
|
133
118
|
switch (child.kind) {
|
|
134
119
|
case ArkCxxAstNode_1.AstKind.NamespaceDecl: {
|
|
135
|
-
let childNs = new ArkNamespace_1.ArkNamespace();
|
|
136
|
-
childNs.setDeclaringArkNamespace(namespace);
|
|
137
|
-
childNs.setDeclaringArkFile(namespace.getDeclaringArkFile());
|
|
120
|
+
let childNs = new ArkNamespace_1.ArkNamespace(namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
|
|
138
121
|
buildArkNamespace(child, namespace, childNs, sourceFile);
|
|
139
|
-
namespace.addNamespace(childNs);
|
|
140
122
|
return;
|
|
141
123
|
}
|
|
142
124
|
case ArkCxxAstNode_1.AstKind.CXXRecordDecl:
|
|
143
125
|
case ArkCxxAstNode_1.AstKind.ClassTemplateDecl: {
|
|
144
|
-
let cls = new ArkClass_1.ArkClass();
|
|
126
|
+
let cls = new ArkClass_1.ArkClass(namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
|
|
145
127
|
(0, ArkClassBuilder_1.buildNormalArkClassFromArkNamespace)(child, namespace, cls, sourceFile);
|
|
146
128
|
return;
|
|
147
129
|
}
|
|
@@ -154,8 +136,9 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
|
|
|
154
136
|
case ArkCxxAstNode_1.AstKind.FunctionTemplateDecl:
|
|
155
137
|
case ArkCxxAstNode_1.AstKind.FunctionDecl:
|
|
156
138
|
case ArkCxxAstNode_1.AstKind.FriendDecl: {
|
|
157
|
-
|
|
158
|
-
|
|
139
|
+
const defaultClass = namespace.getDefaultClass();
|
|
140
|
+
let mthd = new ArkMethod_1.ArkMethod(defaultClass.getClassSigID());
|
|
141
|
+
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, defaultClass, mthd, sourceFile);
|
|
159
142
|
return;
|
|
160
143
|
}
|
|
161
144
|
case ArkCxxAstNode_1.AstKind.UsingDecl:
|
|
@@ -169,21 +152,20 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
|
|
|
169
152
|
});
|
|
170
153
|
}
|
|
171
154
|
function buildArkMethodForClassMethodInNamespace(methodNode, namespace, sourceFile) {
|
|
172
|
-
var _a;
|
|
173
155
|
let className = methodNode.mangledName;
|
|
174
156
|
if (!className) {
|
|
175
157
|
logger.trace('Declaration class not found', methodNode);
|
|
176
158
|
return;
|
|
177
159
|
}
|
|
178
|
-
|
|
160
|
+
// 签名 get-or-create:拼归属签名直查(对齐 ArkFileBuilder file 级精确匹配先例),
|
|
161
|
+
// 消除原按名搜索查 'Foo' 误命中 'Foo$Bar' 的前缀错配
|
|
162
|
+
const classSignature = new ArkSignature_1.ClassSignature(className, namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
|
|
163
|
+
let arkClass = namespace.getClass(classSignature);
|
|
179
164
|
if (!arkClass) {
|
|
180
|
-
arkClass = new ArkClass_1.ArkClass();
|
|
181
|
-
arkClass.setDeclaringArkNamespace(namespace);
|
|
182
|
-
arkClass.setDeclaringArkFile(namespace.getDeclaringArkFile());
|
|
183
|
-
const classSignature = new ArkSignature_1.ClassSignature(className, arkClass.getDeclaringArkFile().getFileSignature(), ((_a = arkClass.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
|
|
165
|
+
arkClass = new ArkClass_1.ArkClass(namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
|
|
184
166
|
arkClass.setSignature(classSignature);
|
|
185
|
-
namespace.addArkClass(arkClass
|
|
167
|
+
namespace.addArkClass(arkClass);
|
|
186
168
|
}
|
|
187
|
-
let mtd = new ArkMethod_1.ArkMethod();
|
|
169
|
+
let mtd = new ArkMethod_1.ArkMethod(arkClass.getClassSigID());
|
|
188
170
|
(0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(methodNode, arkClass, mtd, sourceFile);
|
|
189
171
|
}
|
|
@@ -46,6 +46,7 @@ export declare class CxxBodyBuilder {
|
|
|
46
46
|
private inferTypesDefineInOuter;
|
|
47
47
|
private updateNestedMethodUsedInOuter;
|
|
48
48
|
private updateNestedMethodWithClosures;
|
|
49
|
+
private syncChildrenOuterMethodSigID;
|
|
49
50
|
private updateOuterMethodWithClosures;
|
|
50
51
|
private getOriginalNestedMethodName;
|
|
51
52
|
private updateGlobalInfoWithClosures;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAkB,eAAe,EAA8C,MAAM,qCAAqC,CAAC;AAClI,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAsC,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI1F,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAkB,eAAe,EAA8C,MAAM,qCAAqC,CAAC;AAClI,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAsC,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI1F,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAahE,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAyB;gBAE7B,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;IAIpH,KAAK,IAAI,OAAO,GAAG,IAAI;IAcvB,aAAa,IAAI,UAAU;IAI3B,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS;IAIhD,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIxD;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;;;OAKG;IACI,sBAAsB,IAAI,IAAI;IAwDrC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,sCAAsC;IA4B9C,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,8BAA8B;IAmBtC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,6BAA6B;IAyCrC,OAAO,CAAC,8BAA8B;IAkCtC,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,2BAA2B;IAyBnC,OAAO,CAAC,oCAAoC;IA+B5C,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qCAAqC;IA8B7C,OAAO,CAAC,2BAA2B;IAuDnC,OAAO,CAAC,kCAAkC;CAkB7C"}
|