arkanalyzer 1.0.29 → 1.0.31
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/PTAUtils.d.ts +9 -3
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +32 -18
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +17 -1
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +74 -27
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +51 -18
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +533 -346
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +15 -14
- package/lib/core/base/Local.js +2 -2
- 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 +21 -12
- package/lib/core/common/TypeInference.d.ts +1 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +30 -4
- 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
package/lib/core/graph/Cfg.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cfg.d.ts","sourceRoot":"","sources":["../../../src/core/graph/Cfg.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C;;GAEG;AACH,qBAAa,GAAG;IACZ,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAA8B;;IAI9C,QAAQ,IAAI,IAAI,EAAE;IAQzB;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM;IAUhE;;;;;OAKG;IACI,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM;IAUjE;;;;OAIG;IACI,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS/B;;;;OAIG;IACI,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI;IAerE,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQjC,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC;IAI5B,gBAAgB,IAAI,UAAU,GAAG,SAAS;IAI1C,eAAe,IAAI,IAAI;IAIvB,eAAe,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI;IAI5C,kBAAkB,IAAI,SAAS;IAI/B,kBAAkB,CAAC,MAAM,EAAE,SAAS;IAIpC,eAAe,IAAI,WAAW,EAAE;IAKhC,QAAQ,IAAI,MAAM;IAIlB,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;IAchD,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"Cfg.d.ts","sourceRoot":"","sources":["../../../src/core/graph/Cfg.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C;;GAEG;AACH,qBAAa,GAAG;IACZ,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAA8B;;IAI9C,QAAQ,IAAI,IAAI,EAAE;IAQzB;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM;IAUhE;;;;;OAKG;IACI,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM;IAUjE;;;;OAIG;IACI,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS/B;;;;OAIG;IACI,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI;IAerE,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQjC,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC;IAI5B,gBAAgB,IAAI,UAAU,GAAG,SAAS;IAI1C,eAAe,IAAI,IAAI;IAIvB,eAAe,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI;IAI5C,kBAAkB,IAAI,SAAS;IAI/B,kBAAkB,CAAC,MAAM,EAAE,SAAS;IAIpC,eAAe,IAAI,WAAW,EAAE;IAKhC,QAAQ,IAAI,MAAM;IAIlB,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;IAchD,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,oBAAoB;IAgDrB,gBAAgB,IAAI,IAAI;IAWxB,oBAAoB,IAAI,GAAG,CAAC,UAAU,CAAC;IAevC,QAAQ,IAAI,QAAQ;IAoB3B,OAAO,CAAC,YAAY;CAevB"}
|
package/lib/core/graph/Cfg.js
CHANGED
|
@@ -182,56 +182,60 @@ class Cfg {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
-
|
|
185
|
+
handleDefUseForValue(value, block, stmt, stmtIndex) {
|
|
186
186
|
var _a, _b;
|
|
187
|
+
const name = value.toString();
|
|
188
|
+
const defStmts = [];
|
|
189
|
+
// 判断本block之前有无对应def
|
|
190
|
+
for (let i = stmtIndex - 1; i >= 0; i--) {
|
|
191
|
+
const beforeStmt = block.getStmts()[i];
|
|
192
|
+
if (beforeStmt.getDef() && ((_a = beforeStmt.getDef()) === null || _a === void 0 ? void 0 : _a.toString()) === name) {
|
|
193
|
+
defStmts.push(beforeStmt);
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// 本block有对应def直接结束,否则找所有的前序block
|
|
198
|
+
if (defStmts.length !== 0) {
|
|
199
|
+
this.defUseChains.push(new DefUseChain_1.DefUseChain(value, defStmts[0], stmt));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const needWalkBlocks = [...block.getPredecessors()];
|
|
203
|
+
const walkedBlocks = new Set();
|
|
204
|
+
while (needWalkBlocks.length > 0) {
|
|
205
|
+
const predecessor = needWalkBlocks.pop();
|
|
206
|
+
if (!predecessor) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const predecessorStmts = predecessor.getStmts();
|
|
210
|
+
let predecessorHasDef = false;
|
|
211
|
+
for (let i = predecessorStmts.length - 1; i >= 0; i--) {
|
|
212
|
+
const beforeStmt = predecessorStmts[i];
|
|
213
|
+
if (beforeStmt.getDef() && ((_b = beforeStmt.getDef()) === null || _b === void 0 ? void 0 : _b.toString()) === name) {
|
|
214
|
+
defStmts.push(beforeStmt);
|
|
215
|
+
predecessorHasDef = true;
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
walkedBlocks.add(predecessor);
|
|
220
|
+
if (predecessorHasDef) {
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
for (const morePredecessor of predecessor.getPredecessors()) {
|
|
224
|
+
if (!walkedBlocks.has(morePredecessor) && !needWalkBlocks.includes(morePredecessor)) {
|
|
225
|
+
needWalkBlocks.unshift(morePredecessor);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
for (const def of defStmts) {
|
|
230
|
+
this.defUseChains.push(new DefUseChain_1.DefUseChain(value, def, stmt));
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
buildDefUseChain() {
|
|
187
234
|
for (const block of this.blocks) {
|
|
188
235
|
for (let stmtIndex = 0; stmtIndex < block.getStmts().length; stmtIndex++) {
|
|
189
236
|
const stmt = block.getStmts()[stmtIndex];
|
|
190
237
|
for (const value of stmt.getUses()) {
|
|
191
|
-
|
|
192
|
-
const defStmts = [];
|
|
193
|
-
// 判断本block之前有无对应def
|
|
194
|
-
for (let i = stmtIndex - 1; i >= 0; i--) {
|
|
195
|
-
const beforeStmt = block.getStmts()[i];
|
|
196
|
-
if (beforeStmt.getDef() && ((_a = beforeStmt.getDef()) === null || _a === void 0 ? void 0 : _a.toString()) === name) {
|
|
197
|
-
defStmts.push(beforeStmt);
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// 本block有对应def直接结束,否则找所有的前序block
|
|
202
|
-
if (defStmts.length !== 0) {
|
|
203
|
-
this.defUseChains.push(new DefUseChain_1.DefUseChain(value, defStmts[0], stmt));
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
const needWalkBlocks = [...block.getPredecessors()];
|
|
207
|
-
const walkedBlocks = new Set();
|
|
208
|
-
while (needWalkBlocks.length > 0) {
|
|
209
|
-
const predecessor = needWalkBlocks.pop();
|
|
210
|
-
if (!predecessor) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
const predecessorStmts = predecessor.getStmts();
|
|
214
|
-
let predecessorHasDef = false;
|
|
215
|
-
for (let i = predecessorStmts.length - 1; i >= 0; i--) {
|
|
216
|
-
const beforeStmt = predecessorStmts[i];
|
|
217
|
-
if (beforeStmt.getDef() && ((_b = beforeStmt.getDef()) === null || _b === void 0 ? void 0 : _b.toString()) === name) {
|
|
218
|
-
defStmts.push(beforeStmt);
|
|
219
|
-
predecessorHasDef = true;
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
if (!predecessorHasDef) {
|
|
224
|
-
for (const morePredecessor of predecessor.getPredecessors()) {
|
|
225
|
-
if (!walkedBlocks.has(morePredecessor) && !needWalkBlocks.includes(morePredecessor))
|
|
226
|
-
needWalkBlocks.unshift(morePredecessor);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
walkedBlocks.add(predecessor);
|
|
230
|
-
}
|
|
231
|
-
for (const def of defStmts) {
|
|
232
|
-
this.defUseChains.push(new DefUseChain_1.DefUseChain(value, def, stmt));
|
|
233
|
-
}
|
|
234
|
-
}
|
|
238
|
+
this.handleDefUseForValue(value, block, stmt, stmtIndex);
|
|
235
239
|
}
|
|
236
240
|
}
|
|
237
241
|
}
|
|
@@ -43,17 +43,16 @@ class DominanceFinder {
|
|
|
43
43
|
let blockIdx = this.blockToIdx.get(block);
|
|
44
44
|
let preds = Array.from(block.getPredecessors());
|
|
45
45
|
let newIdom = this.getFirstDefinedBlockPredIdx(preds);
|
|
46
|
-
if (preds.length
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
46
|
+
if (preds.length <= 0 || newIdom === -1) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
for (const pred of preds) {
|
|
50
|
+
let predIdx = this.blockToIdx.get(pred);
|
|
51
|
+
this.idoms[predIdx] !== -1 ? newIdom = this.intersect(newIdom, predIdx) : null;
|
|
52
|
+
}
|
|
53
|
+
if (this.idoms[blockIdx] !== newIdom) {
|
|
54
|
+
this.idoms[blockIdx] = newIdom;
|
|
55
|
+
isChanged = true;
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
}
|
|
@@ -64,14 +63,15 @@ class DominanceFinder {
|
|
|
64
63
|
}
|
|
65
64
|
for (const block of this.blocks) {
|
|
66
65
|
let preds = Array.from(block.getPredecessors());
|
|
67
|
-
if (preds.length
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
if (preds.length <= 1) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
let blockIdx = this.blockToIdx.get(block);
|
|
70
|
+
for (const pred of preds) {
|
|
71
|
+
let predIdx = this.blockToIdx.get(pred);
|
|
72
|
+
while (predIdx !== this.idoms[blockIdx]) {
|
|
73
|
+
this.domFrontiers[predIdx].push(blockIdx);
|
|
74
|
+
predIdx = this.idoms[predIdx];
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -165,6 +165,7 @@ export declare class ViewTreeImpl extends TreeNodeStack implements ViewTree {
|
|
|
165
165
|
*/
|
|
166
166
|
private addSystemComponentNode;
|
|
167
167
|
private findMethodInvokeBuilderMethod;
|
|
168
|
+
private parseFieldInObjectLiteral;
|
|
168
169
|
private parseObjectLiteralExpr;
|
|
169
170
|
private viewComponentCreationParser;
|
|
170
171
|
private waterFlowCreationParser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -757,43 +757,46 @@ class ViewTreeImpl extends TreeNodeStack {
|
|
|
757
757
|
}
|
|
758
758
|
}
|
|
759
759
|
}
|
|
760
|
+
parseFieldInObjectLiteral(field, cls, transferMap) {
|
|
761
|
+
let dstField = cls.getFieldWithName(field.getName());
|
|
762
|
+
if ((dstField === null || dstField === void 0 ? void 0 : dstField.getStateDecorators().length) === 0 && !(dstField === null || dstField === void 0 ? void 0 : dstField.hasBuilderParamDecorator())) {
|
|
763
|
+
return;
|
|
764
|
+
}
|
|
765
|
+
let stmts = field.getInitializer();
|
|
766
|
+
if (stmts.length === 0) {
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
769
|
+
let assignStmt = stmts[stmts.length - 1];
|
|
770
|
+
if (!(assignStmt instanceof Stmt_1.ArkAssignStmt)) {
|
|
771
|
+
return;
|
|
772
|
+
}
|
|
773
|
+
let value = assignStmt.getRightOp();
|
|
774
|
+
if (value instanceof Local_1.Local) {
|
|
775
|
+
value = backtraceLocalInitValue(value);
|
|
776
|
+
}
|
|
777
|
+
if (dstField === null || dstField === void 0 ? void 0 : dstField.hasBuilderParamDecorator()) {
|
|
778
|
+
let method = this.findBuilderMethod(value);
|
|
779
|
+
if (method) {
|
|
780
|
+
transferMap.set(dstField, method);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
else {
|
|
784
|
+
let srcField;
|
|
785
|
+
if (value instanceof Ref_1.ArkInstanceFieldRef) {
|
|
786
|
+
srcField = this.getDeclaringArkClass().getFieldWithName(value.getFieldName());
|
|
787
|
+
}
|
|
788
|
+
if (srcField && dstField) {
|
|
789
|
+
transferMap.set(dstField, srcField);
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
}
|
|
760
793
|
parseObjectLiteralExpr(cls, object, builder) {
|
|
761
794
|
let transferMap = new Map();
|
|
762
795
|
if (object instanceof Local_1.Local && object.getType() instanceof Type_1.ClassType) {
|
|
763
796
|
let anonymousSig = object.getType().getClassSignature();
|
|
764
797
|
let anonymous = this.findClass(anonymousSig);
|
|
765
798
|
anonymous === null || anonymous === void 0 ? void 0 : anonymous.getFields().forEach((field) => {
|
|
766
|
-
|
|
767
|
-
if ((dstField === null || dstField === void 0 ? void 0 : dstField.getStateDecorators().length) === 0 && !(dstField === null || dstField === void 0 ? void 0 : dstField.hasBuilderParamDecorator())) {
|
|
768
|
-
return;
|
|
769
|
-
}
|
|
770
|
-
let stmts = field.getInitializer();
|
|
771
|
-
if (stmts.length === 0) {
|
|
772
|
-
return;
|
|
773
|
-
}
|
|
774
|
-
let assignStmt = stmts[stmts.length - 1];
|
|
775
|
-
if (!(assignStmt instanceof Stmt_1.ArkAssignStmt)) {
|
|
776
|
-
return;
|
|
777
|
-
}
|
|
778
|
-
let value = assignStmt.getRightOp();
|
|
779
|
-
if (value instanceof Local_1.Local) {
|
|
780
|
-
value = backtraceLocalInitValue(value);
|
|
781
|
-
}
|
|
782
|
-
if (dstField === null || dstField === void 0 ? void 0 : dstField.hasBuilderParamDecorator()) {
|
|
783
|
-
let method = this.findBuilderMethod(value);
|
|
784
|
-
if (method) {
|
|
785
|
-
transferMap.set(dstField, method);
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
else {
|
|
789
|
-
let srcField;
|
|
790
|
-
if (value instanceof Ref_1.ArkInstanceFieldRef) {
|
|
791
|
-
srcField = this.getDeclaringArkClass().getFieldWithName(value.getFieldName());
|
|
792
|
-
}
|
|
793
|
-
if (srcField && dstField) {
|
|
794
|
-
transferMap.set(dstField, srcField);
|
|
795
|
-
}
|
|
796
|
-
}
|
|
799
|
+
this.parseFieldInObjectLiteral(field, cls, transferMap);
|
|
797
800
|
});
|
|
798
801
|
}
|
|
799
802
|
// If the builder exists, there will be a unique BuilderParam
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAc,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAgC,IAAI,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
|
|
@@ -550,7 +550,7 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
550
550
|
})) !== null && _b !== void 0 ? _b : signatures === null || signatures === void 0 ? void 0 : signatures[0]) !== null && _c !== void 0 ? _c : this.getSignature();
|
|
551
551
|
}
|
|
552
552
|
matchParam(paramType, arg, scene) {
|
|
553
|
-
var _a;
|
|
553
|
+
var _a, _b;
|
|
554
554
|
const argType = arg.getType();
|
|
555
555
|
if (arg instanceof Local_1.Local) {
|
|
556
556
|
const stmt = arg.getDeclaringStmt();
|
|
@@ -571,17 +571,24 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
571
571
|
else if (argType instanceof Type_1.FunctionType && paramType instanceof Type_1.FunctionType) {
|
|
572
572
|
return argType.getMethodSignature().getParamLength() === paramType.getMethodSignature().getParamLength();
|
|
573
573
|
}
|
|
574
|
-
else if (
|
|
574
|
+
else if (paramType instanceof Type_1.ClassType &&
|
|
575
575
|
paramType.getClassSignature().getClassName().includes(EtsConst_1.CALL_BACK)) {
|
|
576
|
-
return
|
|
576
|
+
return argType instanceof Type_1.FunctionType;
|
|
577
577
|
}
|
|
578
578
|
else if (paramType instanceof Type_1.LiteralType && arg instanceof Constant_1.Constant) {
|
|
579
579
|
return arg.getValue().replace(/[\"|\']/g, '') === paramType.getLiteralName()
|
|
580
580
|
.toString().replace(/[\"|\']/g, '');
|
|
581
581
|
}
|
|
582
|
-
else if (paramType instanceof Type_1.
|
|
583
|
-
|
|
584
|
-
|
|
582
|
+
else if (paramType instanceof Type_1.ClassType && argType instanceof Type_1.EnumValueType) {
|
|
583
|
+
return paramType.getClassSignature() === argType.getFieldSignature().getDeclaringSignature();
|
|
584
|
+
}
|
|
585
|
+
else if (paramType instanceof Type_1.EnumValueType) {
|
|
586
|
+
if (argType instanceof Type_1.EnumValueType) {
|
|
587
|
+
return paramType.getFieldSignature() === argType.getFieldSignature();
|
|
588
|
+
}
|
|
589
|
+
else if (argType.constructor === ((_a = paramType.getConstant()) === null || _a === void 0 ? void 0 : _a.getType().constructor) && arg instanceof Constant_1.Constant) {
|
|
590
|
+
return ((_b = paramType.getConstant()) === null || _b === void 0 ? void 0 : _b.getValue()) === arg.getValue();
|
|
591
|
+
}
|
|
585
592
|
}
|
|
586
593
|
return argType.constructor === paramType.constructor;
|
|
587
594
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAuB5B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAyB/G;
|
|
1
|
+
{"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,eAAe,EAElB,MAAM,oBAAoB,CAAC;AAuB5B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,EAAE,CAyB/G;AA4ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,eAAe,EAAE,CA8C3J;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAmDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,QAM3F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAC9E,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CA8F9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,QAiDjD"}
|
|
@@ -181,6 +181,76 @@ function buildTypeParameters(typeParameters, sourceFile, arkInstance) {
|
|
|
181
181
|
return genericTypes;
|
|
182
182
|
}
|
|
183
183
|
exports.buildTypeParameters = buildTypeParameters;
|
|
184
|
+
function buildObjectBindingPatternParam(methodParameter, paramNameNode) {
|
|
185
|
+
methodParameter.setName('ObjectBindingPattern');
|
|
186
|
+
let elements = [];
|
|
187
|
+
paramNameNode.elements.forEach((element) => {
|
|
188
|
+
let paraElement = new ArkMethodBuilder_1.ObjectBindingPatternParameter();
|
|
189
|
+
if (element.propertyName) {
|
|
190
|
+
if (ohos_typescript_1.default.isIdentifier(element.propertyName)) {
|
|
191
|
+
paraElement.setPropertyName(element.propertyName.text);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
logger.warn('New propertyName of ObjectBindingPattern found, please contact developers to support this!');
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (element.name) {
|
|
198
|
+
if (ohos_typescript_1.default.isIdentifier(element.name)) {
|
|
199
|
+
paraElement.setName(element.name.text);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
logger.warn('New name of ObjectBindingPattern found, please contact developers to support this!');
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (element.initializer) {
|
|
206
|
+
logger.warn('TODO: support ObjectBindingPattern initializer.');
|
|
207
|
+
}
|
|
208
|
+
if (element.dotDotDotToken) {
|
|
209
|
+
paraElement.setOptional(true);
|
|
210
|
+
}
|
|
211
|
+
elements.push(paraElement);
|
|
212
|
+
});
|
|
213
|
+
methodParameter.setObjElements(elements);
|
|
214
|
+
}
|
|
215
|
+
function buildBindingElementOfBindingPatternParam(element, paraElement) {
|
|
216
|
+
if (element.propertyName) {
|
|
217
|
+
if (ohos_typescript_1.default.isIdentifier(element.propertyName)) {
|
|
218
|
+
paraElement.setPropertyName(element.propertyName.text);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
logger.warn('New propertyName of ArrayBindingPattern found, please contact developers to support this!');
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (element.name) {
|
|
225
|
+
if (ohos_typescript_1.default.isIdentifier(element.name)) {
|
|
226
|
+
paraElement.setName(element.name.text);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
logger.warn('New name of ArrayBindingPattern found, please contact developers to support this!');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (element.initializer) {
|
|
233
|
+
logger.warn('TODO: support ArrayBindingPattern initializer.');
|
|
234
|
+
}
|
|
235
|
+
if (element.dotDotDotToken) {
|
|
236
|
+
paraElement.setOptional(true);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function buildArrayBindingPatternParam(methodParameter, paramNameNode) {
|
|
240
|
+
methodParameter.setName('ArrayBindingPattern');
|
|
241
|
+
let elements = [];
|
|
242
|
+
paramNameNode.elements.forEach((element) => {
|
|
243
|
+
let paraElement = new ArkMethodBuilder_1.ArrayBindingPatternParameter();
|
|
244
|
+
if (ohos_typescript_1.default.isBindingElement(element)) {
|
|
245
|
+
buildBindingElementOfBindingPatternParam(element, paraElement);
|
|
246
|
+
}
|
|
247
|
+
else if (ohos_typescript_1.default.isOmittedExpression(element)) {
|
|
248
|
+
logger.warn('TODO: support OmittedExpression for ArrayBindingPattern parameter name.');
|
|
249
|
+
}
|
|
250
|
+
elements.push(paraElement);
|
|
251
|
+
});
|
|
252
|
+
methodParameter.setArrayElements(elements);
|
|
253
|
+
}
|
|
184
254
|
function buildParameters(params, arkInstance, sourceFile) {
|
|
185
255
|
let parameters = [];
|
|
186
256
|
params.forEach((parameter) => {
|
|
@@ -190,71 +260,10 @@ function buildParameters(params, arkInstance, sourceFile) {
|
|
|
190
260
|
methodParameter.setName(parameter.name.text);
|
|
191
261
|
}
|
|
192
262
|
else if (ohos_typescript_1.default.isObjectBindingPattern(parameter.name)) {
|
|
193
|
-
methodParameter.
|
|
194
|
-
let elements = [];
|
|
195
|
-
parameter.name.elements.forEach((element) => {
|
|
196
|
-
let paraElement = new ArkMethodBuilder_1.ObjectBindingPatternParameter();
|
|
197
|
-
if (element.propertyName) {
|
|
198
|
-
if (ohos_typescript_1.default.isIdentifier(element.propertyName)) {
|
|
199
|
-
paraElement.setPropertyName(element.propertyName.text);
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
logger.warn('New propertyName of ObjectBindingPattern found, please contact developers to support this!');
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
if (element.name) {
|
|
206
|
-
if (ohos_typescript_1.default.isIdentifier(element.name)) {
|
|
207
|
-
paraElement.setName(element.name.text);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
logger.warn('New name of ObjectBindingPattern found, please contact developers to support this!');
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
if (element.initializer) {
|
|
214
|
-
logger.warn('TODO: support ObjectBindingPattern initializer.');
|
|
215
|
-
}
|
|
216
|
-
if (element.dotDotDotToken) {
|
|
217
|
-
paraElement.setOptional(true);
|
|
218
|
-
}
|
|
219
|
-
elements.push(paraElement);
|
|
220
|
-
});
|
|
221
|
-
methodParameter.setObjElements(elements);
|
|
263
|
+
buildObjectBindingPatternParam(methodParameter, parameter.name);
|
|
222
264
|
}
|
|
223
265
|
else if (ohos_typescript_1.default.isArrayBindingPattern(parameter.name)) {
|
|
224
|
-
methodParameter.
|
|
225
|
-
let elements = [];
|
|
226
|
-
parameter.name.elements.forEach((element) => {
|
|
227
|
-
let paraElement = new ArkMethodBuilder_1.ArrayBindingPatternParameter();
|
|
228
|
-
if (ohos_typescript_1.default.isBindingElement(element)) {
|
|
229
|
-
if (element.propertyName) {
|
|
230
|
-
if (ohos_typescript_1.default.isIdentifier(element.propertyName)) {
|
|
231
|
-
paraElement.setPropertyName(element.propertyName.text);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
logger.warn('New propertyName of ArrayBindingPattern found, please contact developers to support this!');
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
if (element.name) {
|
|
238
|
-
if (ohos_typescript_1.default.isIdentifier(element.name)) {
|
|
239
|
-
paraElement.setName(element.name.text);
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
logger.warn('New name of ArrayBindingPattern found, please contact developers to support this!');
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
if (element.initializer) {
|
|
246
|
-
logger.warn('TODO: support ArrayBindingPattern initializer.');
|
|
247
|
-
}
|
|
248
|
-
if (element.dotDotDotToken) {
|
|
249
|
-
paraElement.setOptional(true);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
else if (ohos_typescript_1.default.isOmittedExpression(element)) {
|
|
253
|
-
logger.warn('TODO: support OmittedExpression for ArrayBindingPattern parameter name.');
|
|
254
|
-
}
|
|
255
|
-
elements.push(paraElement);
|
|
256
|
-
});
|
|
257
|
-
methodParameter.setArrayElements(elements);
|
|
266
|
+
buildArrayBindingPatternParam(methodParameter, parameter.name);
|
|
258
267
|
}
|
|
259
268
|
else {
|
|
260
269
|
logger.warn('Parameter name is not identifier, ObjectBindingPattern nor ArrayBindingPattern, please contact developers to support this!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeArkIR.d.ts","sourceRoot":"","sources":["../../src/save/serializeArkIR.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKhD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,KAAK,CAY1F;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,KAAK,CAS1F;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAWxE;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAe,GACzB,IAAI,CAcN;
|
|
1
|
+
{"version":3,"file":"serializeArkIR.d.ts","sourceRoot":"","sources":["../../src/save/serializeArkIR.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKhD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,KAAK,CAY1F;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,KAAK,CAS1F;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAWxE;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAe,GACzB,IAAI,CAcN;AAgMD,eAAO,MAAM,OAAO,SAqCd,CAAC"}
|
|
@@ -81,9 +81,7 @@ function serializeScene(scene, outDir, verbose = false) {
|
|
|
81
81
|
}
|
|
82
82
|
exports.serializeScene = serializeScene;
|
|
83
83
|
function serializeSingleTsFile(input, output, options) {
|
|
84
|
-
|
|
85
|
-
console.log(`Serializing TS file to JSON: '${input}' -> '${output}'`);
|
|
86
|
-
}
|
|
84
|
+
options.verbose && console.log(`Serializing TS file to JSON: '${input}' -> '${output}'`);
|
|
87
85
|
let filepath = path_1.default.resolve(input);
|
|
88
86
|
let projectDir = path_1.default.dirname(filepath);
|
|
89
87
|
const scene = buildSceneFromSingleFile(filepath, options.verbose);
|
|
@@ -95,28 +93,20 @@ function serializeSingleTsFile(input, output, options) {
|
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
95
|
if (options.inferTypes) {
|
|
98
|
-
|
|
99
|
-
console.log('Inferring types...');
|
|
100
|
-
}
|
|
96
|
+
options.verbose && console.log('Inferring types...');
|
|
101
97
|
scene.inferTypes();
|
|
102
98
|
if (options.inferTypes > 1) {
|
|
103
99
|
for (let i = 1; i < options.inferTypes; i++) {
|
|
104
|
-
|
|
105
|
-
console.log(`Inferring types one more time (${i + 1} / ${options.inferTypes})...`);
|
|
106
|
-
}
|
|
100
|
+
options.verbose && console.log(`Inferring types one more time (${i + 1} / ${options.inferTypes})...`);
|
|
107
101
|
scene.inferTypes();
|
|
108
102
|
}
|
|
109
103
|
}
|
|
110
104
|
}
|
|
111
105
|
if (options.entrypoint) {
|
|
112
|
-
|
|
113
|
-
console.log('Generating entrypoint...');
|
|
114
|
-
}
|
|
106
|
+
options.verbose && console.log('Generating entrypoint...');
|
|
115
107
|
PointerAnalysis_1.PointerAnalysis.pointerAnalysisForWholeProject(scene);
|
|
116
108
|
}
|
|
117
|
-
|
|
118
|
-
console.log('Extracting single ArkFile...');
|
|
119
|
-
}
|
|
109
|
+
options.verbose && console.log('Extracting single ArkFile...');
|
|
120
110
|
if (files.length === 0) {
|
|
121
111
|
console.error(`ERROR: No files found in the project directory '${projectDir}'.`);
|
|
122
112
|
process.exit(1);
|
|
@@ -128,6 +118,10 @@ function serializeSingleTsFile(input, output, options) {
|
|
|
128
118
|
// Note: we explicitly push a single path to the project files (in config),
|
|
129
119
|
// so we expect there is only *one* ArkFile in the scene.
|
|
130
120
|
let arkFile = scene.getFiles()[0];
|
|
121
|
+
serializeFile(arkFile, output, options, scene);
|
|
122
|
+
options.verbose && console.log('All done!');
|
|
123
|
+
}
|
|
124
|
+
function serializeFile(arkFile, output, options, scene) {
|
|
131
125
|
let outPath;
|
|
132
126
|
if (fs_1.default.existsSync(output) && fs_1.default.statSync(output).isDirectory()) {
|
|
133
127
|
outPath = path_1.default.join(output, arkFile.getName() + '.json');
|
|
@@ -156,9 +150,6 @@ function serializeSingleTsFile(input, output, options) {
|
|
|
156
150
|
console.log(`Serializing entrypoint to '${outPath}'...`);
|
|
157
151
|
printer.dumpToJson(arkFile, outPath);
|
|
158
152
|
}
|
|
159
|
-
if (options.verbose) {
|
|
160
|
-
console.log('All done!');
|
|
161
|
-
}
|
|
162
153
|
}
|
|
163
154
|
function serializeMultipleTsFiles(inputDir, outDir, options) {
|
|
164
155
|
console.log(`Serializing multiple TS files to JSON: '${inputDir}' -> '${outDir}'`);
|
|
@@ -185,9 +176,7 @@ function serializeMultipleTsFiles(inputDir, outDir, options) {
|
|
|
185
176
|
scene.inferTypes();
|
|
186
177
|
if (options.inferTypes > 1) {
|
|
187
178
|
for (let i = 1; i < options.inferTypes; i++) {
|
|
188
|
-
|
|
189
|
-
console.log(`Inferring types one more time (${i + 1} / ${options.inferTypes})...`);
|
|
190
|
-
}
|
|
179
|
+
options.verbose && console.log(`Inferring types one more time (${i + 1} / ${options.inferTypes})...`);
|
|
191
180
|
scene.inferTypes();
|
|
192
181
|
}
|
|
193
182
|
}
|
|
@@ -225,9 +214,7 @@ function serializeTsProject(inputDir, outDir, options) {
|
|
|
225
214
|
scene.inferTypes();
|
|
226
215
|
if (options.inferTypes > 1) {
|
|
227
216
|
for (let i = 1; i < options.inferTypes; i++) {
|
|
228
|
-
|
|
229
|
-
console.log(`Inferring types one more time (${i + 1} / ${options.inferTypes})...`);
|
|
230
|
-
}
|
|
217
|
+
options.verbose && console.log(`Inferring types one more time (${i + 1} / ${options.inferTypes})...`);
|
|
231
218
|
scene.inferTypes();
|
|
232
219
|
}
|
|
233
220
|
}
|
|
@@ -231,12 +231,13 @@ class SourceBody {
|
|
|
231
231
|
for (let i = stmts.length - 1; i > 0; i--) {
|
|
232
232
|
if (stmts[i] instanceof Stmt_1.ArkInvokeStmt && stmts[i].getInvokeExpr()) {
|
|
233
233
|
let instanceInvokeExpr = stmts[i].getInvokeExpr();
|
|
234
|
-
if ('constructor'
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
234
|
+
if ('constructor' !== instanceInvokeExpr.getMethodSignature().getMethodSubSignature().getMethodName()) {
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
let localName = instanceInvokeExpr.getBase().getName();
|
|
238
|
+
let newExprIdx = findNewExpr(i, localName);
|
|
239
|
+
if (newExprIdx >= 0 && newExprIdx < i - 1) {
|
|
240
|
+
moveStmt(i, newExprIdx);
|
|
240
241
|
}
|
|
241
242
|
}
|
|
242
243
|
}
|
|
@@ -246,10 +247,9 @@ class SourceBody {
|
|
|
246
247
|
if (!(stmts[j] instanceof Stmt_1.ArkAssignStmt)) {
|
|
247
248
|
continue;
|
|
248
249
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
250
|
+
const leftOp = stmts[j].getLeftOp();
|
|
251
|
+
if (leftOp instanceof Local_1.Local && leftOp.getName() === name) {
|
|
252
|
+
return j;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
return -1;
|