arkanalyzer 1.0.29 → 1.0.30
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/Scene.d.ts +7 -0
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +196 -173
- package/lib/VFG/builder/DVFGBuilder.d.ts.map +1 -1
- package/lib/VFG/builder/DVFGBuilder.js +11 -6
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +3 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +18 -10
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +8 -7
- package/lib/callgraph/common/Statistics.d.ts.map +1 -1
- package/lib/callgraph/common/Statistics.js +25 -24
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +0 -1
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -1
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +26 -26
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +3 -0
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +112 -92
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +15 -14
- package/lib/core/base/Type.d.ts +10 -1
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +18 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +3 -1
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +17 -20
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +18 -10
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +12 -1
- package/lib/core/dataflow/DataflowSolver.d.ts +1 -0
- package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowSolver.js +21 -17
- package/lib/core/dataflow/ReachingDef.d.ts.map +1 -1
- package/lib/core/dataflow/ReachingDef.js +6 -0
- package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
- package/lib/core/dataflow/UndefinedVariable.js +0 -25
- package/lib/core/graph/Cfg.d.ts +1 -0
- package/lib/core/graph/Cfg.d.ts.map +1 -1
- package/lib/core/graph/Cfg.js +49 -45
- package/lib/core/graph/DominanceFinder.js +19 -19
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +1 -0
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +34 -31
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +13 -6
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +72 -63
- package/lib/save/serializeArkIR.d.ts.map +1 -1
- package/lib/save/serializeArkIR.js +11 -24
- package/lib/save/source/SourceBody.js +10 -10
- package/lib/save/source/SourceFilePrinter.d.ts +1 -0
- package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
- package/lib/save/source/SourceFilePrinter.js +11 -8
- package/lib/save/source/SourceNamespace.d.ts +1 -0
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +11 -8
- package/lib/save/source/SourceStmt.d.ts +1 -0
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +37 -35
- package/lib/save/source/SourceTransformer.d.ts +2 -0
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +64 -54
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts +5 -0
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts.map +1 -1
- package/lib/transformer/StaticSingleAssignmentFormer.js +119 -101
- package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
- package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
- package/lib/utils/CfgStructualAnalysis.js +28 -24
- package/lib/utils/FileUtils.d.ts.map +1 -1
- package/lib/utils/FileUtils.js +14 -12
- package/lib/utils/callGraphUtils.d.ts.map +1 -1
- package/lib/utils/callGraphUtils.js +26 -23
- package/lib/utils/entryMethodUtils.d.ts.map +1 -1
- package/lib/utils/entryMethodUtils.js +11 -8
- package/package.json +2 -2
|
@@ -145,22 +145,25 @@ class AbstractFlowGraph {
|
|
|
145
145
|
this.structTypes.set(region, rtype);
|
|
146
146
|
let blocks = new Set();
|
|
147
147
|
for (const s of nset) {
|
|
148
|
-
|
|
149
|
-
this.structOf.set(s, region);
|
|
150
|
-
}
|
|
151
|
-
if (this.structBlocks.has(s)) {
|
|
152
|
-
for (const b of this.structBlocks.get(s)) {
|
|
153
|
-
blocks.add(b);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
blocks.add(s);
|
|
158
|
-
}
|
|
148
|
+
this.handleRegion(s, region, blocks);
|
|
159
149
|
}
|
|
160
150
|
this.structBlocks.set(region, blocks);
|
|
161
151
|
this.loopMap.set(region.header, region);
|
|
162
152
|
}
|
|
163
153
|
}
|
|
154
|
+
handleRegion(s, region, blocks) {
|
|
155
|
+
if (!this.structOf.has(s)) {
|
|
156
|
+
this.structOf.set(s, region);
|
|
157
|
+
}
|
|
158
|
+
if (this.structBlocks.has(s)) {
|
|
159
|
+
for (const b of this.structBlocks.get(s)) {
|
|
160
|
+
blocks.add(b);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
blocks.add(s);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
164
167
|
prepareBuildLoops() {
|
|
165
168
|
let dom = this.buildDominator();
|
|
166
169
|
let loops = [];
|
|
@@ -590,22 +593,23 @@ class AbstractFlowGraph {
|
|
|
590
593
|
reduce(rtype, nodeSet) {
|
|
591
594
|
let region = this.createRegion(rtype, nodeSet);
|
|
592
595
|
region === null || region === void 0 ? void 0 : region.replace();
|
|
593
|
-
if (region) {
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
else {
|
|
604
|
-
blocks.add(s);
|
|
596
|
+
if (region === undefined) {
|
|
597
|
+
return undefined;
|
|
598
|
+
}
|
|
599
|
+
this.structTypes.set(region, rtype);
|
|
600
|
+
let blocks = new Set();
|
|
601
|
+
for (const s of nodeSet) {
|
|
602
|
+
this.structOf.set(s, region);
|
|
603
|
+
if (this.structBlocks.has(s)) {
|
|
604
|
+
for (const b of this.structBlocks.get(s)) {
|
|
605
|
+
blocks.add(b);
|
|
605
606
|
}
|
|
606
607
|
}
|
|
607
|
-
|
|
608
|
+
else {
|
|
609
|
+
blocks.add(s);
|
|
610
|
+
}
|
|
608
611
|
}
|
|
612
|
+
this.structBlocks.set(region, blocks);
|
|
609
613
|
return region;
|
|
610
614
|
}
|
|
611
615
|
setIntersect(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGjC;WAEa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WASrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGjC;WAEa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WASrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;WA8BlG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ;CAc1F;AAED,qBAAa,UAAU;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAIzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,GAAG,CAAC,MAAM,CAAqB,GAAG,MAAM,CA0BrH"}
|
package/lib/utils/FileUtils.js
CHANGED
|
@@ -79,19 +79,21 @@ class FileUtils {
|
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
81
|
ohPkgContentMap.forEach((content, filePath) => {
|
|
82
|
-
if (content.dependencies) {
|
|
83
|
-
|
|
84
|
-
if (!moduleMap.get(name)) {
|
|
85
|
-
const modulePath = path_1.default.resolve(path_1.default.dirname(filePath), value.replace('file:', ''));
|
|
86
|
-
const key = path_1.default.resolve(modulePath, EtsConst_1.OH_PACKAGE_JSON5);
|
|
87
|
-
const target = ohPkgContentMap.get(key);
|
|
88
|
-
if (target) {
|
|
89
|
-
moduleMap.set(name, new ModulePath(modulePath, target.main ?
|
|
90
|
-
path_1.default.resolve(modulePath, target.main) : ''));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
});
|
|
82
|
+
if (!content.dependencies) {
|
|
83
|
+
return;
|
|
94
84
|
}
|
|
85
|
+
Object.entries(content.dependencies).forEach(([name, value]) => {
|
|
86
|
+
if (moduleMap.get(name)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const modulePath = path_1.default.resolve(path_1.default.dirname(filePath), value.replace('file:', ''));
|
|
90
|
+
const key = path_1.default.resolve(modulePath, EtsConst_1.OH_PACKAGE_JSON5);
|
|
91
|
+
const target = ohPkgContentMap.get(key);
|
|
92
|
+
if (target) {
|
|
93
|
+
moduleMap.set(name, new ModulePath(modulePath, target.main ?
|
|
94
|
+
path_1.default.resolve(modulePath, target.main) : ''));
|
|
95
|
+
}
|
|
96
|
+
});
|
|
95
97
|
});
|
|
96
98
|
return moduleMap;
|
|
97
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callGraphUtils.d.ts","sourceRoot":"","sources":["../../src/utils/callGraphUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7E,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAyB;IAE/C,IAAI,QAAQ,IAAI,eAAe,EAAE,CAEhC;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,EAEnC;IAED,IAAI,aAAa,IAAI,eAAe,EAAE,CAErC;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,EAExC;IAEM,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;IAIvE,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO;IAKxD,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAU/C,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAUpD,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAIpD,uBAAuB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;CAGnE;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAErB;IAEM,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"callGraphUtils.d.ts","sourceRoot":"","sources":["../../src/utils/callGraphUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7E,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAyB;IAE/C,IAAI,QAAQ,IAAI,eAAe,EAAE,CAEhC;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,EAEnC;IAED,IAAI,aAAa,IAAI,eAAe,EAAE,CAErC;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,EAExC;IAEM,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;IAIvE,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO;IAKxD,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAU/C,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAUpD,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAIpD,uBAAuB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;CAGnE;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAErB;IAEM,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAkBpD,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;IAmBnD,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,EAAE;CAqClE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAOtG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAY5D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAsB1I;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/D"}
|
|
@@ -92,15 +92,16 @@ class SceneManager {
|
|
|
92
92
|
}
|
|
93
93
|
getMethod(method) {
|
|
94
94
|
let targetMethod = this._scene.getMethod(method);
|
|
95
|
-
if (targetMethod
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
95
|
+
if (targetMethod != null) {
|
|
96
|
+
return targetMethod;
|
|
97
|
+
}
|
|
98
|
+
// 支持SDK调用解析
|
|
99
|
+
let file = this._scene.getFile(method.getDeclaringClassSignature().getDeclaringFileSignature());
|
|
100
|
+
if (file) {
|
|
101
|
+
const methods = ModelUtils_1.ModelUtils.getAllMethodsInFile(file);
|
|
102
|
+
for (let methodUnderFile of methods) {
|
|
103
|
+
if (method.toString() === methodUnderFile.getSignature().toString()) {
|
|
104
|
+
return methodUnderFile;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
}
|
|
@@ -110,14 +111,15 @@ class SceneManager {
|
|
|
110
111
|
if (typeof arkClass.getClassName() === "undefined")
|
|
111
112
|
return null;
|
|
112
113
|
let classInstance = this._scene.getClass(arkClass);
|
|
113
|
-
if (classInstance
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
if (classInstance != null) {
|
|
115
|
+
return classInstance;
|
|
116
|
+
}
|
|
117
|
+
let sdkOrTargetProjectFile = this._scene.getFile(arkClass.getDeclaringFileSignature());
|
|
118
|
+
// TODO: support get sdk class, targetProject class waiting to be supported
|
|
119
|
+
if (sdkOrTargetProjectFile != null) {
|
|
120
|
+
for (let classUnderFile of ModelUtils_1.ModelUtils.getAllClassesInFile(sdkOrTargetProjectFile)) {
|
|
121
|
+
if (classUnderFile.getSignature().toString() === arkClass.toString()) {
|
|
122
|
+
return classUnderFile;
|
|
121
123
|
}
|
|
122
124
|
}
|
|
123
125
|
}
|
|
@@ -132,12 +134,13 @@ class SceneManager {
|
|
|
132
134
|
if (tempClass == null)
|
|
133
135
|
continue;
|
|
134
136
|
let firstLevelSubclasses = Array.from(tempClass.getExtendedClasses().values());
|
|
135
|
-
if (firstLevelSubclasses) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
if (!firstLevelSubclasses) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
for (let subclass of firstLevelSubclasses) {
|
|
141
|
+
if (!isItemRegistered(subclass, extendedClasses, (a, b) => a.getSignature().toString() === b.getSignature().toString())) {
|
|
142
|
+
// 子类未处理,加入到classList
|
|
143
|
+
classList.push(subclass);
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
146
|
// 当前类处理完毕,标记为已处理
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entryMethodUtils.d.ts","sourceRoot":"","sources":["../../src/utils/entryMethodUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,eAAO,MAAM,qBAAqB,EAAE,MAAM,EA2BvC,CAAC;AACJ,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAiBtC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,EAAE,MAAM,EAkBnD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"entryMethodUtils.d.ts","sourceRoot":"","sources":["../../src/utils/entryMethodUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,eAAO,MAAM,qBAAqB,EAAE,MAAM,EA2BvC,CAAC;AACJ,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAiBtC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,EAAE,MAAM,EAkBnD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAkBpF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,QAS5C"}
|
|
@@ -83,14 +83,17 @@ exports.COMPONENT_LIFECYCLE_METHOD_NAME = [
|
|
|
83
83
|
];
|
|
84
84
|
function getCallbackMethodFromStmt(stmt, scene) {
|
|
85
85
|
const invokeExpr = stmt.getInvokeExpr();
|
|
86
|
-
if (invokeExpr
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
86
|
+
if (invokeExpr === undefined ||
|
|
87
|
+
invokeExpr.getMethodSignature().getDeclaringClassSignature().getClassName() !== '' ||
|
|
88
|
+
!exports.CALLBACK_METHOD_NAME.includes(invokeExpr.getMethodSignature().getMethodSubSignature().getMethodName())) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
for (const arg of invokeExpr.getArgs()) {
|
|
92
|
+
const argType = arg.getType();
|
|
93
|
+
if (argType instanceof Type_1.FunctionType) {
|
|
94
|
+
const cbMethod = scene.getMethod(argType.getMethodSignature());
|
|
95
|
+
if (cbMethod) {
|
|
96
|
+
return cbMethod;
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
}
|