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
package/lib/core/base/Ref.js
CHANGED
|
@@ -39,7 +39,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.ClosureFieldRef = exports.GlobalRef = exports.ArkCaughtExceptionRef = exports.ArkThisRef = exports.ArkParameterRef = exports.ArkStaticFieldRef = exports.ArkInstanceFieldRef = exports.AbstractFieldRef = exports.ArkArrayRef = exports.AbstractRef = void 0;
|
|
41
41
|
const logger_1 = __importStar(require("../../utils/logger"));
|
|
42
|
+
const ArkSignature_1 = require("../model/ArkSignature");
|
|
43
|
+
const SignatureCanonicalizerRegistry_1 = require("../common/SignatureCanonicalizerRegistry");
|
|
42
44
|
const Type_1 = require("./Type");
|
|
45
|
+
const Value_1 = require("./Value");
|
|
43
46
|
const TypeInference_1 = require("../common/TypeInference");
|
|
44
47
|
const Stmt_1 = require("./Stmt");
|
|
45
48
|
const IRInference_1 = require("../common/IRInference");
|
|
@@ -47,6 +50,7 @@ const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER,
|
|
|
47
50
|
/**
|
|
48
51
|
* @category core/base/ref
|
|
49
52
|
*/
|
|
53
|
+
const IS_GENERIC_OR_ANY = (t) => t instanceof Type_1.GenericType || t instanceof Type_1.AnyType;
|
|
50
54
|
class AbstractRef {
|
|
51
55
|
inferType(arkMethod) {
|
|
52
56
|
return this;
|
|
@@ -117,13 +121,12 @@ class ArkArrayRef extends AbstractRef {
|
|
|
117
121
|
return Type_1.UnknownType.getInstance();
|
|
118
122
|
}
|
|
119
123
|
}
|
|
120
|
-
getUses() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
return uses;
|
|
124
|
+
getUses(acc = []) {
|
|
125
|
+
acc.push(this.base);
|
|
126
|
+
this.base.getUses(acc);
|
|
127
|
+
acc.push(this.index);
|
|
128
|
+
this.index.getUses(acc);
|
|
129
|
+
return acc;
|
|
127
130
|
}
|
|
128
131
|
toString() {
|
|
129
132
|
return this.base + '[' + this.index + ']';
|
|
@@ -133,41 +136,201 @@ exports.ArkArrayRef = ArkArrayRef;
|
|
|
133
136
|
class AbstractFieldRef extends AbstractRef {
|
|
134
137
|
constructor(fieldSignature) {
|
|
135
138
|
super();
|
|
136
|
-
this.fieldSignature
|
|
139
|
+
this.route(fieldSignature);
|
|
140
|
+
}
|
|
141
|
+
/** 首路径路由(构造器专用):formal 只读命中 → 持 formal ID(栅栏精化);miss → temp 登记。*/
|
|
142
|
+
route(fieldSignature) {
|
|
143
|
+
const reg = SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance();
|
|
144
|
+
if (fieldSignature.isUnclear()) {
|
|
145
|
+
this.fieldSigID = -1;
|
|
146
|
+
this.tempFieldSigID = reg.tempFieldSigCanonicalizer.register(fieldSignature);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const existingId = reg.fieldSigCanonicalizer.getExistingId(fieldSignature);
|
|
150
|
+
if (existingId !== -1) {
|
|
151
|
+
const canonical = reg.fieldSigCanonicalizer.get(existingId);
|
|
152
|
+
// formal 路由 + 单向精度栅栏。
|
|
153
|
+
const canonicalType = canonical.getType();
|
|
154
|
+
const incomingType = fieldSignature.getType();
|
|
155
|
+
if (TypeInference_1.TypeInference.isUnclearType(canonicalType) && !TypeInference_1.TypeInference.isUnclearType(incomingType)) {
|
|
156
|
+
canonical.setType(incomingType);
|
|
157
|
+
}
|
|
158
|
+
this.fieldSigID = existingId;
|
|
159
|
+
this.tempFieldSigID = undefined;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
logger.error(`AbstractFieldRef: clear FieldSignature not interned (route) — routing to temp defensively: ${fieldSignature.toString()}`);
|
|
163
|
+
this.fieldSigID = -1;
|
|
164
|
+
this.tempFieldSigID = reg.tempFieldSigCanonicalizer.register(fieldSignature);
|
|
165
|
+
}
|
|
137
166
|
}
|
|
138
167
|
/**
|
|
139
168
|
* Returns the the field name as a **string**.
|
|
140
169
|
* @returns The the field name.
|
|
141
170
|
*/
|
|
142
171
|
getFieldName() {
|
|
143
|
-
return this.
|
|
172
|
+
return this.getFieldSignature().getFieldName();
|
|
173
|
+
}
|
|
174
|
+
/** Returns the field signature. */
|
|
175
|
+
getFieldSignature() {
|
|
176
|
+
const reg = SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance();
|
|
177
|
+
if (this.fieldSigID >= 0) {
|
|
178
|
+
const sig = reg.fieldSigCanonicalizer.get(this.fieldSigID);
|
|
179
|
+
if (sig !== undefined) {
|
|
180
|
+
return sig;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (this.tempFieldSigID !== undefined) {
|
|
184
|
+
const sig = reg.tempFieldSigCanonicalizer.get(this.tempFieldSigID);
|
|
185
|
+
if (sig !== undefined) {
|
|
186
|
+
return sig;
|
|
187
|
+
}
|
|
188
|
+
const formalId = reg.tempFieldSigCanonicalizer.getReplacement(this.tempFieldSigID);
|
|
189
|
+
if (formalId !== -1) {
|
|
190
|
+
const formalSig = reg.fieldSigCanonicalizer.get(formalId);
|
|
191
|
+
if (formalSig !== undefined) {
|
|
192
|
+
this.fieldSigID = formalId;
|
|
193
|
+
return formalSig;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
throw new Error('AbstractFieldRef has no signature');
|
|
198
|
+
}
|
|
199
|
+
/** @internal */
|
|
200
|
+
updateFieldSignature(fieldName, declaringOrID, type, staticFlag, namespaceDeclared = false) {
|
|
201
|
+
const reg = SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance();
|
|
202
|
+
// a. 未毕业分支。
|
|
203
|
+
if (this.fieldSigID === -1 && this.tempFieldSigID !== undefined) {
|
|
204
|
+
const tempId = this.tempFieldSigID;
|
|
205
|
+
const tempFieldSig = reg.tempFieldSigCanonicalizer.get(tempId);
|
|
206
|
+
if (tempFieldSig === undefined) {
|
|
207
|
+
const formalId = reg.tempFieldSigCanonicalizer.getReplacement(tempId);
|
|
208
|
+
if (formalId !== -1) {
|
|
209
|
+
this.fieldSigID = formalId;
|
|
210
|
+
this.tempFieldSigID = undefined;
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// stale 兜底:构造真实例走首路径(登记一次)。低频路径(Registry 重建等)。
|
|
214
|
+
this.route(AbstractFieldRef.buildFallbackSignature(fieldName, declaringOrID, type, staticFlag, namespaceDeclared));
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const oldDeclTempId = tempFieldSig.getDeclaringClassTempSigID();
|
|
218
|
+
tempFieldSig.applyFields(fieldName, declaringOrID, type, staticFlag, namespaceDeclared);
|
|
219
|
+
const existingId = reg.fieldSigCanonicalizer.getExistingId(tempFieldSig);
|
|
220
|
+
if (existingId === -1) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const canonical = reg.fieldSigCanonicalizer.get(existingId);
|
|
224
|
+
if (canonical.getType().isUnclear() && !type.isUnclear()) {
|
|
225
|
+
canonical.setType(type);
|
|
226
|
+
}
|
|
227
|
+
this.fieldSigID = existingId;
|
|
228
|
+
this.tempFieldSigID = undefined;
|
|
229
|
+
reg.tempFieldSigCanonicalizer.retireWithReplacement(tempId, existingId);
|
|
230
|
+
// declaring 联动:新值 declaring 为 formal class 时同步收敛 temp class 行。
|
|
231
|
+
const declSig = tempFieldSig.getDeclaringSignature();
|
|
232
|
+
if (oldDeclTempId !== undefined && declSig instanceof ArkSignature_1.ClassSignature && !declSig.isUnclear()) {
|
|
233
|
+
const declFormalId = tempFieldSig.getDeclaringClassSigID();
|
|
234
|
+
if (declFormalId !== undefined && declFormalId > 0) {
|
|
235
|
+
reg.tempClassSigCanonicalizer.retireWithReplacement(oldDeclTempId, declFormalId);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// b. 已毕业分支:只查不降级(低频路径——多轮推导的精化;probe 为值查载体,短命实例可接受)。
|
|
241
|
+
if (this.fieldSigID >= 0) {
|
|
242
|
+
const probe = AbstractFieldRef.buildFallbackSignature(fieldName, declaringOrID, type, staticFlag, namespaceDeclared);
|
|
243
|
+
const existingId = reg.fieldSigCanonicalizer.getExistingId(probe);
|
|
244
|
+
if (existingId !== -1) {
|
|
245
|
+
const canonical = reg.fieldSigCanonicalizer.get(existingId);
|
|
246
|
+
if (canonical.getType().isUnclear() && !type.isUnclear()) {
|
|
247
|
+
canonical.setType(type);
|
|
248
|
+
}
|
|
249
|
+
this.fieldSigID = existingId;
|
|
250
|
+
}
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
// 防御兜底(理论不可达)。
|
|
254
|
+
this.route(AbstractFieldRef.buildFallbackSignature(fieldName, declaringOrID, type, staticFlag, namespaceDeclared));
|
|
255
|
+
}
|
|
256
|
+
/** @internal 兜底/probe 构造(联合类型按重载收窄分发;低频路径)。 */
|
|
257
|
+
static buildFallbackSignature(fieldName, declaringOrID, type, staticFlag, namespaceDeclared) {
|
|
258
|
+
if (typeof declaringOrID === 'number') {
|
|
259
|
+
return namespaceDeclared
|
|
260
|
+
? new ArkSignature_1.FieldSignature(fieldName, declaringOrID, type, staticFlag, true)
|
|
261
|
+
: new ArkSignature_1.FieldSignature(fieldName, declaringOrID, type, staticFlag);
|
|
262
|
+
}
|
|
263
|
+
return new ArkSignature_1.FieldSignature(fieldName, declaringOrID, type, staticFlag);
|
|
264
|
+
}
|
|
265
|
+
/** @internal 毕业到正式签名 */
|
|
266
|
+
graduateToFormal(formalId) {
|
|
267
|
+
if (formalId <= 0) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const reg = SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance();
|
|
271
|
+
const canonical = reg.fieldSigCanonicalizer.get(formalId);
|
|
272
|
+
if (canonical === undefined) {
|
|
273
|
+
return; // stale ID(Registry 重建等)——防御性不动作
|
|
274
|
+
}
|
|
275
|
+
if (this.fieldSigID === -1 && this.tempFieldSigID !== undefined) {
|
|
276
|
+
const tempId = this.tempFieldSigID;
|
|
277
|
+
const S = reg.tempFieldSigCanonicalizer.get(tempId);
|
|
278
|
+
if (S !== undefined) {
|
|
279
|
+
// declaring 联动(毕业的组成部分):旧 declaring temp 行同步收敛,
|
|
280
|
+
// 共享该 declaring stub 的持有者经替换记录自动跟随。
|
|
281
|
+
const oldDeclTempId = S.getDeclaringClassTempSigID();
|
|
282
|
+
const declFormalId = canonical.getDeclaringClassSigID();
|
|
283
|
+
if (oldDeclTempId !== undefined && declFormalId !== undefined && declFormalId > 0) {
|
|
284
|
+
reg.tempClassSigCanonicalizer.retireWithReplacement(oldDeclTempId, declFormalId);
|
|
285
|
+
}
|
|
286
|
+
reg.tempFieldSigCanonicalizer.retireWithReplacement(tempId, formalId);
|
|
287
|
+
}
|
|
288
|
+
// 行已划(共享链已被首毕业者收敛):仅换编号(替换记录已登记)。
|
|
289
|
+
this.fieldSigID = formalId;
|
|
290
|
+
this.tempFieldSigID = undefined;
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
// 已毕业:直接换编号(重复回写 = 无操作;stale 已在开头拦截)。
|
|
294
|
+
this.fieldSigID = formalId;
|
|
295
|
+
}
|
|
296
|
+
/** @internal */
|
|
297
|
+
retireTemp() {
|
|
298
|
+
if (this.fieldSigID === -1 && this.tempFieldSigID !== undefined) {
|
|
299
|
+
SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance().tempFieldSigCanonicalizer.retire(this.tempFieldSigID);
|
|
300
|
+
}
|
|
144
301
|
}
|
|
145
302
|
/**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* @example
|
|
150
|
-
* 1. Compare two Fields
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const fieldSignature = new FieldSignature();
|
|
154
|
-
fieldSignature.setFieldName(...);
|
|
155
|
-
const fieldRef = new ArkInstanceFieldRef(baseValue as Local, fieldSignature);
|
|
156
|
-
...
|
|
157
|
-
if (fieldRef.getFieldSignature().getFieldName() ===
|
|
158
|
-
targetField.getFieldSignature().getFieldName()) {
|
|
159
|
-
...
|
|
160
|
-
}
|
|
161
|
-
```
|
|
303
|
+
* @internal 替换埋葬(带归宿版):同 {@link retireTemp},但替换产物为
|
|
304
|
+
* formal canonical(static 转换等 formalId 已知场景)——retire 同时记录
|
|
305
|
+
* 替换(temp → formal),供诊断追溯。
|
|
162
306
|
*/
|
|
163
|
-
|
|
164
|
-
|
|
307
|
+
retireTempTo(formalId) {
|
|
308
|
+
if (this.fieldSigID === -1 && this.tempFieldSigID !== undefined && formalId > 0) {
|
|
309
|
+
SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance().tempFieldSigCanonicalizer.retireWithReplacement(this.tempFieldSigID, formalId);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/** @internal Get the formal FieldSigID(身份视图;泛型双视图下为定义点字段 ID)。-1 = 纯 temp-held。 */
|
|
313
|
+
getFieldSigID() {
|
|
314
|
+
return this.fieldSigID;
|
|
315
|
+
}
|
|
316
|
+
/** @internal Get the temp FieldSigID for the unresolved-signature registration(值视图在 temp 时非空)。 */
|
|
317
|
+
getTempSigID() {
|
|
318
|
+
return this.tempFieldSigID;
|
|
165
319
|
}
|
|
166
|
-
|
|
167
|
-
|
|
320
|
+
/** @internal Get the generic instantiation real types of the field (Expr.realGenericTypes 同构)。 */
|
|
321
|
+
getRealFieldTypes() {
|
|
322
|
+
return this.realFieldTypes;
|
|
323
|
+
}
|
|
324
|
+
/** @internal Set the generic instantiation real types. */
|
|
325
|
+
setRealFieldTypes(realTypes) {
|
|
326
|
+
this.realFieldTypes = realTypes;
|
|
168
327
|
}
|
|
169
328
|
getType() {
|
|
170
|
-
|
|
329
|
+
const type = this.getFieldSignature().getType();
|
|
330
|
+
if (TypeInference_1.TypeInference.checkType(type, IS_GENERIC_OR_ANY) && this.realFieldTypes) {
|
|
331
|
+
return TypeInference_1.TypeInference.replaceTypeWithReal(type, this.realFieldTypes);
|
|
332
|
+
}
|
|
333
|
+
return type;
|
|
171
334
|
}
|
|
172
335
|
}
|
|
173
336
|
exports.AbstractFieldRef = AbstractFieldRef;
|
|
@@ -208,11 +371,10 @@ class ArkInstanceFieldRef extends AbstractFieldRef {
|
|
|
208
371
|
setBase(newBase) {
|
|
209
372
|
this.base = newBase;
|
|
210
373
|
}
|
|
211
|
-
getUses() {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
return uses;
|
|
374
|
+
getUses(acc = []) {
|
|
375
|
+
acc.push(this.base);
|
|
376
|
+
this.base.getUses(acc);
|
|
377
|
+
return acc;
|
|
216
378
|
}
|
|
217
379
|
toString() {
|
|
218
380
|
return this.base.toString() + '.<' + this.getFieldSignature() + '>';
|
|
@@ -226,8 +388,8 @@ class ArkStaticFieldRef extends AbstractFieldRef {
|
|
|
226
388
|
constructor(fieldSignature) {
|
|
227
389
|
super(fieldSignature);
|
|
228
390
|
}
|
|
229
|
-
getUses() {
|
|
230
|
-
return
|
|
391
|
+
getUses(acc) {
|
|
392
|
+
return acc !== null && acc !== void 0 ? acc : Value_1.EMPTY_USES;
|
|
231
393
|
}
|
|
232
394
|
toString() {
|
|
233
395
|
return this.getFieldSignature().toString();
|
|
@@ -255,8 +417,8 @@ class ArkParameterRef extends AbstractRef {
|
|
|
255
417
|
inferType(arkMethod) {
|
|
256
418
|
return IRInference_1.IRInference.inferParameterRef(this, arkMethod);
|
|
257
419
|
}
|
|
258
|
-
getUses() {
|
|
259
|
-
return
|
|
420
|
+
getUses(acc) {
|
|
421
|
+
return acc !== null && acc !== void 0 ? acc : Value_1.EMPTY_USES;
|
|
260
422
|
}
|
|
261
423
|
toString() {
|
|
262
424
|
return 'parameter' + this.index + ': ' + this.paramType;
|
|
@@ -271,8 +433,8 @@ class ArkThisRef extends AbstractRef {
|
|
|
271
433
|
getType() {
|
|
272
434
|
return this.type;
|
|
273
435
|
}
|
|
274
|
-
getUses() {
|
|
275
|
-
return
|
|
436
|
+
getUses(acc) {
|
|
437
|
+
return acc !== null && acc !== void 0 ? acc : Value_1.EMPTY_USES;
|
|
276
438
|
}
|
|
277
439
|
toString() {
|
|
278
440
|
return 'this: ' + this.type;
|
|
@@ -290,8 +452,8 @@ class ArkCaughtExceptionRef extends AbstractRef {
|
|
|
290
452
|
setType(newType) {
|
|
291
453
|
this.type = newType;
|
|
292
454
|
}
|
|
293
|
-
getUses() {
|
|
294
|
-
return
|
|
455
|
+
getUses(acc) {
|
|
456
|
+
return acc !== null && acc !== void 0 ? acc : Value_1.EMPTY_USES;
|
|
295
457
|
}
|
|
296
458
|
toString() {
|
|
297
459
|
return 'caughtexception: ' + this.type;
|
|
@@ -303,14 +465,14 @@ class GlobalRef extends AbstractRef {
|
|
|
303
465
|
super();
|
|
304
466
|
this.name = name;
|
|
305
467
|
this.ref = ref !== null && ref !== void 0 ? ref : null;
|
|
306
|
-
this.usedStmts = [];
|
|
307
468
|
}
|
|
308
469
|
getName() {
|
|
309
470
|
return this.name;
|
|
310
471
|
}
|
|
311
|
-
getUses() {
|
|
472
|
+
getUses(acc = []) {
|
|
312
473
|
var _a;
|
|
313
|
-
|
|
474
|
+
(_a = this.ref) === null || _a === void 0 ? void 0 : _a.getUses(acc);
|
|
475
|
+
return acc;
|
|
314
476
|
}
|
|
315
477
|
getType() {
|
|
316
478
|
var _a;
|
|
@@ -322,15 +484,27 @@ class GlobalRef extends AbstractRef {
|
|
|
322
484
|
setRef(value) {
|
|
323
485
|
this.ref = value;
|
|
324
486
|
}
|
|
487
|
+
/**
|
|
488
|
+
* The statements using this global, exposed as a property so that consumers reading the field
|
|
489
|
+
* directly keep seeing an array; same value and same lazy backing list as {@link getUsedStmts}.
|
|
490
|
+
*/
|
|
491
|
+
get usedStmts() {
|
|
492
|
+
var _a;
|
|
493
|
+
return (_a = this._usedStmts) !== null && _a !== void 0 ? _a : Value_1.EMPTY_USED_STMTS;
|
|
494
|
+
}
|
|
325
495
|
getUsedStmts() {
|
|
326
|
-
|
|
496
|
+
var _a;
|
|
497
|
+
return (_a = this._usedStmts) !== null && _a !== void 0 ? _a : Value_1.EMPTY_USED_STMTS;
|
|
327
498
|
}
|
|
328
499
|
addUsedStmts(usedStmts) {
|
|
500
|
+
var _a, _b;
|
|
329
501
|
if (usedStmts instanceof Stmt_1.Stmt) {
|
|
330
|
-
this.
|
|
502
|
+
((_a = this._usedStmts) !== null && _a !== void 0 ? _a : (this._usedStmts = [])).push(usedStmts);
|
|
331
503
|
}
|
|
332
504
|
else {
|
|
333
|
-
|
|
505
|
+
for (const stmt of usedStmts) {
|
|
506
|
+
((_b = this._usedStmts) !== null && _b !== void 0 ? _b : (this._usedStmts = [])).push(stmt);
|
|
507
|
+
}
|
|
334
508
|
}
|
|
335
509
|
}
|
|
336
510
|
toString() {
|
|
@@ -345,8 +519,8 @@ class ClosureFieldRef extends AbstractRef {
|
|
|
345
519
|
this.fieldName = fieldName;
|
|
346
520
|
this.type = type;
|
|
347
521
|
}
|
|
348
|
-
getUses() {
|
|
349
|
-
return
|
|
522
|
+
getUses(acc) {
|
|
523
|
+
return acc !== null && acc !== void 0 ? acc : Value_1.EMPTY_USES;
|
|
350
524
|
}
|
|
351
525
|
getBase() {
|
|
352
526
|
return this.base;
|
package/lib/core/base/Stmt.d.ts
CHANGED
|
@@ -17,12 +17,12 @@ export declare abstract class Stmt {
|
|
|
17
17
|
* Undefined when this statement is automatically generated during IR construction. */
|
|
18
18
|
protected originFullPosition?: FullPosition;
|
|
19
19
|
protected cfg: Cfg;
|
|
20
|
-
protected
|
|
20
|
+
protected operandPositionsPacked?: number[];
|
|
21
21
|
metadata?: ArkMetadata;
|
|
22
22
|
getMetadata(kind: ArkMetadataKind): ArkMetadataType | undefined;
|
|
23
23
|
setMetadata(kind: ArkMetadataKind, value: ArkMetadataType): void;
|
|
24
24
|
/** Return a list of values which are uesd in this statement */
|
|
25
|
-
getUses(): Value[];
|
|
25
|
+
getUses(acc?: Value[]): Value[];
|
|
26
26
|
replaceUse(oldUse: Value, newUse: Value): void;
|
|
27
27
|
/**
|
|
28
28
|
* Return the definition which is uesd in this statement. Generally, the definition is the left value of `=` in
|
|
@@ -42,7 +42,7 @@ export declare abstract class Stmt {
|
|
|
42
42
|
*/
|
|
43
43
|
getDef(): Value | null;
|
|
44
44
|
replaceDef(oldDef: Value, newDef: Value): void;
|
|
45
|
-
getDefAndUses(): Value[];
|
|
45
|
+
getDefAndUses(acc?: Value[]): Value[];
|
|
46
46
|
/**
|
|
47
47
|
* Get the CFG (i.e., control flow graph) of an {@link ArkBody} in which the statement is.
|
|
48
48
|
* A CFG contains a set of basic blocks and statements corresponding to each basic block.
|
|
@@ -153,12 +153,22 @@ export declare abstract class Stmt {
|
|
|
153
153
|
* during IR construction or if the extraction fails.
|
|
154
154
|
*/
|
|
155
155
|
getOriginalText(): string | undefined;
|
|
156
|
+
/**
|
|
157
|
+
* Returns the absolute full position of this statement's invoke.
|
|
158
|
+
* Start is the callee identifier; end is the CallExpression span end (right of `)`),
|
|
159
|
+
* same half-open convention as {@link getOriginFullPosition}.
|
|
160
|
+
* The span is captured from the AST at IR construction.
|
|
161
|
+
* @returns Absolute `FullPosition` of `methodName(...)`, or `FullPosition.DEFAULT` if not found.
|
|
162
|
+
*/
|
|
163
|
+
getInvokeFullPosition(): FullPosition;
|
|
156
164
|
/**
|
|
157
165
|
* Clears the cached source text, forcing re-extraction on next getOriginalText call.
|
|
158
166
|
*/
|
|
159
167
|
clearSourceCode(): void;
|
|
160
168
|
setOperandOriginalPositions(operandOriginalPositions: FullPosition[]): void;
|
|
161
169
|
getOperandOriginalPositions(): FullPosition[] | undefined;
|
|
170
|
+
/** @internal Compact interleaved [first, last] storage; splice in pairs. */
|
|
171
|
+
getOperandPositionsPacked(): number[] | undefined;
|
|
162
172
|
getOperandOriginalPosition(indexOrOperand: number | Value): FullPosition | null;
|
|
163
173
|
}
|
|
164
174
|
export declare class ArkAssignStmt extends Stmt {
|
|
@@ -189,7 +199,7 @@ export declare class ArkAssignStmt extends Stmt {
|
|
|
189
199
|
setRightOp(rightOp: Value): void;
|
|
190
200
|
toString(): string;
|
|
191
201
|
getDef(): Value | null;
|
|
192
|
-
getUses(): Value[];
|
|
202
|
+
getUses(acc?: Value[]): Value[];
|
|
193
203
|
}
|
|
194
204
|
export declare class ArkInvokeStmt extends Stmt {
|
|
195
205
|
private invokeExpr;
|
|
@@ -197,7 +207,7 @@ export declare class ArkInvokeStmt extends Stmt {
|
|
|
197
207
|
replaceInvokeExpr(newExpr: AbstractInvokeExpr): void;
|
|
198
208
|
getInvokeExpr(): AbstractInvokeExpr;
|
|
199
209
|
toString(): string;
|
|
200
|
-
getUses(): Value[];
|
|
210
|
+
getUses(acc?: Value[]): Value[];
|
|
201
211
|
}
|
|
202
212
|
export declare class ArkIfStmt extends Stmt {
|
|
203
213
|
private conditionExpr;
|
|
@@ -220,7 +230,7 @@ export declare class ArkIfStmt extends Stmt {
|
|
|
220
230
|
isBranch(): boolean;
|
|
221
231
|
getExpectedSuccessorCount(): number;
|
|
222
232
|
toString(): string;
|
|
223
|
-
getUses(): Value[];
|
|
233
|
+
getUses(acc?: Value[]): Value[];
|
|
224
234
|
}
|
|
225
235
|
export declare class ArkReturnStmt extends Stmt {
|
|
226
236
|
private op;
|
|
@@ -229,7 +239,7 @@ export declare class ArkReturnStmt extends Stmt {
|
|
|
229
239
|
getOp(): Value;
|
|
230
240
|
setReturnValue(returnValue: Value): void;
|
|
231
241
|
toString(): string;
|
|
232
|
-
getUses(): Value[];
|
|
242
|
+
getUses(acc?: Value[]): Value[];
|
|
233
243
|
}
|
|
234
244
|
export declare class ArkReturnVoidStmt extends Stmt {
|
|
235
245
|
constructor();
|
|
@@ -242,7 +252,7 @@ export declare class ArkThrowStmt extends Stmt {
|
|
|
242
252
|
getOp(): Value;
|
|
243
253
|
setOp(newOp: Value): void;
|
|
244
254
|
toString(): string;
|
|
245
|
-
getUses(): Value[];
|
|
255
|
+
getUses(acc?: Value[]): Value[];
|
|
246
256
|
}
|
|
247
257
|
/**
|
|
248
258
|
* Statement of type alias definition combines with the left hand as {@link AliasType} and right hand as {@link AliasTypeExpr}.
|
|
@@ -265,7 +275,7 @@ export declare class ArkAliasTypeDefineStmt extends Stmt {
|
|
|
265
275
|
getAliasTypeExpr(): AliasTypeExpr;
|
|
266
276
|
getAliasName(): string;
|
|
267
277
|
toString(): string;
|
|
268
|
-
getUses(): Value[];
|
|
278
|
+
getUses(acc?: Value[]): Value[];
|
|
269
279
|
getTypeExprs(): AbstractTypeExpr[];
|
|
270
280
|
}
|
|
271
281
|
//# sourceMappingURL=Stmt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"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"}
|