arkanalyzer 1.0.36 → 1.0.38

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 (44) hide show
  1. package/lib/Scene.js +5 -5
  2. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
  3. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +1 -3
  4. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  5. package/lib/callgraph/pointerAnalysis/PagBuilder.js +4 -37
  6. package/lib/core/base/Expr.d.ts.map +1 -1
  7. package/lib/core/base/Expr.js +9 -4
  8. package/lib/core/base/Local.d.ts.map +1 -1
  9. package/lib/core/base/Local.js +5 -0
  10. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  11. package/lib/core/common/ArkIRTransformer.js +0 -10
  12. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  13. package/lib/core/common/ArkValueTransformer.js +14 -18
  14. package/lib/core/common/IRInference.d.ts.map +1 -1
  15. package/lib/core/common/IRInference.js +10 -12
  16. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  17. package/lib/core/common/ModelUtils.js +3 -4
  18. package/lib/core/common/SdkUtils.d.ts +1 -1
  19. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  20. package/lib/core/common/SdkUtils.js +12 -12
  21. package/lib/core/common/TypeInference.d.ts +2 -1
  22. package/lib/core/common/TypeInference.d.ts.map +1 -1
  23. package/lib/core/common/TypeInference.js +23 -13
  24. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
  25. package/lib/core/graph/builder/TrapBuilder.js +20 -15
  26. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  27. package/lib/core/graph/builder/ViewTreeBuilder.js +9 -5
  28. package/lib/core/model/ArkImport.js +1 -1
  29. package/lib/core/model/ArkMethod.d.ts +2 -0
  30. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  31. package/lib/core/model/ArkMethod.js +37 -28
  32. package/lib/core/model/builder/ArkClassBuilder.js +12 -3
  33. package/lib/core/model/builder/ArkFieldBuilder.js +2 -2
  34. package/lib/core/model/builder/ArkFileBuilder.js +2 -2
  35. package/lib/core/model/builder/ArkNamespaceBuilder.js +4 -4
  36. package/lib/save/JsonPrinter.d.ts.map +1 -1
  37. package/lib/save/JsonPrinter.js +50 -32
  38. package/lib/save/base/PrinterUtils.d.ts +1 -0
  39. package/lib/save/base/PrinterUtils.d.ts.map +1 -1
  40. package/lib/save/base/PrinterUtils.js +4 -0
  41. package/lib/save/source/SourceStmt.d.ts +1 -0
  42. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  43. package/lib/save/source/SourceStmt.js +11 -2
  44. package/package.json +2 -2
@@ -144,7 +144,7 @@ class TypeInference {
144
144
  }
145
145
  }
146
146
  else if (leftOpType instanceof Type_1.AnnotationNamespaceType) {
147
- type = this.inferUnclearRefName(leftOpType.getOriginType(), declaringArkClass);
147
+ type = this.inferBaseType(leftOpType.getOriginType(), declaringArkClass);
148
148
  }
149
149
  else if (leftOpType instanceof Type_1.UnclearReferenceType) {
150
150
  type = this.inferUnclearRefType(leftOpType, declaringArkClass);
@@ -152,7 +152,7 @@ class TypeInference {
152
152
  return type;
153
153
  }
154
154
  static inferTypeInMethod(arkMethod) {
155
- var _a;
155
+ var _a, _b;
156
156
  const arkClass = arkMethod.getDeclaringArkClass();
157
157
  this.inferGenericType(arkMethod.getGenericTypes(), arkClass);
158
158
  const signatures = [];
@@ -173,6 +173,15 @@ class TypeInference {
173
173
  signatures.forEach(s => this.inferSignatureReturnType(s, arkMethod));
174
174
  return;
175
175
  }
176
+ (_b = body.getUsedGlobals()) === null || _b === void 0 ? void 0 : _b.forEach((value, key) => {
177
+ if (value instanceof Ref_1.GlobalRef && !value.getRef()) {
178
+ const arkExport = ModelUtils_1.ModelUtils.findGlobalRef(key, arkMethod);
179
+ if (arkExport instanceof Local_1.Local) {
180
+ arkExport.getUsedStmts().push(...value.getUsedStmts());
181
+ value.setRef(arkExport);
182
+ }
183
+ }
184
+ });
176
185
  const cfg = body.getCfg();
177
186
  for (const block of cfg.getBlocks()) {
178
187
  for (const stmt of block.getStmts()) {
@@ -696,7 +705,7 @@ class TypeInference {
696
705
  propertyType = new Type_1.EnumValueType(property.getSignature(), constant);
697
706
  }
698
707
  else {
699
- propertyType = property.getType();
708
+ propertyType = this.replaceTypeWithReal(property.getType(), baseType.getRealGenericTypes());
700
709
  }
701
710
  }
702
711
  else if (property) {
@@ -720,15 +729,18 @@ class TypeInference {
720
729
  * @returns
721
730
  */
722
731
  static inferBaseType(baseName, arkClass) {
723
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
732
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
724
733
  if (TSConst_1.SUPER_NAME === baseName) {
725
734
  return this.parseArkExport2Type(arkClass.getSuperClass());
726
735
  }
727
- const field = (_d = (_c = (_b = (_a = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _a === void 0 ? void 0 : _a.getDefaultArkMethod()) === null || _b === void 0 ? void 0 : _b.getBody()) === null || _c === void 0 ? void 0 : _c.getLocals()) === null || _d === void 0 ? void 0 : _d.get(baseName);
736
+ else if (TSConst_1.DEFAULT === baseName) {
737
+ return this.parseArkExport2Type((_a = arkClass.getDeclaringArkFile().getExportInfoBy(TSConst_1.DEFAULT)) === null || _a === void 0 ? void 0 : _a.getArkExport());
738
+ }
739
+ const field = (_e = (_d = (_c = (_b = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _b === void 0 ? void 0 : _b.getDefaultArkMethod()) === null || _c === void 0 ? void 0 : _c.getBody()) === null || _d === void 0 ? void 0 : _d.getLocals()) === null || _e === void 0 ? void 0 : _e.get(baseName);
728
740
  if (field && !this.isUnclearType(field.getType())) {
729
741
  return field.getType();
730
742
  }
731
- let arkExport = (_m = (_k = (_j = (_e = ModelUtils_1.ModelUtils.getClassWithName(baseName, arkClass)) !== null && _e !== void 0 ? _e : (_h = (_g = (_f = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _f === void 0 ? void 0 : _f.getDefaultArkMethod()) === null || _g === void 0 ? void 0 : _g.getBody()) === null || _h === void 0 ? void 0 : _h.getAliasTypeByName(baseName)) !== null && _j !== void 0 ? _j : ModelUtils_1.ModelUtils.getNamespaceWithName(baseName, arkClass)) !== null && _k !== void 0 ? _k : (_l = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _l === void 0 ? void 0 : _l.getMethodWithName(baseName)) !== null && _m !== void 0 ? _m : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(baseName, arkClass.getDeclaringArkFile());
743
+ let arkExport = (_o = (_l = (_k = (_f = ModelUtils_1.ModelUtils.getClassWithName(baseName, arkClass)) !== null && _f !== void 0 ? _f : (_j = (_h = (_g = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _g === void 0 ? void 0 : _g.getDefaultArkMethod()) === null || _h === void 0 ? void 0 : _h.getBody()) === null || _j === void 0 ? void 0 : _j.getAliasTypeByName(baseName)) !== null && _k !== void 0 ? _k : ModelUtils_1.ModelUtils.getNamespaceWithName(baseName, arkClass)) !== null && _l !== void 0 ? _l : (_m = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _m === void 0 ? void 0 : _m.getMethodWithName(baseName)) !== null && _o !== void 0 ? _o : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(baseName, arkClass.getDeclaringArkFile());
732
744
  if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(baseName)) {
733
745
  arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(baseName);
734
746
  }
@@ -737,14 +749,12 @@ class TypeInference {
737
749
  static inferTypeByName(typeName, arkClass) {
738
750
  var _a, _b, _c, _d, _e;
739
751
  let arkExport = (_e = (_a = ModelUtils_1.ModelUtils.getClassWithName(typeName, arkClass)) !== null && _a !== void 0 ? _a : (_d = (_c = (_b = ModelUtils_1.ModelUtils.getDefaultClass(arkClass)) === null || _b === void 0 ? void 0 : _b.getDefaultArkMethod()) === null || _c === void 0 ? void 0 : _c.getBody()) === null || _d === void 0 ? void 0 : _d.getAliasTypeByName(typeName)) !== null && _e !== void 0 ? _e : ModelUtils_1.ModelUtils.getArkExportInImportInfoWithName(typeName, arkClass.getDeclaringArkFile());
740
- if (arkExport instanceof ArkClass_1.ArkClass || arkExport instanceof Type_1.AliasType) {
741
- return this.parseArkExport2Type(arkExport);
742
- }
743
- if (!arkClass.getDeclaringArkFile().getImportInfoBy(typeName)) {
752
+ if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(typeName)) {
744
753
  arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(typeName);
745
754
  }
746
- if (arkExport instanceof ArkClass_1.ArkClass || arkExport instanceof Type_1.AliasType) {
747
- return this.parseArkExport2Type(arkExport);
755
+ const type = this.parseArkExport2Type(arkExport);
756
+ if (type instanceof Type_1.ClassType || type instanceof Type_1.AliasType) {
757
+ return type;
748
758
  }
749
759
  return null;
750
760
  }
@@ -850,7 +860,7 @@ class TypeInference {
850
860
  .getMethodSignature()
851
861
  .getMethodSubSignature()
852
862
  .getParameters()
853
- .filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX))
863
+ .filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX) && this.isUnclearType(p.getType()))
854
864
  .forEach((p, i) => {
855
865
  var _a;
856
866
  let type = (_a = params === null || params === void 0 ? void 0 : params[i]) === null || _a === void 0 ? void 0 : _a.getType();
@@ -1 +1 @@
1
- {"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,OAAO,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AAKjE;;GAEG;AACH,qBAAa,WAAW;IACb,UAAU,CACb,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACrD,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EACzC,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,GAC/B,IAAI,EAAE;IAiET,OAAO,CAAC,qBAAqB;IAmD7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,QAAQ;CAgBnB"}
1
+ {"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAavC,OAAO,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AAKjE;;GAEG;AACH,qBAAa,WAAW;IACb,UAAU,CACb,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACrD,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EACzC,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,GAC/B,IAAI,EAAE;IAiET,OAAO,CAAC,qBAAqB;IAmD7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,QAAQ;CAgBnB"}
@@ -181,22 +181,24 @@ class TrapBuilder {
181
181
  const currBlock = blockBuilderToCfgBlock.get(currBlockBuilder);
182
182
  bfsBlocks.push(currBlock);
183
183
  const childList = currBlockBuilder.nexts;
184
- if (childList.length === 0 || (childList.length !== 0 && childList[0] === endBlockBuilder)) {
185
- if (childList[0] === endBlockBuilder) {
186
- tailBlocks.push(currBlock);
187
- continue;
188
- }
189
- }
190
184
  if (childList.length !== 0) {
191
185
  for (const child of childList) {
192
- queue.push(child);
186
+ // A tail block's successor may be within the traversal range
187
+ if (child === endBlockBuilder) {
188
+ tailBlocks.push(currBlock);
189
+ }
190
+ else {
191
+ queue.push(child);
192
+ }
193
193
  }
194
194
  }
195
+ else {
196
+ tailBlocks.push(currBlock);
197
+ }
195
198
  }
196
199
  return { bfsBlocks, tailBlocks };
197
200
  }
198
201
  copyFinallyBlocks(finallyBfsBlocks, finallyTailBlocks, basicBlockSet, arkIRTransformer, blockBuilderToCfgBlock) {
199
- var _a;
200
202
  const copyFinallyBfsBlocks = this.copyBlocks(finallyBfsBlocks);
201
203
  const caughtExceptionRef = new Ref_1.ArkCaughtExceptionRef(Type_1.UnknownType.getInstance());
202
204
  const { value: exceptionValue, stmts: exceptionAssignStmts } = arkIRTransformer.generateAssignStmtForValue(caughtExceptionRef, [Position_1.FullPosition.DEFAULT]);
@@ -205,19 +207,16 @@ class TrapBuilder {
205
207
  copyFinallyBfsBlocks[0].getPredecessors().splice(0, finallyPredecessorsCnt);
206
208
  const throwStmt = new Stmt_1.ArkThrowStmt(exceptionValue);
207
209
  let copyFinallyTailBlocks = copyFinallyBfsBlocks.splice(copyFinallyBfsBlocks.length - finallyTailBlocks.length, finallyTailBlocks.length);
208
- copyFinallyTailBlocks.forEach((copyFinallyTailBlock) => {
209
- const successorsCnt = copyFinallyTailBlock.getSuccessors().length;
210
- copyFinallyTailBlock.getSuccessors().splice(0, successorsCnt);
211
- });
212
210
  if (copyFinallyTailBlocks.length > 1) {
213
211
  const newCopyFinallyTailBlock = new BasicBlock_1.BasicBlock();
214
212
  copyFinallyTailBlocks.forEach((copyFinallyTailBlock) => {
215
213
  copyFinallyTailBlock.addSuccessorBlock(newCopyFinallyTailBlock);
216
214
  newCopyFinallyTailBlock.addPredecessorBlock(copyFinallyTailBlock);
217
215
  });
216
+ copyFinallyBfsBlocks.push(...copyFinallyTailBlocks);
218
217
  copyFinallyTailBlocks = [newCopyFinallyTailBlock];
219
218
  }
220
- (_a = copyFinallyTailBlocks[0]) === null || _a === void 0 ? void 0 : _a.addStmt(throwStmt);
219
+ copyFinallyTailBlocks[0].addStmt(throwStmt);
221
220
  copyFinallyBfsBlocks.push(...copyFinallyTailBlocks);
222
221
  copyFinallyBfsBlocks.forEach((copyFinallyBfsBlock) => {
223
222
  basicBlockSet.add(copyFinallyBfsBlock);
@@ -239,11 +238,17 @@ class TrapBuilder {
239
238
  const targetBlock = sourceToTarget.get(sourceBlock);
240
239
  for (const predecessor of sourceBlock.getPredecessors()) {
241
240
  const targetPredecessor = sourceToTarget.get(predecessor);
242
- targetBlock.addPredecessorBlock(targetPredecessor);
241
+ // Only include blocks within the copy range, so that predecessor and successor relationships to
242
+ // external blocks can be trimmed
243
+ if (targetPredecessor) {
244
+ targetBlock.addPredecessorBlock(targetPredecessor);
245
+ }
243
246
  }
244
247
  for (const successor of sourceBlock.getSuccessors()) {
245
248
  const targetSuccessor = sourceToTarget.get(successor);
246
- targetBlock.addSuccessorBlock(targetSuccessor);
249
+ if (targetSuccessor) {
250
+ targetBlock.addSuccessorBlock(targetSuccessor);
251
+ }
247
252
  }
248
253
  }
249
254
  return targetBlocks;
@@ -1 +1 @@
1
- {"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAWjD,OAAO,EAAe,mBAAmB,EAAc,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAgC,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAA2B,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAiBhE,OAAO,EAAE,QAAQ,EAAiB,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkLrD,cAAM,gBAAiB,YAAW,YAAY;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS,CAAC;IAC9D,SAAS,CAAC,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS,CAAC;IACzD,mBAAmB,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC;IACtE,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,IAAI,CAAmB;gBAEnB,IAAI,EAAE,MAAM;IAUxB;;;OAGG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,cAAc,IAAI,OAAO;IAIhC;;;OAGG;IACI,iBAAiB,IAAI,OAAO;IAInC;;;;;;OAMG;IACI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,EAAE,OAAO,GAAE,GAAG,CAAC,YAAY,CAAa,GAAG,OAAO;WAiBzF,qBAAqB,IAAI,gBAAgB;WAMzC,iBAAiB,IAAI,gBAAgB;WAMrC,sBAAsB,IAAI,gBAAgB;IAMjD,8BAA8B,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAexD,eAAe,IAAI,OAAO;IAM1B,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAa,GAAG,gBAAgB;IAwB3G,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAOpD,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,aAAa;IAwBd,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;CAOhE;AAED,cAAM,aAAa;IACf,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC;;IAMpC;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAWzC;;OAEG;IACI,GAAG,IAAI,IAAI;IAIlB;;OAEG;IACI,GAAG,IAAI,gBAAgB,GAAG,IAAI;IAIrC;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB;;OAEG;IACI,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW9C;;OAEG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAWtD,OAAO,CAAC,SAAS;IAYjB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG/C;AAED,qBAAa,YAAa,SAAQ,aAAc,YAAW,QAAQ;IAC/D,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,UAAU,CAAgC;IAElD;;OAEG;gBACS,MAAM,EAAE,SAAS;IAQ7B;;;OAGG;IACI,OAAO,IAAI,YAAY,GAAG,IAAI;IAKrC;;;OAGG;IACI,cAAc,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IAKzD;;OAEG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1C;;OAEG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS;IAIpE;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAQ/D;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACI,oBAAoB,IAAI,QAAQ;IAIvC;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,6BAA6B;IA6BrC,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,2BAA2B;IA6CnC,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,wBAAwB,CAO7B;IAEH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IA8B7B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAyC/B,OAAO,CAAC,kBAAkB;IAwC1B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,oBAAoB;CAmB/B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAEzD"}
1
+ {"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"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"}
@@ -817,11 +817,11 @@ class ViewTreeImpl extends TreeNodeStack {
817
817
  let temp = expr.getArg(0);
818
818
  let arg;
819
819
  temp.getUsedStmts().forEach(value => {
820
- if (value instanceof Stmt_1.ArkInvokeStmt) {
821
- let invokerExpr = value.getInvokeExpr();
822
- let methodName = invokerExpr.getMethodSignature().getMethodSubSignature().getMethodName();
820
+ if (value instanceof Stmt_1.ArkAssignStmt && value.getRightOp() instanceof Expr_1.ArkInstanceInvokeExpr) {
821
+ const rightOp = value.getRightOp();
822
+ const methodName = rightOp.getMethodSignature().getMethodSubSignature().getMethodName();
823
823
  if (methodName === 'constructor') {
824
- arg = invokerExpr.getArg(0);
824
+ arg = rightOp.getArg(0);
825
825
  }
826
826
  }
827
827
  });
@@ -843,7 +843,11 @@ class ViewTreeImpl extends TreeNodeStack {
843
843
  if (!(initValue instanceof Expr_1.ArkNewExpr)) {
844
844
  return undefined;
845
845
  }
846
- let clsSignature = initValue.getType().getClassSignature();
846
+ const initValueType = initValue.getType();
847
+ if (!(initValueType instanceof Type_1.ClassType)) {
848
+ return undefined;
849
+ }
850
+ let clsSignature = initValueType.getClassSignature();
847
851
  if (clsSignature) {
848
852
  let cls = this.findClass(clsSignature);
849
853
  if (cls && cls.hasComponentDecorator()) {
@@ -52,7 +52,7 @@ class ImportInfo extends ArkBaseModel_1.ArkBaseModel {
52
52
  * @returns The export information. If there is no export information, the return will be a **null**.
53
53
  */
54
54
  getLazyExportInfo() {
55
- if (this.lazyExportInfo === undefined) {
55
+ if (this.lazyExportInfo === undefined && this.declaringArkFile.getScene().getStage() >= 2) {
56
56
  this.lazyExportInfo = (0, ModelUtils_1.findExportInfo)(this);
57
57
  }
58
58
  return this.lazyExportInfo || null;
@@ -261,7 +261,9 @@ export declare class ArkMethod extends ArkBaseModel implements ArkExport {
261
261
  setAsteriskToken(asteriskToken: boolean): void;
262
262
  validate(): ArkError;
263
263
  matchMethodSignature(args: Value[]): MethodSignature;
264
+ private isMatched;
264
265
  private matchParam;
266
+ private static parseArg;
265
267
  getOuterMethod(): ArkMethod | undefined;
266
268
  setOuterMethod(method: ArkMethod): void;
267
269
  getFunctionLocal(name: string): Local | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArkMethod.d.ts","sourceRoot":"","sources":["../../../src/core/model/ArkMethod.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ const EtsConst_1 = require("../common/EtsConst");
28
28
  const Constant_1 = require("../base/Constant");
29
29
  const Local_1 = require("../base/Local");
30
30
  const TSConst_1 = require("../common/TSConst");
31
+ const TypeInference_1 = require("../common/TypeInference");
31
32
  exports.arkMethodNodeKind = [
32
33
  'MethodDeclaration',
33
34
  'Constructor',
@@ -546,42 +547,37 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
546
547
  }
547
548
  return args.length >= min && args.length <= max;
548
549
  });
549
- const scene = this.getDeclaringArkFile().getScene();
550
- return ((_c = (_b = signatures === null || signatures === void 0 ? void 0 : signatures.find(p => {
551
- const parameters = p.getMethodSubSignature().getParameters();
552
- for (let i = 0; i < parameters.length; i++) {
553
- if (!args[i]) {
554
- return parameters[i].isOptional();
555
- }
556
- const isMatched = this.matchParam(parameters[i].getType(), args[i], scene);
557
- if (!isMatched) {
558
- return false;
559
- }
550
+ return ((_c = (_b = signatures === null || signatures === void 0 ? void 0 : signatures.find(p => this.isMatched(p.getMethodSubSignature().getParameters(), args))) !== null && _b !== void 0 ? _b : signatures === null || signatures === void 0 ? void 0 : signatures[0]) !== null && _c !== void 0 ? _c : this.getSignature());
551
+ }
552
+ isMatched(parameters, args, isArrowFunc = false) {
553
+ for (let i = 0; i < parameters.length; i++) {
554
+ if (!args[i]) {
555
+ return isArrowFunc ? true : parameters[i].isOptional();
560
556
  }
561
- return true;
562
- })) !== null && _b !== void 0 ? _b : signatures === null || signatures === void 0 ? void 0 : signatures[0]) !== null && _c !== void 0 ? _c : this.getSignature());
557
+ const isMatched = this.matchParam(parameters[i].getType(), args[i]);
558
+ if (!isMatched) {
559
+ return false;
560
+ }
561
+ }
562
+ return true;
563
563
  }
564
- matchParam(paramType, arg, scene) {
564
+ matchParam(paramType, arg) {
565
565
  var _a, _b;
566
+ arg = ArkMethod.parseArg(arg);
566
567
  const argType = arg.getType();
567
- if (arg instanceof Local_1.Local) {
568
- const stmt = arg.getDeclaringStmt();
569
- if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Constant_1.Constant) {
570
- arg = stmt.getRightOp();
571
- }
568
+ if (paramType instanceof Type_1.AliasType && !(argType instanceof Type_1.AliasType)) {
569
+ paramType = TypeInference_1.TypeInference.replaceAliasType(paramType);
572
570
  }
573
571
  if (paramType instanceof Type_1.UnionType) {
574
- let matched = false;
575
- for (const e of paramType.getTypes()) {
576
- if (argType.constructor === e.constructor) {
577
- matched = true;
578
- break;
579
- }
580
- }
581
- return matched;
572
+ return !!paramType.getTypes().find(p => this.matchParam(p, arg));
582
573
  }
583
574
  else if (argType instanceof Type_1.FunctionType && paramType instanceof Type_1.FunctionType) {
584
- return argType.getMethodSignature().getParamLength() === paramType.getMethodSignature().getParamLength();
575
+ if (argType.getMethodSignature().getParamLength() > paramType.getMethodSignature().getParamLength()) {
576
+ return false;
577
+ }
578
+ const parameters = paramType.getMethodSignature().getMethodSubSignature().getParameters();
579
+ const args = argType.getMethodSignature().getMethodSubSignature().getParameters().filter(p => !p.getName().startsWith(Const_1.LEXICAL_ENV_NAME_PREFIX));
580
+ return this.isMatched(parameters, args, true);
585
581
  }
586
582
  else if (paramType instanceof Type_1.ClassType && paramType.getClassSignature().getClassName().includes(EtsConst_1.CALL_BACK)) {
587
583
  return argType instanceof Type_1.FunctionType;
@@ -606,6 +602,19 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
606
602
  }
607
603
  return argType.constructor === paramType.constructor;
608
604
  }
605
+ static parseArg(arg) {
606
+ if (arg instanceof Local_1.Local) {
607
+ const stmt = arg.getDeclaringStmt();
608
+ const argType = arg.getType();
609
+ if (argType instanceof Type_1.EnumValueType && argType.getConstant()) {
610
+ arg = argType.getConstant();
611
+ }
612
+ else if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Constant_1.Constant) {
613
+ arg = stmt.getRightOp();
614
+ }
615
+ }
616
+ return arg;
617
+ }
609
618
  getOuterMethod() {
610
619
  return this.outerMethod;
611
620
  }
@@ -316,7 +316,16 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
316
316
  const instanceInitStmts = [];
317
317
  let staticBlockId = 0;
318
318
  clsNode.members.forEach(member => {
319
- if (ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) {
319
+ if (ohos_typescript_1.default.isMethodDeclaration(member) ||
320
+ ohos_typescript_1.default.isConstructorDeclaration(member) ||
321
+ ohos_typescript_1.default.isMethodSignature(member) ||
322
+ ohos_typescript_1.default.isConstructSignatureDeclaration(member) ||
323
+ ohos_typescript_1.default.isAccessor(member) ||
324
+ ohos_typescript_1.default.isCallSignatureDeclaration(member)) {
325
+ // these node types have been handled at the beginning of this function by calling buildMethodsForClass
326
+ return;
327
+ }
328
+ else if (ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) {
320
329
  const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
321
330
  if (ohos_typescript_1.default.isClassDeclaration(clsNode) || ohos_typescript_1.default.isClassExpression(clsNode) || ohos_typescript_1.default.isStructDeclaration(clsNode)) {
322
331
  if (arkField.isStatic()) {
@@ -346,10 +355,10 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
346
355
  staticInitStmts.push(new Stmt_1.ArkInvokeStmt(staticBlockInvokeExpr));
347
356
  }
348
357
  else if (ohos_typescript_1.default.isSemicolonClassElement(member)) {
349
- logger.debug('Skip these members.');
358
+ logger.trace('Skip these members.');
350
359
  }
351
360
  else {
352
- logger.warn('Please contact developers to support new member type!');
361
+ logger.warn(`Please contact developers to support new member in class: ${cls.getSignature().toString()}, member: ${member.getText()}!`);
353
362
  }
354
363
  });
355
364
  if (ohos_typescript_1.default.isClassDeclaration(clsNode) || ohos_typescript_1.default.isClassExpression(clsNode) || ohos_typescript_1.default.isStructDeclaration(clsNode)) {
@@ -66,7 +66,7 @@ function buildProperty2ArkField(member, sourceFile, cls) {
66
66
  fieldName = (0, builderUtils_1.handlePropertyAccessExpression)(member.name.expression);
67
67
  }
68
68
  else {
69
- logger.warn('Other property expression type found!');
69
+ logger.warn(`Other property expression type found: ${member.name.expression.getText()}!`);
70
70
  }
71
71
  }
72
72
  else if (member.name && (ohos_typescript_1.default.isIdentifier(member.name) || ohos_typescript_1.default.isLiteralExpression(member.name))) {
@@ -78,7 +78,7 @@ function buildProperty2ArkField(member, sourceFile, cls) {
78
78
  field.addModifier(ArkBaseModel_1.ModifierType.PRIVATE);
79
79
  }
80
80
  else {
81
- logger.warn('Other type of property name found!');
81
+ logger.warn(`Other type of property name found: ${member.getText()}!`);
82
82
  }
83
83
  let fieldType = Type_1.UnknownType.getInstance();
84
84
  if (ohos_typescript_1.default.isPropertyDeclaration(member) || ohos_typescript_1.default.isPropertySignature(member)) {
@@ -124,7 +124,7 @@ function buildArkFile(arkFile, astRoot) {
124
124
  }
125
125
  // TODO: Check
126
126
  else if (ohos_typescript_1.default.isMethodDeclaration(child)) {
127
- logger.warn('This is a MethodDeclaration in ArkFile.');
127
+ logger.trace('This is a MethodDeclaration in ArkFile.');
128
128
  let mthd = new ArkMethod_1.ArkMethod();
129
129
  (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, arkFile.getDefaultClass(), mthd, astRoot);
130
130
  if (mthd.isExported()) {
@@ -161,7 +161,7 @@ function buildArkFile(arkFile, astRoot) {
161
161
  child.expression.text.trim() === Const_1.ARKTS_STATIC_MARK && arkFile.setLanguage(ArkFile_1.Language.ARKTS1_2);
162
162
  }
163
163
  else {
164
- logger.info('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
164
+ logger.trace('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
165
165
  }
166
166
  });
167
167
  const mergedNameSpaces = (0, ArkNamespaceBuilder_1.mergeNameSpaces)(namespaces);
@@ -88,13 +88,13 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
88
88
  // NamespaceDeclaration extends ModuleDeclaration
89
89
  //TODO: Check
90
90
  else if (ohos_typescript_1.default.isModuleDeclaration(node.body)) {
91
- logger.warn('This ModuleBody is an NamespaceDeclaration.');
91
+ logger.trace('This ModuleBody is an NamespaceDeclaration.');
92
92
  let childNs = new ArkNamespace_1.ArkNamespace();
93
93
  buildArkNamespace(node.body, ns, childNs, sourceFile);
94
94
  ns.addNamespace(childNs);
95
95
  }
96
96
  else if (ohos_typescript_1.default.isIdentifier(node.body)) {
97
- logger.warn('ModuleBody is Identifier.');
97
+ logger.warn('ModuleBody is Identifier');
98
98
  }
99
99
  else {
100
100
  logger.warn('JSDocNamespaceDeclaration found.');
@@ -128,7 +128,7 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
128
128
  }
129
129
  // TODO: Check
130
130
  else if (ohos_typescript_1.default.isMethodDeclaration(child)) {
131
- logger.warn('This is a MethodDeclaration in ArkNamespace.');
131
+ logger.trace('This is a MethodDeclaration in ArkNamespace.');
132
132
  let mthd = new ArkMethod_1.ArkMethod();
133
133
  (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, namespace.getDefaultClass(), mthd, sourceFile);
134
134
  if (mthd.isExported()) {
@@ -152,7 +152,7 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
152
152
  (0, ArkExportBuilder_1.buildExportVariableStatement)(child, sourceFile, namespace.getDeclaringArkFile(), namespace).forEach(item => namespace.addExportInfo(item));
153
153
  }
154
154
  else {
155
- logger.info('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
155
+ logger.trace('Child joined default method of arkFile: ', ohos_typescript_1.default.SyntaxKind[child.kind]);
156
156
  // join default method
157
157
  }
158
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAmEhD,qBAAa,WAAY,SAAQ,OAAO;IACxB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;IAwHrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAyJtB,OAAO,CAAC,aAAa;CAmCxB"}
1
+ {"version":3,"file":"JsonPrinter.d.ts","sourceRoot":"","sources":["../../src/save/JsonPrinter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsEhD,qBAAa,WAAY,SAAQ,OAAO;IACxB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,aAAa;IA6HrB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAuKtB,OAAO,CAAC,aAAa;CAuCxB"}