arkanalyzer 1.0.16 → 1.0.18

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 (113) hide show
  1. package/lib/callgraph/pointerAnalysis/Pag.d.ts +1 -1
  2. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  3. package/lib/callgraph/pointerAnalysis/Pag.js +9 -0
  4. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  5. package/lib/callgraph/pointerAnalysis/PagBuilder.js +6 -2
  6. package/lib/core/base/Decorator.d.ts +1 -0
  7. package/lib/core/base/Decorator.d.ts.map +1 -1
  8. package/lib/core/base/Decorator.js +4 -1
  9. package/lib/core/base/Type.d.ts +45 -3
  10. package/lib/core/base/Type.d.ts.map +1 -1
  11. package/lib/core/base/Type.js +84 -4
  12. package/lib/core/common/ArkIRTransformer.d.ts +1 -0
  13. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  14. package/lib/core/common/ArkIRTransformer.js +42 -23
  15. package/lib/core/common/ArkValueTransformer.d.ts +1 -0
  16. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  17. package/lib/core/common/ArkValueTransformer.js +45 -10
  18. package/lib/core/common/IRInference.d.ts.map +1 -1
  19. package/lib/core/common/IRInference.js +6 -0
  20. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  21. package/lib/core/common/ModelUtils.js +5 -1
  22. package/lib/core/common/TypeInference.d.ts +1 -0
  23. package/lib/core/common/TypeInference.d.ts.map +1 -1
  24. package/lib/core/common/TypeInference.js +27 -8
  25. package/lib/core/{common → graph/builder}/CfgBuilder.d.ts +34 -46
  26. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -0
  27. package/lib/core/graph/builder/CfgBuilder.js +1139 -0
  28. package/lib/core/graph/builder/ConditionBuilder.d.ts +16 -0
  29. package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -0
  30. package/lib/core/graph/builder/ConditionBuilder.js +252 -0
  31. package/lib/core/graph/builder/LoopBuilder.d.ts +21 -0
  32. package/lib/core/graph/builder/LoopBuilder.d.ts.map +1 -0
  33. package/lib/core/graph/builder/LoopBuilder.js +251 -0
  34. package/lib/core/graph/builder/SwitchBuilder.d.ts +12 -0
  35. package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -0
  36. package/lib/core/graph/builder/SwitchBuilder.js +152 -0
  37. package/lib/core/graph/builder/TrapBuilder.d.ts +17 -0
  38. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -0
  39. package/lib/core/graph/builder/TrapBuilder.js +272 -0
  40. package/lib/core/model/ArkMethod.d.ts +1 -1
  41. package/lib/core/model/ArkMethod.js +1 -1
  42. package/lib/core/model/ArkSignature.d.ts +9 -1
  43. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  44. package/lib/core/model/ArkSignature.js +17 -1
  45. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  46. package/lib/core/model/builder/ArkClassBuilder.js +2 -1
  47. package/lib/core/model/builder/ArkMethodBuilder.js +1 -1
  48. package/lib/core/{common → model/builder}/BodyBuilder.d.ts +5 -5
  49. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -0
  50. package/lib/core/{common → model/builder}/BodyBuilder.js +12 -12
  51. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  52. package/lib/core/model/builder/builderUtils.js +31 -5
  53. package/lib/save/JsonPrinter.d.ts +1 -1
  54. package/lib/save/JsonPrinter.d.ts.map +1 -1
  55. package/lib/save/JsonPrinter.js +2 -2
  56. package/lib/save/PrinterBuilder.d.ts +22 -0
  57. package/lib/save/PrinterBuilder.d.ts.map +1 -1
  58. package/lib/save/PrinterBuilder.js +54 -1
  59. package/lib/save/arkir/ArkIRClassPrinter.d.ts +14 -0
  60. package/lib/save/arkir/ArkIRClassPrinter.d.ts.map +1 -0
  61. package/lib/save/arkir/ArkIRClassPrinter.js +92 -0
  62. package/lib/save/arkir/ArkIRFieldPrinter.d.ts +12 -0
  63. package/lib/save/arkir/ArkIRFieldPrinter.d.ts.map +1 -0
  64. package/lib/save/arkir/ArkIRFieldPrinter.js +64 -0
  65. package/lib/save/arkir/ArkIRFilePrinter.d.ts +13 -0
  66. package/lib/save/arkir/ArkIRFilePrinter.d.ts.map +1 -0
  67. package/lib/save/arkir/ArkIRFilePrinter.js +54 -0
  68. package/lib/save/arkir/ArkIRMethodPrinter.d.ts +17 -0
  69. package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -0
  70. package/lib/save/arkir/ArkIRMethodPrinter.js +159 -0
  71. package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +12 -0
  72. package/lib/save/arkir/ArkIRNamespacePrinter.d.ts.map +1 -0
  73. package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -0
  74. package/lib/save/base/BasePrinter.d.ts +24 -0
  75. package/lib/save/base/BasePrinter.d.ts.map +1 -0
  76. package/lib/save/base/BasePrinter.js +70 -0
  77. package/lib/save/base/ExportPrinter.d.ts +9 -0
  78. package/lib/save/base/ExportPrinter.d.ts.map +1 -0
  79. package/lib/save/base/ExportPrinter.js +67 -0
  80. package/lib/save/base/ImportPrinter.d.ts +10 -0
  81. package/lib/save/base/ImportPrinter.d.ts.map +1 -0
  82. package/lib/save/base/ImportPrinter.js +92 -0
  83. package/lib/save/{source/SourceUtils.d.ts → base/PrinterUtils.d.ts} +2 -2
  84. package/lib/save/{source/SourceUtils.d.ts.map → base/PrinterUtils.d.ts.map} +1 -1
  85. package/lib/save/{source/SourceUtils.js → base/PrinterUtils.js} +10 -10
  86. package/lib/save/source/SourceBase.d.ts +2 -11
  87. package/lib/save/source/SourceBase.d.ts.map +1 -1
  88. package/lib/save/source/SourceBase.js +3 -25
  89. package/lib/save/source/SourceBody.js +3 -3
  90. package/lib/save/source/SourceClass.d.ts +2 -1
  91. package/lib/save/source/SourceClass.d.ts.map +1 -1
  92. package/lib/save/source/SourceClass.js +18 -17
  93. package/lib/save/source/SourceFilePrinter.d.ts +1 -1
  94. package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
  95. package/lib/save/source/SourceFilePrinter.js +9 -10
  96. package/lib/save/source/SourceMethod.d.ts +1 -1
  97. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  98. package/lib/save/source/SourceMethod.js +37 -22
  99. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  100. package/lib/save/source/SourceNamespace.js +6 -6
  101. package/lib/save/source/SourceStmt.d.ts +1 -1
  102. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  103. package/lib/save/source/SourceStmt.js +29 -42
  104. package/lib/save/source/SourceTransformer.d.ts +3 -1
  105. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  106. package/lib/save/source/SourceTransformer.js +65 -29
  107. package/package.json +1 -1
  108. package/lib/core/common/BodyBuilder.d.ts.map +0 -1
  109. package/lib/core/common/CfgBuilder.d.ts.map +0 -1
  110. package/lib/core/common/CfgBuilder.js +0 -1886
  111. package/lib/save/source/SourceModule.d.ts +0 -16
  112. package/lib/save/source/SourceModule.d.ts.map +0 -1
  113. package/lib/save/source/SourceModule.js +0 -125
@@ -61,6 +61,7 @@ const Constant_1 = require("../base/Constant");
61
61
  const Const_1 = require("./Const");
62
62
  const ArkIRTransformer_1 = require("./ArkIRTransformer");
63
63
  const logger_1 = __importStar(require("../../utils/logger"));
64
+ const TypeInference_1 = require("./TypeInference");
64
65
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkValueTransformer');
65
66
  class ArkValueTransformer {
66
67
  constructor(arkIRTransformer, sourceFile, declaringMethod) {
@@ -1266,6 +1267,11 @@ class ArkValueTransformer {
1266
1267
  type.types.forEach(t => mayTypes.push(this.resolveTypeNode(t)));
1267
1268
  return new Type_1.UnionType(mayTypes);
1268
1269
  }
1270
+ case ts.SyntaxKind.IntersectionType: {
1271
+ const intersectionTypes = [];
1272
+ type.types.forEach(t => intersectionTypes.push(this.resolveTypeNode(t)));
1273
+ return new Type_1.IntersectionType(intersectionTypes);
1274
+ }
1269
1275
  case ts.SyntaxKind.TupleType: {
1270
1276
  const types = [];
1271
1277
  type.elements.forEach(element => {
@@ -1287,6 +1293,10 @@ class ArkValueTransformer {
1287
1293
  return Type_1.UnknownType.getInstance();
1288
1294
  case ts.SyntaxKind.TypeQuery:
1289
1295
  return this.resolveTypeQueryNode(type);
1296
+ case ts.SyntaxKind.ParenthesizedType:
1297
+ return this.resolveTypeNode(type.type);
1298
+ case ts.SyntaxKind.TypeOperator:
1299
+ return this.resolveTypeOperatorNode(type);
1290
1300
  default:
1291
1301
  return Type_1.UnknownType.getInstance();
1292
1302
  }
@@ -1305,6 +1315,25 @@ class ArkValueTransformer {
1305
1315
  }
1306
1316
  return new Type_1.UnclearReferenceType(exprName, genericTypes);
1307
1317
  }
1318
+ resolveTypeOperatorNode(typeOperatorNode) {
1319
+ switch (typeOperatorNode.operator) {
1320
+ case ts.SyntaxKind.ReadonlyKeyword: {
1321
+ let type = this.resolveTypeNode(typeOperatorNode.type);
1322
+ if (type instanceof Type_1.ArrayType || type instanceof Type_1.TupleType) {
1323
+ type.setReadonlyFlag(true);
1324
+ }
1325
+ return type;
1326
+ }
1327
+ case ts.SyntaxKind.KeyOfKeyword: {
1328
+ return Type_1.UnknownType.getInstance();
1329
+ }
1330
+ case ts.SyntaxKind.UniqueKeyword: {
1331
+ return Type_1.UnknownType.getInstance();
1332
+ }
1333
+ default:
1334
+ return Type_1.UnknownType.getInstance();
1335
+ }
1336
+ }
1308
1337
  static resolveLiteralTypeNode(literalTypeNode, sourceFile) {
1309
1338
  const literal = literalTypeNode.literal;
1310
1339
  const kind = literal.kind;
@@ -1366,24 +1395,30 @@ class ArkValueTransformer {
1366
1395
  return templateTypes[0];
1367
1396
  }
1368
1397
  resolveTypeReferenceNode(typeReferenceNode) {
1369
- const typeReferenceFullName = typeReferenceNode.getText(this.sourceFile);
1370
- const aliasTypeAndPosition = this.aliasTypeMap.get(typeReferenceFullName);
1371
- if (!aliasTypeAndPosition) {
1398
+ const typeReferenceFullName = typeReferenceNode.typeName.getText(this.sourceFile);
1399
+ const aliasTypeAndStmt = this.aliasTypeMap.get(typeReferenceFullName);
1400
+ const genericTypes = [];
1401
+ if (typeReferenceNode.typeArguments) {
1402
+ for (const typeArgument of typeReferenceNode.typeArguments) {
1403
+ genericTypes.push(this.resolveTypeNode(typeArgument));
1404
+ }
1405
+ }
1406
+ if (!aliasTypeAndStmt) {
1372
1407
  const typeName = typeReferenceNode.typeName.getText(this.sourceFile);
1373
1408
  const local = this.locals.get(typeName);
1374
1409
  if (local !== undefined) {
1375
1410
  return local.getType();
1376
1411
  }
1377
- const genericTypes = [];
1378
- if (typeReferenceNode.typeArguments) {
1379
- for (const typeArgument of typeReferenceNode.typeArguments) {
1380
- genericTypes.push(this.resolveTypeNode(typeArgument));
1381
- }
1382
- }
1383
1412
  return new Type_1.UnclearReferenceType(typeName, genericTypes);
1384
1413
  }
1385
1414
  else {
1386
- return aliasTypeAndPosition[0];
1415
+ if (genericTypes.length > 0) {
1416
+ const oldAlias = aliasTypeAndStmt[0];
1417
+ let alias = new Type_1.AliasType(oldAlias.getName(), TypeInference_1.TypeInference.replaceTypeWithReal(oldAlias.getOriginalType(), genericTypes), oldAlias.getSignature(), oldAlias.getGenericTypes());
1418
+ alias.setRealGenericTypes(genericTypes);
1419
+ return alias;
1420
+ }
1421
+ return aliasTypeAndStmt[0];
1387
1422
  }
1388
1423
  }
1389
1424
  resolveTypeLiteralNode(typeLiteralNode) {
@@ -1 +1 @@
1
- {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAIT,IAAI,EAIP,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EAGtB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAwB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IA8BxG,OAAO,CAAC,MAAM,CAAC,iCAAiC;IAmChD,OAAO,CAAC,MAAM,CAAC,0BAA0B;WAU3B,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;WAsB9F,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;IAiBxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ;WAqBT,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;WAehF,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAgBxF,OAAO,CAAC,MAAM,CAAC,eAAe;IA0C9B,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgD/C,OAAO,CAAC,MAAM,CAAC,YAAY;WAYb,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe;IAcvG,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B,OAAO,CAAC,MAAM,CAAC,UAAU;IAsBzB,OAAO,CAAC,MAAM,CAAC,yBAAyB;WA4C1B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,IAAI;IA+B/H,OAAO,CAAC,MAAM,CAAC,eAAe;WA+BhB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY;CAuB5F"}
1
+ {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAIT,IAAI,EAIP,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EAGtB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAwB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IA8BxG,OAAO,CAAC,MAAM,CAAC,iCAAiC;IAmChD,OAAO,CAAC,MAAM,CAAC,0BAA0B;WAU3B,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;WAsB9F,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;IAiBxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ;WAqBT,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;WAehF,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAgBxF,OAAO,CAAC,MAAM,CAAC,eAAe;IA0C9B,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgD/C,OAAO,CAAC,MAAM,CAAC,YAAY;WAYb,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe;IAcvG,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B,OAAO,CAAC,MAAM,CAAC,UAAU;IAsBzB,OAAO,CAAC,MAAM,CAAC,yBAAyB;WA4C1B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,IAAI;IA+B/H,OAAO,CAAC,MAAM,CAAC,eAAe;WA+BhB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY;CA6B5F"}
@@ -557,10 +557,16 @@ class IRInference {
557
557
  }
558
558
  else if (originalObject instanceof Type_1.Type) {
559
559
  const type = TypeInference_1.TypeInference.inferUnclearedType(originalObject, arkMethod.getDeclaringArkClass());
560
+ // If original Object is ClassType, AliasType or UnclearReferenceType with real generic types,
561
+ // the type after infer should be revert back to the object itself.
560
562
  if (type instanceof Type_1.ClassType) {
561
563
  const scene = arkMethod.getDeclaringArkFile().getScene();
562
564
  model = ModelUtils_1.ModelUtils.findArkModelBySignature(type.getClassSignature(), scene);
563
565
  }
566
+ else if (type instanceof Type_1.AliasType) {
567
+ const scene = arkMethod.getDeclaringArkFile().getScene();
568
+ model = ModelUtils_1.ModelUtils.findArkModelBySignature(type.getSignature(), scene);
569
+ }
564
570
  else if (type) {
565
571
  model = type;
566
572
  }
@@ -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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"}
@@ -425,7 +425,7 @@ class ModelUtils {
425
425
  return model;
426
426
  }
427
427
  static findArkModelBySignature(signature, scene) {
428
- var _a, _b, _c, _d;
428
+ var _a, _b, _c, _d, _e, _f;
429
429
  if (signature instanceof ArkSignature_1.ClassSignature) {
430
430
  return scene.getClass(signature);
431
431
  }
@@ -449,6 +449,10 @@ class ModelUtils {
449
449
  const declare = scene.getMethod(signature.getDeclaringMethodSignature());
450
450
  return (_d = (_b = (_a = declare === null || declare === void 0 ? void 0 : declare.getBody()) === null || _a === void 0 ? void 0 : _a.getLocals().get(signature.getName())) !== null && _b !== void 0 ? _b : (_c = declare === null || declare === void 0 ? void 0 : declare.getBody()) === null || _c === void 0 ? void 0 : _c.getAliasTypeByName(signature.getName())) !== null && _d !== void 0 ? _d : null;
451
451
  }
452
+ else if (signature instanceof ArkSignature_1.AliasTypeSignature) {
453
+ const declare = scene.getMethod(signature.getDeclaringMethodSignature());
454
+ return (_f = (_e = declare === null || declare === void 0 ? void 0 : declare.getBody()) === null || _e === void 0 ? void 0 : _e.getAliasTypeByName(signature.getName())) !== null && _f !== void 0 ? _f : null;
455
+ }
452
456
  return null;
453
457
  }
454
458
  }
@@ -45,6 +45,7 @@ export declare class TypeInference {
45
45
  static resolveArkAssignStmt(stmt: Stmt, arkMethod: ArkMethod): void;
46
46
  private static setValueType;
47
47
  static isUnclearType(type: Type | null | undefined): boolean;
48
+ private static hasUnclearReferenceType;
48
49
  static inferSimpleTypeInStmt(stmt: Stmt): void;
49
50
  static buildTypeFromStr(typeStr: string): Type;
50
51
  static inferValueType(value: Value, arkMethod: ArkMethod): Type | null;
@@ -1 +1 @@
1
- {"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
@@ -112,7 +112,7 @@ class TypeInference {
112
112
  leftOpType.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
113
113
  type = TypeInference.inferUnclearRefName(leftOpType.getClassSignature().getClassName(), declaringArkClass);
114
114
  }
115
- else if (leftOpType instanceof Type_1.UnionType) {
115
+ else if (leftOpType instanceof Type_1.UnionType || leftOpType instanceof Type_1.IntersectionType || leftOpType instanceof Type_1.TupleType) {
116
116
  let types = leftOpType.getTypes();
117
117
  for (let i = 0; i < types.length; i++) {
118
118
  let newType = this.inferUnclearedType(types[i], declaringArkClass);
@@ -315,6 +315,7 @@ class TypeInference {
315
315
  }
316
316
  }
317
317
  static isUnclearType(type) {
318
+ // TODO: For UnionType, IntersectionType and TupleType, it should recurse check every item of them.
318
319
  if (!type || type instanceof Type_1.UnknownType || type instanceof Type_1.UnclearReferenceType
319
320
  || type instanceof Type_1.NullType || type instanceof Type_1.UndefinedType) {
320
321
  return true;
@@ -323,14 +324,30 @@ class TypeInference {
323
324
  && type.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
324
325
  return true;
325
326
  }
326
- else if (type instanceof Type_1.UnionType) {
327
- return !!type.getTypes().find(t => t instanceof Type_1.UnclearReferenceType);
327
+ else if (type instanceof Type_1.UnionType || type instanceof Type_1.IntersectionType || type instanceof Type_1.TupleType) {
328
+ return !!type.getTypes().find(t => this.hasUnclearReferenceType(t));
328
329
  }
329
330
  else if (type instanceof Type_1.ArrayType) {
330
- return (type.getBaseType() instanceof Type_1.UnclearReferenceType);
331
+ return this.hasUnclearReferenceType(type.getBaseType());
331
332
  }
332
333
  else if (type instanceof Type_1.AliasType) {
333
- return (type.getOriginalType() instanceof Type_1.UnclearReferenceType);
334
+ return this.hasUnclearReferenceType(type.getOriginalType());
335
+ }
336
+ return false;
337
+ }
338
+ // This is the temporally function to check unclearReferenceType recursively and can be removed after typeInfer supports multiple candidate types.
339
+ static hasUnclearReferenceType(type) {
340
+ if (type instanceof Type_1.UnclearReferenceType) {
341
+ return true;
342
+ }
343
+ else if (type instanceof Type_1.UnionType || type instanceof Type_1.IntersectionType || type instanceof Type_1.TupleType) {
344
+ return !!type.getTypes().find(t => this.hasUnclearReferenceType(t));
345
+ }
346
+ else if (type instanceof Type_1.ArrayType) {
347
+ return this.hasUnclearReferenceType(type.getBaseType());
348
+ }
349
+ else if (type instanceof Type_1.AliasType) {
350
+ return this.hasUnclearReferenceType(type.getOriginalType());
334
351
  }
335
352
  return false;
336
353
  }
@@ -447,9 +464,6 @@ class TypeInference {
447
464
  return new Type_1.ArrayType((_a = realTypes[0]) !== null && _a !== void 0 ? _a : Type_1.AnyType.getInstance(), 1);
448
465
  }
449
466
  let type = this.inferUnclearRefName(urType.getName(), arkClass);
450
- if (type instanceof Type_1.AliasType) {
451
- return type;
452
- }
453
467
  return type ? this.replaceTypeWithReal(type, realTypes) : null;
454
468
  }
455
469
  /**
@@ -629,6 +643,11 @@ class TypeInference {
629
643
  type.flatType().forEach(t => types.push(this.replaceTypeWithReal(t, realTypes)));
630
644
  return new Type_1.UnionType(types, this.replaceTypeWithReal(type.getCurrType(), realTypes));
631
645
  }
646
+ else if (type instanceof Type_1.IntersectionType && realTypes) {
647
+ const types = [];
648
+ type.getTypes().forEach(t => types.push(this.replaceTypeWithReal(t, realTypes)));
649
+ return new Type_1.IntersectionType(types);
650
+ }
632
651
  else if (type instanceof Type_1.ArrayType && realTypes) {
633
652
  const replacedBaseType = this.replaceTypeWithReal(type.getBaseType(), realTypes);
634
653
  return new Type_1.ArrayType(replacedBaseType, type.getDimension());
@@ -1,12 +1,12 @@
1
1
  import * as ts from 'ohos-typescript';
2
- import { Local } from '../base/Local';
3
- import { ArkAliasTypeDefineStmt } from '../base/Stmt';
4
- import { Cfg } from '../graph/Cfg';
5
- import { ArkClass } from '../model/ArkClass';
6
- import { ArkMethod } from '../model/ArkMethod';
7
- import { AliasType } from '../base/Type';
8
- import { Trap } from '../base/Trap';
9
- import { GlobalRef } from '../base/Ref';
2
+ import { Local } from '../../base/Local';
3
+ import { ArkAliasTypeDefineStmt } from '../../base/Stmt';
4
+ import { Cfg } from '../Cfg';
5
+ import { ArkClass } from '../../model/ArkClass';
6
+ import { ArkMethod } from '../../model/ArkMethod';
7
+ import { AliasType } from '../../base/Type';
8
+ import { Trap } from '../../base/Trap';
9
+ import { GlobalRef } from '../../base/Ref';
10
10
  declare class StatementBuilder {
11
11
  type: string;
12
12
  code: string;
@@ -19,7 +19,7 @@ declare class StatementBuilder {
19
19
  astNode: ts.Node | null;
20
20
  scopeID: number;
21
21
  addressCode3: string[];
22
- block: Block | null;
22
+ block: BlockBuilder | null;
23
23
  ifExitPass: boolean;
24
24
  passTmies: number;
25
25
  numOfIdentifier: number;
@@ -29,18 +29,27 @@ declare class StatementBuilder {
29
29
  declare class ConditionStatementBuilder extends StatementBuilder {
30
30
  nextT: StatementBuilder | null;
31
31
  nextF: StatementBuilder | null;
32
- loopBlock: Block | null;
32
+ loopBlock: BlockBuilder | null;
33
33
  condition: string;
34
34
  doStatement: StatementBuilder | null;
35
35
  constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
36
36
  }
37
- declare class SwitchStatementBuilder extends StatementBuilder {
37
+ export declare class SwitchStatementBuilder extends StatementBuilder {
38
38
  nexts: StatementBuilder[];
39
39
  cases: Case[];
40
40
  default: StatementBuilder | null;
41
41
  afterSwitch: StatementBuilder | null;
42
42
  constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
43
43
  }
44
+ export declare class TryStatementBuilder extends StatementBuilder {
45
+ tryFirst: StatementBuilder | null;
46
+ tryExit: StatementBuilder | null;
47
+ catchStatement: StatementBuilder | null;
48
+ catchError: string;
49
+ finallyStatement: StatementBuilder | null;
50
+ afterFinal: StatementBuilder | null;
51
+ constructor(type: string, code: string, astNode: ts.Node, scopeID: number);
52
+ }
44
53
  declare class Case {
45
54
  value: string;
46
55
  stmt: StatementBuilder;
@@ -64,11 +73,11 @@ declare class Scope {
64
73
  id: number;
65
74
  constructor(id: number);
66
75
  }
67
- declare class Block {
76
+ export declare class BlockBuilder {
68
77
  id: number;
69
78
  stmts: StatementBuilder[];
70
- nexts: Block[];
71
- lasts: Block[];
79
+ nexts: BlockBuilder[];
80
+ lasts: BlockBuilder[];
72
81
  walked: boolean;
73
82
  constructor(id: number, stmts: StatementBuilder[]);
74
83
  }
@@ -93,7 +102,7 @@ export declare class CfgBuilder {
93
102
  scopes: Scope[];
94
103
  tempVariableNum: number;
95
104
  current3ACstm: StatementBuilder;
96
- blocks: Block[];
105
+ blocks: BlockBuilder[];
97
106
  currentDeclarationKeyword: string;
98
107
  variables: Variable[];
99
108
  declaringClass: ArkClass;
@@ -122,9 +131,9 @@ export declare class CfgBuilder {
122
131
  addStmt2BlockStmtQueueInSpecialCase(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
123
132
  addStmt2BlockStmtQueue(stmt: StatementBuilder, stmtQueue: StatementBuilder[]): StatementBuilder | null;
124
133
  buildBlocks(): void;
125
- buildConditionNextBlocks(originStatement: ConditionStatementBuilder, block: Block, isLastStatement: boolean): void;
126
- buildSwitchNextBlocks(originStatement: SwitchStatementBuilder, block: Block, isLastStatement: boolean): void;
127
- buildNormalNextBlocks(originStatement: StatementBuilder, block: Block, isLastStatement: boolean): void;
134
+ buildConditionNextBlocks(originStatement: ConditionStatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
135
+ buildSwitchNextBlocks(originStatement: SwitchStatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
136
+ buildNormalNextBlocks(originStatement: StatementBuilder, block: BlockBuilder, isLastStatement: boolean): void;
128
137
  buildBlocksNextLast(): void;
129
138
  addReturnBlock(returnStatement: StatementBuilder, notReturnStmts: StatementBuilder[]): void;
130
139
  addReturnStmt(): void;
@@ -133,57 +142,36 @@ export declare class CfgBuilder {
133
142
  CfgBuilder2Array(stmt: StatementBuilder): void;
134
143
  getDotEdges(stmt: StatementBuilder): void;
135
144
  errorTest(stmt: StatementBuilder): void;
136
- printBlocks(): string;
137
145
  buildStatementBuilder4ArrowFunction(stmt: ts.Node): void;
138
146
  buildCfgBuilder(): void;
139
147
  private handleBuilder;
140
148
  isBodyEmpty(): boolean;
141
- buildCfgAndOriginalCfg(): {
149
+ buildCfg(): {
142
150
  cfg: Cfg;
143
151
  locals: Set<Local>;
144
152
  globals: Map<string, GlobalRef> | null;
145
153
  aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
146
154
  traps: Trap[];
147
155
  };
148
- buildCfgAndOriginalCfgForSimpleArrowFunction(): {
156
+ buildCfgForSimpleArrowFunction(): {
149
157
  cfg: Cfg;
150
158
  locals: Set<Local>;
151
159
  globals: Map<string, GlobalRef> | null;
152
160
  aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
153
161
  traps: Trap[];
154
162
  };
155
- buildNormalCfgAndOriginalCfg(): {
163
+ buildNormalCfg(): {
156
164
  cfg: Cfg;
157
165
  locals: Set<Local>;
158
166
  globals: Map<string, GlobalRef> | null;
159
167
  aliasTypeMap: Map<string, [AliasType, ArkAliasTypeDefineStmt]>;
160
168
  traps: Trap[];
161
169
  };
170
+ private initializeBuild;
171
+ private processBlocks;
172
+ private adjustBlocks;
173
+ private createCfg;
162
174
  private linkBasicBlocks;
163
- private rebuildBlocksContainConditionalOperator;
164
- private relinkPrevAndSuccOfBlockContainConditionalOperator;
165
- private generateBlocksContainConditionalOperatorGroup;
166
- private generateBlocksContainSingleConditionalOperator;
167
- private generateBlockWithoutConditionalOperator;
168
- private deleteDummyConditionalOperatorStmt;
169
- private findFirstConditionalOperator;
170
- private removeUnnecessaryBlocksInConditionalOperator;
171
- private replaceTempRecursively;
172
- private rebuildBlocksInLoop;
173
- private doesPrevBlockBuilderContainLoop;
174
- private insertBeforeConditionBlockBuilder;
175
- private findIteratorIdx;
176
- private adjustIncrementorStmts;
177
- private buildTraps;
178
- private buildTrapsIfNoFinally;
179
- private buildTrapsIfFinallyExist;
180
- private getAllBlocksBFS;
181
- private copyFinallyBlocks;
182
- private copyBlocks;
183
- private copyStmt;
184
- private buildSwitch;
185
- private generateIfBlocksForCases;
186
- private linkIfBlockAndCaseBlock;
187
175
  }
188
176
  export {};
189
177
  //# sourceMappingURL=CfgBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}