arkanalyzer 1.0.39 → 1.0.41

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.
Files changed (103) hide show
  1. package/config/arkanalyzer.json +6 -2
  2. package/lib/Config.d.ts +1 -0
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Scene.d.ts +6 -5
  5. package/lib/Scene.d.ts.map +1 -1
  6. package/lib/Scene.js +36 -18
  7. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
  8. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +3 -4
  9. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  10. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +7 -8
  11. package/lib/callgraph/model/CallGraph.d.ts +5 -5
  12. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  13. package/lib/callgraph/model/CallGraph.js +18 -21
  14. package/lib/callgraph/model/CallSite.d.ts +16 -6
  15. package/lib/callgraph/model/CallSite.d.ts.map +1 -1
  16. package/lib/callgraph/model/CallSite.js +48 -8
  17. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +0 -1
  18. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
  19. package/lib/callgraph/model/builder/CallGraphBuilder.js +0 -8
  20. package/lib/callgraph/pointerAnalysis/Pag.d.ts +3 -6
  21. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/Pag.js +6 -29
  23. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +6 -15
  24. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  25. package/lib/callgraph/pointerAnalysis/PagBuilder.js +61 -85
  26. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -1
  27. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  28. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +12 -8
  29. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +10 -3
  30. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
  31. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +20 -5
  32. package/lib/callgraph/pointerAnalysis/context/Context.d.ts +69 -0
  33. package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -0
  34. package/lib/callgraph/pointerAnalysis/context/Context.js +202 -0
  35. package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts +40 -0
  36. package/lib/callgraph/pointerAnalysis/context/ContextItem.d.ts.map +1 -0
  37. package/lib/callgraph/pointerAnalysis/context/ContextItem.js +99 -0
  38. package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts +46 -0
  39. package/lib/callgraph/pointerAnalysis/context/ContextSelector.d.ts.map +1 -0
  40. package/lib/callgraph/pointerAnalysis/context/ContextSelector.js +138 -0
  41. package/lib/core/base/Expr.d.ts.map +1 -1
  42. package/lib/core/base/Expr.js +11 -1
  43. package/lib/core/base/Local.js +1 -1
  44. package/lib/core/common/ArkIRTransformer.d.ts +2 -0
  45. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  46. package/lib/core/common/ArkIRTransformer.js +90 -0
  47. package/lib/core/common/ArkValueTransformer.d.ts +1 -1
  48. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  49. package/lib/core/common/ArkValueTransformer.js +48 -33
  50. package/lib/core/common/Builtin.d.ts.map +1 -1
  51. package/lib/core/common/Builtin.js +2 -2
  52. package/lib/core/common/DummyMainCreater.js +1 -1
  53. package/lib/core/common/IRInference.d.ts +1 -0
  54. package/lib/core/common/IRInference.d.ts.map +1 -1
  55. package/lib/core/common/IRInference.js +60 -44
  56. package/lib/core/common/ModelUtils.d.ts +1 -0
  57. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  58. package/lib/core/common/ModelUtils.js +7 -0
  59. package/lib/core/common/SdkUtils.d.ts +14 -1
  60. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  61. package/lib/core/common/SdkUtils.js +118 -24
  62. package/lib/core/common/TypeInference.d.ts +2 -1
  63. package/lib/core/common/TypeInference.d.ts.map +1 -1
  64. package/lib/core/common/TypeInference.js +21 -12
  65. package/lib/core/common/ValueUtil.d.ts +1 -0
  66. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  67. package/lib/core/common/ValueUtil.js +7 -0
  68. package/lib/core/graph/BaseExplicitGraph.d.ts +1 -0
  69. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  70. package/lib/core/graph/BaseExplicitGraph.js +3 -0
  71. package/lib/core/graph/Scc.js +1 -1
  72. package/lib/core/graph/builder/CfgBuilder.d.ts +2 -0
  73. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  74. package/lib/core/graph/builder/CfgBuilder.js +59 -7
  75. package/lib/core/model/ArkImport.js +1 -1
  76. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  77. package/lib/core/model/ArkMethod.js +8 -2
  78. package/lib/core/model/builder/ArkClassBuilder.js +21 -1
  79. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  80. package/lib/core/model/builder/ArkMethodBuilder.js +2 -2
  81. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  82. package/lib/core/model/builder/builderUtils.js +2 -1
  83. package/lib/index.d.ts +0 -1
  84. package/lib/index.d.ts.map +1 -1
  85. package/lib/index.js +2 -4
  86. package/lib/save/JsonPrinter.d.ts +1 -0
  87. package/lib/save/JsonPrinter.d.ts.map +1 -1
  88. package/lib/save/JsonPrinter.js +15 -5
  89. package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -1
  90. package/lib/save/arkir/ArkIRMethodPrinter.js +13 -5
  91. package/lib/save/source/SourceBody.d.ts +1 -1
  92. package/lib/save/source/SourceBody.d.ts.map +1 -1
  93. package/lib/save/source/SourceBody.js +3 -2
  94. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  95. package/lib/save/source/SourceStmt.js +12 -4
  96. package/lib/save/source/SourceTransformer.d.ts +3 -3
  97. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  98. package/lib/save/source/SourceTransformer.js +11 -10
  99. package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
  100. package/package.json +7 -7
  101. package/lib/callgraph/pointerAnalysis/Context.d.ts +0 -38
  102. package/lib/callgraph/pointerAnalysis/Context.d.ts.map +0 -1
  103. package/lib/callgraph/pointerAnalysis/Context.js +0 -154
@@ -159,6 +159,9 @@ class ArkIRTransformer {
159
159
  else if (ts.isClassDeclaration(node)) {
160
160
  stmts = this.classDeclarationToStmts(node);
161
161
  }
162
+ else if (ts.isParameter(node)) {
163
+ stmts = this.parameterToStmts(node);
164
+ }
162
165
  this.mapStmtsToTsStmt(stmts, node);
163
166
  if (stmts.length > 0) {
164
167
  IRUtils_1.IRUtils.setComments(stmts[0], node, this.sourceFile, this.declaringMethod.getDeclaringArkFile().getScene().getOptions());
@@ -187,6 +190,93 @@ class ArkIRTransformer {
187
190
  (0, ArkClassBuilder_1.buildNormalArkClassFromArkMethod)(node, cls, this.sourceFile, this.declaringMethod);
188
191
  return [];
189
192
  }
193
+ // This is only used to add class property assign stmts into constructor when it is with parameter property.
194
+ parameterPropertyToStmts(paramNode) {
195
+ var _a, _b, _c;
196
+ let stmts = [];
197
+ let fieldName;
198
+ if (ts.isIdentifier(paramNode.name)) {
199
+ fieldName = paramNode.name.text;
200
+ }
201
+ else if (ts.isObjectBindingPattern(paramNode.name)) {
202
+ // TODO
203
+ return stmts;
204
+ }
205
+ else if (ts.isArrayBindingPattern(paramNode.name)) {
206
+ // TODO
207
+ return stmts;
208
+ }
209
+ else {
210
+ return stmts;
211
+ }
212
+ if (paramNode.modifiers === undefined || !ts.isIdentifier(paramNode.name)) {
213
+ return [];
214
+ }
215
+ const arkClass = this.declaringMethod.getDeclaringArkClass();
216
+ const fieldSignature = (_a = arkClass.getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature();
217
+ const paramLocal = Array.from(this.getLocals()).find(local => local.getName() === fieldName);
218
+ if (fieldSignature === undefined || paramLocal === undefined) {
219
+ return [];
220
+ }
221
+ const leftOp = new Ref_1.ArkInstanceFieldRef(this.getThisLocal(), fieldSignature);
222
+ const fieldAssignStmt = new Stmt_1.ArkAssignStmt(leftOp, paramLocal);
223
+ fieldAssignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT]);
224
+ // If the parameter has initializer, the related stmts should be added into class instance init method.
225
+ const instInitMethodCfg = (_b = arkClass.getInstanceInitMethod().getBody()) === null || _b === void 0 ? void 0 : _b.getCfg();
226
+ const instInitStmts = (_c = instInitMethodCfg === null || instInitMethodCfg === void 0 ? void 0 : instInitMethodCfg.getStartingBlock()) === null || _c === void 0 ? void 0 : _c.getStmts();
227
+ if (paramNode.initializer && instInitStmts && instInitMethodCfg) {
228
+ const { value: instanceInitValue, valueOriginalPositions: instanceInitPositions, stmts: instanceInitStmts, } = this.tsNodeToValueAndStmts(paramNode.initializer);
229
+ const instanceAssignStmt = new Stmt_1.ArkAssignStmt(leftOp, instanceInitValue);
230
+ instanceAssignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT, ...instanceInitPositions]);
231
+ const newInstanceInitStmts = [...instanceInitStmts, instanceAssignStmt];
232
+ // All these stmts will be added into instance init method, while that method has completed the building. So all new stmts should set cfg here.
233
+ newInstanceInitStmts.forEach(stmt => stmt.setCfg(instInitMethodCfg));
234
+ // The last stmt of instance init method is return stmt, so all the initializer stmts should be added before return stmt.
235
+ instInitStmts.splice(instInitStmts.length - 1, 0, ...newInstanceInitStmts);
236
+ }
237
+ return [fieldAssignStmt];
238
+ }
239
+ parameterToStmts(paramNode) {
240
+ if (this.declaringMethod.getName() === TSConst_1.CONSTRUCTOR_NAME && paramNode.modifiers) {
241
+ return this.parameterPropertyToStmts(paramNode);
242
+ }
243
+ let stmts = [];
244
+ if (paramNode.initializer === undefined) {
245
+ return stmts;
246
+ }
247
+ let paramName;
248
+ if (ts.isIdentifier(paramNode.name)) {
249
+ paramName = paramNode.name.text;
250
+ }
251
+ else if (ts.isObjectBindingPattern(paramNode.name)) {
252
+ // TODO
253
+ return stmts;
254
+ }
255
+ else if (ts.isArrayBindingPattern(paramNode.name)) {
256
+ // TODO
257
+ return stmts;
258
+ }
259
+ else {
260
+ return stmts;
261
+ }
262
+ const paramLocal = Array.from(this.getLocals()).find(local => local.getName() === paramName);
263
+ if (paramLocal === undefined) {
264
+ return stmts;
265
+ }
266
+ const { value: paramInitValue, valueOriginalPositions: paramInitPositions, stmts: paramInitStmts, } = this.tsNodeToValueAndStmts(paramNode.initializer);
267
+ stmts.push(...paramInitStmts);
268
+ const ifStmt = new Stmt_1.ArkIfStmt(new Expr_1.ArkConditionExpr(paramLocal, ValueUtil_1.ValueUtil.getUndefinedConst(), Expr_1.RelationalBinaryOperator.Equality));
269
+ ifStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT]);
270
+ stmts.push(ifStmt);
271
+ const currConditionalOperatorIndex = this.arkValueTransformer.conditionalOperatorNo++;
272
+ stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_IF_TRUE_STMT + currConditionalOperatorIndex));
273
+ const assignStmt = new Stmt_1.ArkAssignStmt(paramLocal, paramInitValue);
274
+ assignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, ...paramInitPositions]);
275
+ stmts.push(assignStmt);
276
+ stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_IF_FALSE_STMT + currConditionalOperatorIndex));
277
+ stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_END_STMT + currConditionalOperatorIndex));
278
+ return stmts;
279
+ }
190
280
  returnStatementToStmts(returnStatement) {
191
281
  const stmts = [];
192
282
  if (returnStatement.expression) {
@@ -6,7 +6,7 @@ import { GlobalRef } from '../base/Ref';
6
6
  import { ArkMethod } from '../model/ArkMethod';
7
7
  import { ArkIRTransformer, ValueAndStmts } from './ArkIRTransformer';
8
8
  export declare class ArkValueTransformer {
9
- private conditionalOperatorNo;
9
+ conditionalOperatorNo: number;
10
10
  private tempLocalNo;
11
11
  private sourceFile;
12
12
  private locals;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAiD,MAAM,cAAc,CAAC;AAuBrG,OAAO,EACH,SAAS,EAcT,IAAI,EAMP,MAAM,cAAc,CAAC;AAetB,OAAO,EAAyE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAAE,gBAAgB,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOhF,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAQ9F,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,IAAgC,GAAG,KAAK;IAMlF,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,YAAY;IAOb,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAkE1D,OAAO,CAAC,kCAAkC;IAW1C,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,oCAAoC;IA4C5C,OAAO,CAAC,qCAAqC;IAwC7C,OAAO,CAAC,2BAA2B;IA6BnC,OAAO,CAAC,sBAAsB;IAmD9B,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,qCAAqC;IAU7C,OAAO,CAAC,8BAA8B;IAoBtC,OAAO,CAAC,iCAAiC;IAYzC,OAAO,CAAC,2BAA2B;IA8CnC,OAAO,CAAC,oBAAoB;IAqD5B,OAAO,CAAC,uCAAuC;IAoD/C,OAAO,CAAC,qBAAqB;IAgD7B,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,+BAA+B;IA2DvC,OAAO,CAAC,sCAAsC;IA4C9C,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,2BAA2B;IAiEnC,OAAO,CAAC,8BAA8B;IA+BtC,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,4BAA4B;IAgDpC,OAAO,CAAC,iCAAiC;IA0CzC,OAAO,CAAC,qCAAqC;IA0C7C,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,oCAAoC;IAmD5C,OAAO,CAAC,qCAAqC;IAoC7C,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,8BAA8B;IAiBtC,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,sCAAsC;IAI9C,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,2BAA2B;IAqBnC,OAAO,CAAC,4BAA4B;IAW7B,sCAAsC,CAAC,uBAAuB,EAAE,EAAE,CAAC,uBAAuB,GAAG,aAAa;IAc1G,kCAAkC,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAE,OAAc,GAAG,aAAa;IAOpJ,OAAO,CAAC,yBAAyB;IAkEjC,OAAO,CAAC,gCAAgC;IA4BxC,OAAO,CAAC,iCAAiC;IA2BzC,OAAO,CAAC,kCAAkC;IA0C1C,OAAO,CAAC,+BAA+B;IA0DvC,OAAO,CAAC,iCAAiC;IAuCzC,OAAO,CAAC,uCAAuC;IAqCxC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,GAAG,aAAa;IA2BxE,OAAO,CAAC,0BAA0B;IA6ClC,OAAO,CAAC,gBAAgB;IAUjB,iBAAiB,CAAC,SAAS,GAAE,IAAgC,GAAG,KAAK;IAQ5E,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,aAAa;IAiBd,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IA+D/C,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,uBAAuB;WAqBjB,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IAmB1G,OAAO,CAAC,8BAA8B;IA6CtC,OAAO,CAAC,wBAAwB;IAqChC,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,uBAAuB;WAOjB,4BAA4B,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO;CAoB/E"}
1
+ {"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAiD,MAAM,cAAc,CAAC;AAuBrG,OAAO,EACH,SAAS,EAcT,IAAI,EAMP,MAAM,cAAc,CAAC;AAetB,OAAO,EAAyE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAAE,gBAAgB,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOhF,qBAAa,mBAAmB;IACrB,qBAAqB,EAAE,MAAM,CAAK;IACzC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAQ9F,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,IAAgC,GAAG,KAAK;IAMlF,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,YAAY;IAOb,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAkE1D,OAAO,CAAC,kCAAkC;IAW1C,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,oCAAoC;IA4C5C,OAAO,CAAC,qCAAqC;IAwC7C,OAAO,CAAC,2BAA2B;IA6BnC,OAAO,CAAC,sBAAsB;IAmD9B,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,qCAAqC;IAU7C,OAAO,CAAC,8BAA8B;IAoBtC,OAAO,CAAC,iCAAiC;IAYzC,OAAO,CAAC,2BAA2B;IA8CnC,OAAO,CAAC,oBAAoB;IAqD5B,OAAO,CAAC,uCAAuC;IAoD/C,OAAO,CAAC,qBAAqB;IAgD7B,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,+BAA+B;IA2DvC,OAAO,CAAC,sCAAsC;IA4C9C,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,2BAA2B;IAsEnC,OAAO,CAAC,8BAA8B;IA+BtC,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,4BAA4B;IAgDpC,OAAO,CAAC,iCAAiC;IA0CzC,OAAO,CAAC,qCAAqC;IA0C7C,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,oCAAoC;IAqD5C,OAAO,CAAC,qCAAqC;IAkD7C,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,8BAA8B;IAiBtC,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,sCAAsC;IAI9C,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,2BAA2B;IAqBnC,OAAO,CAAC,4BAA4B;IAW7B,sCAAsC,CAAC,uBAAuB,EAAE,EAAE,CAAC,uBAAuB,GAAG,aAAa;IAc1G,kCAAkC,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAE,OAAc,GAAG,aAAa;IAOpJ,OAAO,CAAC,yBAAyB;IAkEjC,OAAO,CAAC,gCAAgC;IA4BxC,OAAO,CAAC,iCAAiC;IA2BzC,OAAO,CAAC,kCAAkC;IA0C1C,OAAO,CAAC,+BAA+B;IA0DvC,OAAO,CAAC,iCAAiC;IAuCzC,OAAO,CAAC,uCAAuC;IAqCxC,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,GAAG,aAAa;IA2BxE,OAAO,CAAC,0BAA0B;IA6ClC,OAAO,CAAC,gBAAgB;IAUjB,iBAAiB,CAAC,SAAS,GAAE,IAAgC,GAAG,KAAK;IAQ5E,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,aAAa;IAiBd,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IA+D/C,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,uBAAuB;WAqBjB,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IAmB1G,OAAO,CAAC,8BAA8B;IA6CtC,OAAO,CAAC,wBAAwB;IAqChC,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,uBAAuB;WAOjB,4BAA4B,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO;CAoB/E"}
@@ -657,6 +657,12 @@ class ArkValueTransformer {
657
657
  invokeValue = new Expr_1.ArkStaticInvokeExpr(methodSignature, args, realGenericTypes);
658
658
  }
659
659
  }
660
+ else if (callerValue instanceof Ref_1.ArkArrayRef && ts.isElementAccessExpression(functionNameNode)) {
661
+ const methodSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSignatureFromMethodName(functionNameNode.argumentExpression.getText());
662
+ invokeValue = new Expr_1.ArkInstanceInvokeExpr(callerValue.getBase(), methodSignature, args, realGenericTypes);
663
+ invokeValuePositions.push(...callerPositions.slice(1));
664
+ stmts.pop();
665
+ }
660
666
  else {
661
667
  ({
662
668
  value: callerValue,
@@ -864,16 +870,22 @@ class ArkValueTransformer {
864
870
  }
865
871
  prefixUnaryExpressionToValueAndStmts(prefixUnaryExpression) {
866
872
  const stmts = [];
867
- let { value: operandValue, valueOriginalPositions: operandPositions, stmts: operandStmts } = this.tsNodeToValueAndStmts(prefixUnaryExpression.operand);
873
+ let { value: originOperandValue, valueOriginalPositions: originOperandPositions, stmts: operandStmts, } = this.tsNodeToValueAndStmts(prefixUnaryExpression.operand);
868
874
  operandStmts.forEach(stmt => stmts.push(stmt));
869
- if (IRUtils_1.IRUtils.moreThanOneAddress(operandValue)) {
875
+ let operandValue;
876
+ let operandPositions;
877
+ if (IRUtils_1.IRUtils.moreThanOneAddress(originOperandValue)) {
870
878
  ({
871
879
  value: operandValue,
872
880
  valueOriginalPositions: operandPositions,
873
881
  stmts: operandStmts,
874
- } = this.arkIRTransformer.generateAssignStmtForValue(operandValue, operandPositions));
882
+ } = this.arkIRTransformer.generateAssignStmtForValue(originOperandValue, originOperandPositions));
875
883
  operandStmts.forEach(stmt => stmts.push(stmt));
876
884
  }
885
+ else {
886
+ operandValue = originOperandValue;
887
+ operandPositions = originOperandPositions;
888
+ }
877
889
  const operatorToken = prefixUnaryExpression.operator;
878
890
  let exprPositions = [Position_1.FullPosition.buildFromNode(prefixUnaryExpression, this.sourceFile)];
879
891
  if (operatorToken === ts.SyntaxKind.PlusPlusToken || operatorToken === ts.SyntaxKind.MinusMinusToken) {
@@ -883,18 +895,15 @@ class ArkValueTransformer {
883
895
  const assignStmt = new Stmt_1.ArkAssignStmt(operandValue, binopExpr);
884
896
  assignStmt.setOperandOriginalPositions([...operandPositions, ...exprPositions]);
885
897
  stmts.push(assignStmt);
886
- return {
887
- value: operandValue,
888
- valueOriginalPositions: operandPositions,
889
- stmts: stmts,
890
- };
898
+ if (operandValue !== originOperandValue) {
899
+ const lastAssignStmt = new Stmt_1.ArkAssignStmt(originOperandValue, operandValue);
900
+ lastAssignStmt.setOperandOriginalPositions([...originOperandPositions, ...operandPositions]);
901
+ stmts.push(lastAssignStmt);
902
+ }
903
+ return { value: originOperandValue, valueOriginalPositions: originOperandPositions, stmts: stmts };
891
904
  }
892
905
  else if (operatorToken === ts.SyntaxKind.PlusToken) {
893
- return {
894
- value: operandValue,
895
- valueOriginalPositions: operandPositions,
896
- stmts: stmts,
897
- };
906
+ return { value: operandValue, valueOriginalPositions: operandPositions, stmts: stmts };
898
907
  }
899
908
  else {
900
909
  let unopExpr;
@@ -907,26 +916,27 @@ class ArkValueTransformer {
907
916
  unopExpr = ValueUtil_1.ValueUtil.getUndefinedConst();
908
917
  exprPositions = [Position_1.FullPosition.DEFAULT];
909
918
  }
910
- return {
911
- value: unopExpr,
912
- valueOriginalPositions: exprPositions,
913
- stmts: stmts,
914
- };
919
+ return { value: unopExpr, valueOriginalPositions: exprPositions, stmts: stmts };
915
920
  }
916
921
  }
917
922
  postfixUnaryExpressionToValueAndStmts(postfixUnaryExpression) {
918
923
  const stmts = [];
919
- let { value: operandValue, valueOriginalPositions: operandPositions, stmts: exprStmts } = this.tsNodeToValueAndStmts(postfixUnaryExpression.operand);
924
+ let { value: originOperandValue, valueOriginalPositions: originOperandPositions, stmts: exprStmts, } = this.tsNodeToValueAndStmts(postfixUnaryExpression.operand);
920
925
  exprStmts.forEach(stmt => stmts.push(stmt));
921
- if (IRUtils_1.IRUtils.moreThanOneAddress(operandValue)) {
926
+ let operandValue;
927
+ let operandPositions;
928
+ if (IRUtils_1.IRUtils.moreThanOneAddress(originOperandValue)) {
922
929
  ({
923
930
  value: operandValue,
924
931
  valueOriginalPositions: operandPositions,
925
932
  stmts: exprStmts,
926
- } = this.arkIRTransformer.generateAssignStmtForValue(operandValue, operandPositions));
933
+ } = this.arkIRTransformer.generateAssignStmtForValue(originOperandValue, originOperandPositions));
927
934
  exprStmts.forEach(stmt => stmts.push(stmt));
928
935
  }
929
- let value;
936
+ else {
937
+ operandValue = originOperandValue;
938
+ operandPositions = originOperandPositions;
939
+ }
930
940
  let exprPositions = [Position_1.FullPosition.buildFromNode(postfixUnaryExpression, this.sourceFile)];
931
941
  const operatorToken = postfixUnaryExpression.operator;
932
942
  if (operatorToken === ts.SyntaxKind.PlusPlusToken || operatorToken === ts.SyntaxKind.MinusMinusToken) {
@@ -936,15 +946,20 @@ class ArkValueTransformer {
936
946
  const assignStmt = new Stmt_1.ArkAssignStmt(operandValue, binopExpr);
937
947
  assignStmt.setOperandOriginalPositions([...operandPositions, ...exprPositions]);
938
948
  stmts.push(assignStmt);
939
- value = operandValue;
940
- }
941
- else {
942
- value = ValueUtil_1.ValueUtil.getUndefinedConst();
943
- exprPositions = [Position_1.FullPosition.DEFAULT];
949
+ if (operandValue !== originOperandValue) {
950
+ const lastAssignStmt = new Stmt_1.ArkAssignStmt(originOperandValue, operandValue);
951
+ lastAssignStmt.setOperandOriginalPositions([...originOperandPositions, ...operandPositions]);
952
+ stmts.push(lastAssignStmt);
953
+ }
954
+ return {
955
+ value: originOperandValue,
956
+ valueOriginalPositions: originOperandPositions,
957
+ stmts: stmts,
958
+ };
944
959
  }
945
960
  return {
946
- value: value,
947
- valueOriginalPositions: exprPositions,
961
+ value: ValueUtil_1.ValueUtil.getUndefinedConst(),
962
+ valueOriginalPositions: [Position_1.FullPosition.DEFAULT],
948
963
  stmts: stmts,
949
964
  };
950
965
  }
@@ -1619,7 +1634,8 @@ class ArkValueTransformer {
1619
1634
  return templateTypes[0];
1620
1635
  }
1621
1636
  resolveTypeReferenceNode(typeReferenceNode) {
1622
- const typeReferenceFullName = typeReferenceNode.typeName.getText(this.sourceFile);
1637
+ const typeReferenceFullName = ts.isIdentifier(typeReferenceNode.typeName) ? typeReferenceNode.typeName.text :
1638
+ typeReferenceNode.typeName.getText(this.sourceFile);
1623
1639
  if (typeReferenceFullName === Builtin_1.Builtin.OBJECT) {
1624
1640
  return Builtin_1.Builtin.OBJECT_CLASS_TYPE;
1625
1641
  }
@@ -1631,12 +1647,11 @@ class ArkValueTransformer {
1631
1647
  }
1632
1648
  }
1633
1649
  if (!aliasTypeAndStmt) {
1634
- const typeName = typeReferenceNode.typeName.getText(this.sourceFile);
1635
- const local = this.locals.get(typeName);
1650
+ const local = this.locals.get(typeReferenceFullName);
1636
1651
  if (local !== undefined) {
1637
1652
  return local.getType();
1638
1653
  }
1639
- return new Type_1.UnclearReferenceType(typeName, genericTypes);
1654
+ return new Type_1.UnclearReferenceType(typeReferenceFullName, genericTypes);
1640
1655
  }
1641
1656
  else {
1642
1657
  if (genericTypes.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,SAAc;IAC7C,OAAc,QAAQ,SAAc;IACpC,OAAc,aAAa,SAAU;IACrC,OAAc,eAAe,SAAoB;IACjD,OAAc,oBAAoB,SAAU;IAC5C,OAAc,qBAAqB,SAAW;IAE9C,OAAc,wBAAwB,iBAAkD;IACxF,OAAc,+BAA+B,iBAAyD;IACtG,OAAc,mBAAmB,YAAwE;IACzG,OAAc,0BAA0B,YAA+E;IAGvH,OAAc,SAAS,SAAc;IACrC,OAAc,0BAA0B,kBAGtC;IAEF,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,OAAO,CAAC,MAAM,CAAC,gCAAgC;WAIjC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAI3E,OAAO,CAAC,MAAM,CAAC,6BAA6B;WAU9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG3D"}
1
+ {"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,SAAqB;IACpD,OAAc,QAAQ,SAAsB;IAC5C,OAAc,aAAa,SAAU;IACrC,OAAc,eAAe,SAAoB;IACjD,OAAc,oBAAoB,SAAU;IAC5C,OAAc,qBAAqB,SAAW;IAE9C,OAAc,wBAAwB,iBAAkD;IACxF,OAAc,+BAA+B,iBAAyD;IACtG,OAAc,mBAAmB,YAAwE;IACzG,OAAc,0BAA0B,YAA+E;IAGvH,OAAc,SAAS,SAAc;IACrC,OAAc,0BAA0B,kBAGtC;IAEF,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,OAAO,CAAC,MAAM,CAAC,gCAAgC;WAIjC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAI3E,OAAO,CAAC,MAAM,CAAC,6BAA6B;WAU9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG3D"}
@@ -70,8 +70,8 @@ Builtin.REGEXP_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.REGEXP);
70
70
  Builtin.REGEXP_CLASS_TYPE = new Type_1.ClassType(_a.REGEXP_CLASS_SIGNATURE);
71
71
  Builtin.BUILT_IN_CLASS_SIGNATURE_MAP = _a.buildBuiltInClassSignatureMap();
72
72
  // constants for iterator
73
- Builtin.ITERATOR_FUNCTION = 'iterator';
74
- Builtin.ITERATOR = 'Iterator';
73
+ Builtin.ITERATOR_FUNCTION = 'Symbol.iterator';
74
+ Builtin.ITERATOR = 'IterableIterator';
75
75
  Builtin.ITERATOR_NEXT = 'next';
76
76
  Builtin.ITERATOR_RESULT = 'IteratorResult';
77
77
  Builtin.ITERATOR_RESULT_DONE = 'done';
@@ -163,7 +163,7 @@ class DummyMainCreater {
163
163
  let superCls = method.getDeclaringArkClass().getSuperClass();
164
164
  let methodInSuperCls = superCls === null || superCls === void 0 ? void 0 : superCls.getMethodWithName(method.getName());
165
165
  if (methodInSuperCls) {
166
- paramType = (_a = methodInSuperCls.getParameters().at(paramIdx)) === null || _a === void 0 ? void 0 : _a.getType();
166
+ paramType = (_a = methodInSuperCls.getParameters()[paramIdx]) === null || _a === void 0 ? void 0 : _a.getType();
167
167
  method = methodInSuperCls;
168
168
  }
169
169
  }
@@ -38,6 +38,7 @@ export declare class IRInference {
38
38
  private static processForEach;
39
39
  static inferLocal(base: Local, arkMethod: ArkMethod): void;
40
40
  private static generateNewFieldSignature;
41
+ private static repairType;
41
42
  static inferAnonymousClass(anon: ArkClass | null, declaredSignature: ClassSignature, set?: Set<string>): void;
42
43
  private static assignAnonMethod;
43
44
  private static assignAnonField;
@@ -1 +1 @@
1
- {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}
@@ -111,6 +111,10 @@ class IRInference {
111
111
  this.inferExportInfos(file);
112
112
  }
113
113
  static inferStaticInvokeExpr(expr, arkMethod) {
114
+ const fileSignature = expr.getMethodSignature().getDeclaringClassSignature().getDeclaringFileSignature();
115
+ if (fileSignature !== ArkSignature_1.FileSignature.DEFAULT && fileSignature !== Builtin_1.Builtin.BUILT_IN_CLASSES_FILE_SIGNATURE) {
116
+ return expr;
117
+ }
114
118
  const arkClass = arkMethod.getDeclaringArkClass();
115
119
  const methodName = expr.getMethodSignature().getMethodSubSignature().getMethodName();
116
120
  expr.getArgs().forEach(arg => TypeInference_1.TypeInference.inferValueType(arg, arkMethod));
@@ -227,10 +231,12 @@ class IRInference {
227
231
  if (type instanceof Type_1.FunctionType) {
228
232
  const methodSignature = type.getMethodSignature();
229
233
  // because of last stmt is ArkReturnVoidStmt, the ArkInvokeStmt at -2 before ArkReturnVoidStmt.
230
- const endIndex = -2;
231
- const endStmt = (_b = (_a = arkMethod.getDeclaringArkFile().getScene().getMethod(methodSignature)) === null || _a === void 0 ? void 0 : _a.getCfg()) === null || _b === void 0 ? void 0 : _b.getStmts().at(endIndex);
232
- if (endStmt instanceof Stmt_1.ArkInvokeStmt) {
233
- methodSignature.getMethodSubSignature().setReturnType(endStmt.getInvokeExpr().getType());
234
+ const stmts = (_b = (_a = arkMethod.getDeclaringArkFile().getScene().getMethod(methodSignature)) === null || _a === void 0 ? void 0 : _a.getCfg()) === null || _b === void 0 ? void 0 : _b.getStmts();
235
+ if (stmts) {
236
+ const endStmt = stmts[stmts.length - 2];
237
+ if (endStmt instanceof Stmt_1.ArkInvokeStmt) {
238
+ methodSignature.getMethodSubSignature().setReturnType(endStmt.getInvokeExpr().getType());
239
+ }
234
240
  }
235
241
  expr.setMethodSignature(methodSignature);
236
242
  return expr;
@@ -424,18 +430,14 @@ class IRInference {
424
430
  return null;
425
431
  }
426
432
  static inferInvokeExprWithArray(methodName, expr, baseType, scene) {
427
- if (methodName === Builtin_1.Builtin.ITERATOR_FUNCTION) {
428
- const returnType = expr.getMethodSignature().getMethodSubSignature().getReturnType();
429
- if (returnType instanceof Type_1.ClassType && returnType.getClassSignature().getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
430
- expr.setRealGenericTypes([baseType.getBaseType()]);
431
- return expr;
432
- }
433
+ const arrayInterface = scene.getSdkGlobal(Builtin_1.Builtin.ARRAY);
434
+ if (arrayInterface instanceof ArkClass_1.ArkClass) {
435
+ return this.inferInvokeExpr(expr, new Type_1.ClassType(arrayInterface.getSignature(), [baseType.getBaseType()]), methodName, scene);
433
436
  }
434
- else {
435
- const arrayInterface = scene.getSdkGlobal(Builtin_1.Builtin.ARRAY);
436
- if (arrayInterface instanceof ArkClass_1.ArkClass) {
437
- return this.inferInvokeExpr(expr, new Type_1.ClassType(arrayInterface.getSignature(), [baseType.getBaseType()]), methodName, scene);
438
- }
437
+ else if (methodName === Builtin_1.Builtin.ITERATOR_FUNCTION) {
438
+ expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_CLASS_TYPE);
439
+ expr.setRealGenericTypes([baseType.getBaseType()]);
440
+ return expr;
439
441
  }
440
442
  return null;
441
443
  }
@@ -472,7 +474,7 @@ class IRInference {
472
474
  const methodSignature = method.matchMethodSignature(expr.getArgs());
473
475
  TypeInference_1.TypeInference.inferSignatureReturnType(methodSignature, method);
474
476
  expr.setMethodSignature(this.replaceMethodSignature(expr.getMethodSignature(), methodSignature));
475
- expr.setRealGenericTypes(IRInference.getRealTypes(method, declaredClass, baseType));
477
+ expr.setRealGenericTypes(IRInference.getRealTypes(expr, declaredClass, baseType, method));
476
478
  if (method.isStatic() && expr instanceof Expr_1.ArkInstanceInvokeExpr) {
477
479
  return new Expr_1.ArkStaticInvokeExpr(methodSignature, expr.getArgs(), expr.getRealGenericTypes());
478
480
  }
@@ -504,27 +506,36 @@ class IRInference {
504
506
  expr.setMethodSignature(new ArkSignature_1.MethodSignature(baseType.getClassSignature(), subSignature));
505
507
  return expr;
506
508
  }
507
- else if (methodName === Builtin_1.Builtin.ITERATOR_NEXT) {
508
- //sdk隐式构造
509
- const returnType = expr.getMethodSignature().getMethodSubSignature().getReturnType();
510
- if (returnType instanceof Type_1.ClassType && returnType.getClassSignature().getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
511
- returnType.setRealGenericTypes(baseType.getRealGenericTypes());
512
- return expr;
513
- }
509
+ else if (methodName === Builtin_1.Builtin.ITERATOR_NEXT &&
510
+ baseType.getClassSignature().getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
511
+ expr.getMethodSignature().getMethodSubSignature().setReturnType(Builtin_1.Builtin.ITERATOR_RESULT_CLASS_TYPE);
512
+ expr.setRealGenericTypes(baseType.getRealGenericTypes());
513
+ return expr;
514
514
  }
515
515
  return null;
516
516
  }
517
- static getRealTypes(method, declaredClass, baseType) {
517
+ static getRealTypes(expr, declaredClass, baseType, method) {
518
+ var _a;
518
519
  let realTypes;
519
- if (method.getDeclaringArkClass() === declaredClass) {
520
- realTypes = baseType.getRealGenericTypes();
520
+ const tmp = [];
521
+ if (method.getGenericTypes()) {
522
+ expr.getMethodSignature().getMethodSubSignature().getParameters()
523
+ .filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX))
524
+ .forEach((p, i) => {
525
+ if (TypeInference_1.TypeInference.checkType(p.getType(), t => t instanceof Type_1.GenericType)) {
526
+ tmp.push(expr.getArg(i).getType());
527
+ }
528
+ });
521
529
  }
522
- else if (declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getRealTypes()) {
523
- realTypes = declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getRealTypes();
530
+ if (tmp.length > 0) {
531
+ realTypes = tmp;
524
532
  }
525
533
  else if (declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.hasComponentDecorator()) {
526
534
  realTypes = [new Type_1.ClassType(declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getSignature())];
527
535
  }
536
+ else {
537
+ realTypes = (_a = baseType.getRealGenericTypes()) !== null && _a !== void 0 ? _a : declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getRealTypes();
538
+ }
528
539
  return realTypes;
529
540
  }
530
541
  static replaceMethodSignature(init, declared) {
@@ -596,24 +607,13 @@ class IRInference {
596
607
  }
597
608
  const fieldName = ref.getFieldName().replace(/[\"|\']/g, '');
598
609
  const propertyAndType = TypeInference_1.TypeInference.inferFieldType(baseType, fieldName, arkClass);
599
- let propertyType = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[1];
600
- if (!propertyType || propertyType instanceof Type_1.UnknownType) {
601
- const newType = TypeInference_1.TypeInference.inferBaseType(fieldName, arkClass);
602
- if (newType) {
603
- propertyType = newType;
604
- }
605
- }
606
- else if (TypeInference_1.TypeInference.isUnclearType(propertyType)) {
607
- const newType = TypeInference_1.TypeInference.inferUnclearedType(propertyType, arkClass);
608
- if (newType) {
609
- propertyType = newType;
610
- }
611
- }
610
+ let propertyType = IRInference.repairType(propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[1], fieldName, arkClass);
612
611
  let staticFlag;
613
612
  let signature;
614
613
  if (baseType instanceof Type_1.ClassType) {
615
614
  const property = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[0];
616
- if (property instanceof ArkField_1.ArkField && property.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER) {
615
+ if (property instanceof ArkField_1.ArkField && property.getCategory() !== ArkField_1.FieldCategory.ENUM_MEMBER &&
616
+ !(property.getType() instanceof Type_1.GenericType)) {
617
617
  return property.getSignature();
618
618
  }
619
619
  staticFlag =
@@ -630,6 +630,21 @@ class IRInference {
630
630
  }
631
631
  return new ArkSignature_1.FieldSignature(fieldName, signature, propertyType !== null && propertyType !== void 0 ? propertyType : ref.getType(), staticFlag);
632
632
  }
633
+ static repairType(propertyType, fieldName, arkClass) {
634
+ if (!propertyType || propertyType instanceof Type_1.UnknownType) {
635
+ const newType = TypeInference_1.TypeInference.inferBaseType(fieldName, arkClass);
636
+ if (newType) {
637
+ propertyType = newType;
638
+ }
639
+ }
640
+ else if (TypeInference_1.TypeInference.isUnclearType(propertyType)) {
641
+ const newType = TypeInference_1.TypeInference.inferUnclearedType(propertyType, arkClass);
642
+ if (newType) {
643
+ propertyType = newType;
644
+ }
645
+ }
646
+ return propertyType;
647
+ }
633
648
  static inferAnonymousClass(anon, declaredSignature, set = new Set()) {
634
649
  if (!anon) {
635
650
  return;
@@ -675,7 +690,8 @@ class IRInference {
675
690
  }
676
691
  }
677
692
  const type = property.getSignature().getType();
678
- const lastStmt = anonField.getInitializer().at(-1);
693
+ const fieldInitializer = anonField.getInitializer();
694
+ const lastStmt = fieldInitializer[fieldInitializer.length - 1];
679
695
  if (lastStmt instanceof Stmt_1.ArkAssignStmt) {
680
696
  const rightType = lastStmt.getRightOp().getType();
681
697
  if (type instanceof Type_1.ClassType) {
@@ -798,7 +814,7 @@ class IRInference {
798
814
  var _a, _b, _c;
799
815
  const paramType = ref.getType();
800
816
  if (paramType instanceof Type_1.UnknownType || paramType instanceof Type_1.UnclearReferenceType) {
801
- const signature = (_b = (_a = arkMethod.getDeclareSignatures()) === null || _a === void 0 ? void 0 : _a.at(0)) !== null && _b !== void 0 ? _b : arkMethod.getSignature();
817
+ const signature = (_b = (_a = arkMethod.getDeclareSignatures()) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : arkMethod.getSignature();
802
818
  const type1 = (_c = signature.getMethodSubSignature().getParameters()[ref.getIndex()]) === null || _c === void 0 ? void 0 : _c.getType();
803
819
  if (!TypeInference_1.TypeInference.isUnclearType(type1)) {
804
820
  ref.setType(type1);
@@ -11,6 +11,7 @@ import { Scene } from '../../Scene';
11
11
  import { ArkBaseModel } from '../model/ArkBaseModel';
12
12
  export declare class ModelUtils {
13
13
  static implicitArkUIBuilderMethods: Set<ArkMethod>;
14
+ static dispose(): void;
14
15
  static getMethodSignatureFromArkClass(arkClass: ArkClass, methodName: string): MethodSignature | null;
15
16
  static getClassWithNameInNamespaceRecursively(className: string, ns: ArkNamespace): ArkClass | null;
16
17
  static getClassWithNameFromClass(className: string, startFrom: ArkClass): ArkClass | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,13 @@ const Stmt_1 = require("../base/Stmt");
60
60
  const Ref_1 = require("../base/Ref");
61
61
  const SdkUtils_1 = require("./SdkUtils");
62
62
  class ModelUtils {
63
+ /*
64
+ * Set static field to be null, then all related objects could be freed by GC.
65
+ * Static field implicitArkUIBuilderMethods is only used during method body building, the dispose method should be called after build all body.
66
+ */
67
+ static dispose() {
68
+ this.implicitArkUIBuilderMethods.clear();
69
+ }
63
70
  static getMethodSignatureFromArkClass(arkClass, methodName) {
64
71
  for (const arkMethod of arkClass.getMethods()) {
65
72
  if (arkMethod.getName() === methodName) {
@@ -2,11 +2,24 @@ import { ArkFile } from '../model/ArkFile';
2
2
  import { ArkExport } from '../model/ArkExport';
3
3
  import { ArkMethod } from '../model/ArkMethod';
4
4
  import { AbstractFieldRef } from '../base/Ref';
5
+ import { Sdk } from '../../Config';
5
6
  export declare class SdkUtils {
7
+ private static esVersion;
8
+ private static esVersionMap;
6
9
  private static sdkImportMap;
10
+ static BUILT_IN_NAME: string;
11
+ private static BUILT_IN_PATH;
12
+ static BUILT_IN_SDK: Sdk;
13
+ static setEsVersion(buildProfile: any): void;
14
+ static fetchBuiltInFiles(): string[];
15
+ private static dfsFiles;
16
+ static dispose(): void;
7
17
  static buildSdkImportMap(file: ArkFile): void;
8
18
  static getImportSdkFile(from: string): ArkFile | undefined;
9
- static buildGlobalMap(file: ArkFile, globalMap: Map<string, ArkExport>): void;
19
+ static loadGlobalAPI(file: ArkFile, globalMap: Map<string, ArkExport>): void;
20
+ static mergeGlobalAPI(file: ArkFile, globalMap: Map<string, ArkExport>): void;
21
+ static loadAPI(api: ArkExport, globalMap: Map<string, ArkExport>, override?: boolean): void;
22
+ static postInferredSdk(file: ArkFile, globalMap: Map<string, ArkExport>): void;
10
23
  private static loadClass;
11
24
  private static loadGlobalLocal;
12
25
  private static copyMembers;
@@ -1 +1 @@
1
- {"version":3,"file":"SdkUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/SdkUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAQ3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO/C,qBAAa,QAAQ;IAEjB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoD;WAEjE,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAOtC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;WAInD,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAsCpF,OAAO,CAAC,MAAM,CAAC,SAAS;IAkBxB,OAAO,CAAC,MAAM,CAAC,eAAe;IAwB9B,OAAO,CAAC,MAAM,CAAC,WAAW;WAkBZ,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;CAUxF"}
1
+ {"version":3,"file":"SdkUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/SdkUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAO3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAMnC,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoB;IAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAGxB;IAEH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoD;IAC/E,OAAc,aAAa,SAAc;IACzC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAsC;IAClE,OAAc,YAAY,EAAE,GAAG,CAI7B;WAEY,YAAY,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;WAQrC,iBAAiB,IAAI,MAAM,EAAE;IAqB3C,OAAO,CAAC,MAAM,CAAC,QAAQ;WAaT,OAAO,IAAI,IAAI;WAIf,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAOtC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;WAInD,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;WAyBrE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;WAetE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;WAY3F,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAoBrF,OAAO,CAAC,MAAM,CAAC,SAAS;IAiBxB,OAAO,CAAC,MAAM,CAAC,eAAe;IA0B9B,OAAO,CAAC,MAAM,CAAC,WAAW;WAkBZ,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;CAUxF"}