arkanalyzer 1.0.17 → 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 (108) hide show
  1. package/lib/core/base/Decorator.d.ts +1 -0
  2. package/lib/core/base/Decorator.d.ts.map +1 -1
  3. package/lib/core/base/Decorator.js +4 -1
  4. package/lib/core/base/Type.d.ts +45 -3
  5. package/lib/core/base/Type.d.ts.map +1 -1
  6. package/lib/core/base/Type.js +84 -4
  7. package/lib/core/common/ArkIRTransformer.d.ts +1 -0
  8. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  9. package/lib/core/common/ArkIRTransformer.js +42 -23
  10. package/lib/core/common/ArkValueTransformer.d.ts +1 -0
  11. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  12. package/lib/core/common/ArkValueTransformer.js +45 -10
  13. package/lib/core/common/IRInference.d.ts.map +1 -1
  14. package/lib/core/common/IRInference.js +6 -0
  15. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  16. package/lib/core/common/ModelUtils.js +5 -1
  17. package/lib/core/common/TypeInference.d.ts +1 -0
  18. package/lib/core/common/TypeInference.d.ts.map +1 -1
  19. package/lib/core/common/TypeInference.js +27 -8
  20. package/lib/core/{common → graph/builder}/CfgBuilder.d.ts +34 -46
  21. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -0
  22. package/lib/core/graph/builder/CfgBuilder.js +1139 -0
  23. package/lib/core/graph/builder/ConditionBuilder.d.ts +16 -0
  24. package/lib/core/graph/builder/ConditionBuilder.d.ts.map +1 -0
  25. package/lib/core/graph/builder/ConditionBuilder.js +252 -0
  26. package/lib/core/graph/builder/LoopBuilder.d.ts +21 -0
  27. package/lib/core/graph/builder/LoopBuilder.d.ts.map +1 -0
  28. package/lib/core/graph/builder/LoopBuilder.js +251 -0
  29. package/lib/core/graph/builder/SwitchBuilder.d.ts +12 -0
  30. package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -0
  31. package/lib/core/graph/builder/SwitchBuilder.js +152 -0
  32. package/lib/core/graph/builder/TrapBuilder.d.ts +17 -0
  33. package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -0
  34. package/lib/core/graph/builder/TrapBuilder.js +272 -0
  35. package/lib/core/model/ArkMethod.d.ts +1 -1
  36. package/lib/core/model/ArkMethod.js +1 -1
  37. package/lib/core/model/ArkSignature.d.ts +9 -1
  38. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  39. package/lib/core/model/ArkSignature.js +17 -1
  40. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  41. package/lib/core/model/builder/ArkClassBuilder.js +2 -1
  42. package/lib/core/model/builder/ArkMethodBuilder.js +1 -1
  43. package/lib/core/{common → model/builder}/BodyBuilder.d.ts +5 -5
  44. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -0
  45. package/lib/core/{common → model/builder}/BodyBuilder.js +12 -12
  46. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  47. package/lib/core/model/builder/builderUtils.js +31 -5
  48. package/lib/save/JsonPrinter.d.ts +1 -1
  49. package/lib/save/JsonPrinter.d.ts.map +1 -1
  50. package/lib/save/JsonPrinter.js +2 -2
  51. package/lib/save/PrinterBuilder.d.ts +22 -0
  52. package/lib/save/PrinterBuilder.d.ts.map +1 -1
  53. package/lib/save/PrinterBuilder.js +54 -1
  54. package/lib/save/arkir/ArkIRClassPrinter.d.ts +14 -0
  55. package/lib/save/arkir/ArkIRClassPrinter.d.ts.map +1 -0
  56. package/lib/save/arkir/ArkIRClassPrinter.js +92 -0
  57. package/lib/save/arkir/ArkIRFieldPrinter.d.ts +12 -0
  58. package/lib/save/arkir/ArkIRFieldPrinter.d.ts.map +1 -0
  59. package/lib/save/arkir/ArkIRFieldPrinter.js +64 -0
  60. package/lib/save/arkir/ArkIRFilePrinter.d.ts +13 -0
  61. package/lib/save/arkir/ArkIRFilePrinter.d.ts.map +1 -0
  62. package/lib/save/arkir/ArkIRFilePrinter.js +54 -0
  63. package/lib/save/arkir/ArkIRMethodPrinter.d.ts +17 -0
  64. package/lib/save/arkir/ArkIRMethodPrinter.d.ts.map +1 -0
  65. package/lib/save/arkir/ArkIRMethodPrinter.js +159 -0
  66. package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +12 -0
  67. package/lib/save/arkir/ArkIRNamespacePrinter.d.ts.map +1 -0
  68. package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -0
  69. package/lib/save/base/BasePrinter.d.ts +24 -0
  70. package/lib/save/base/BasePrinter.d.ts.map +1 -0
  71. package/lib/save/base/BasePrinter.js +70 -0
  72. package/lib/save/base/ExportPrinter.d.ts +9 -0
  73. package/lib/save/base/ExportPrinter.d.ts.map +1 -0
  74. package/lib/save/base/ExportPrinter.js +67 -0
  75. package/lib/save/base/ImportPrinter.d.ts +10 -0
  76. package/lib/save/base/ImportPrinter.d.ts.map +1 -0
  77. package/lib/save/base/ImportPrinter.js +92 -0
  78. package/lib/save/{source/SourceUtils.d.ts → base/PrinterUtils.d.ts} +2 -2
  79. package/lib/save/{source/SourceUtils.d.ts.map → base/PrinterUtils.d.ts.map} +1 -1
  80. package/lib/save/{source/SourceUtils.js → base/PrinterUtils.js} +10 -10
  81. package/lib/save/source/SourceBase.d.ts +2 -11
  82. package/lib/save/source/SourceBase.d.ts.map +1 -1
  83. package/lib/save/source/SourceBase.js +3 -25
  84. package/lib/save/source/SourceBody.js +3 -3
  85. package/lib/save/source/SourceClass.d.ts +2 -1
  86. package/lib/save/source/SourceClass.d.ts.map +1 -1
  87. package/lib/save/source/SourceClass.js +18 -17
  88. package/lib/save/source/SourceFilePrinter.d.ts +1 -1
  89. package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
  90. package/lib/save/source/SourceFilePrinter.js +9 -10
  91. package/lib/save/source/SourceMethod.d.ts +1 -1
  92. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  93. package/lib/save/source/SourceMethod.js +37 -22
  94. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  95. package/lib/save/source/SourceNamespace.js +6 -6
  96. package/lib/save/source/SourceStmt.d.ts +1 -1
  97. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  98. package/lib/save/source/SourceStmt.js +29 -42
  99. package/lib/save/source/SourceTransformer.d.ts +3 -1
  100. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  101. package/lib/save/source/SourceTransformer.js +65 -29
  102. package/package.json +1 -1
  103. package/lib/core/common/BodyBuilder.d.ts.map +0 -1
  104. package/lib/core/common/CfgBuilder.d.ts.map +0 -1
  105. package/lib/core/common/CfgBuilder.js +0 -1886
  106. package/lib/save/source/SourceModule.d.ts +0 -16
  107. package/lib/save/source/SourceModule.d.ts.map +0 -1
  108. package/lib/save/source/SourceModule.js +0 -125
@@ -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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"}