arkanalyzer 1.0.7 → 1.0.9

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 (164) hide show
  1. package/config/arkanalyzer.json +8 -0
  2. package/lib/Config.d.ts +9 -1
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Config.js +24 -11
  5. package/lib/Scene.d.ts +49 -42
  6. package/lib/Scene.d.ts.map +1 -1
  7. package/lib/Scene.js +124 -93
  8. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
  9. package/lib/callgraph/common/Statistics.js +1 -1
  10. package/lib/callgraph/model/CallGraph.d.ts +3 -2
  11. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  12. package/lib/callgraph/model/CallGraph.js +15 -5
  13. package/lib/callgraph/model/builder/CallGraphBuilder.js +1 -1
  14. package/lib/callgraph/pointerAnalysis/Pag.d.ts +35 -8
  15. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  16. package/lib/callgraph/pointerAnalysis/Pag.js +89 -8
  17. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +32 -5
  18. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/PagBuilder.js +378 -83
  20. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +3 -0
  21. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +71 -18
  23. package/lib/core/base/Constant.d.ts +25 -5
  24. package/lib/core/base/Constant.d.ts.map +1 -1
  25. package/lib/core/base/Constant.js +46 -8
  26. package/lib/core/base/Expr.d.ts +45 -40
  27. package/lib/core/base/Expr.d.ts.map +1 -1
  28. package/lib/core/base/Expr.js +236 -150
  29. package/lib/core/base/Local.d.ts +2 -2
  30. package/lib/core/base/Local.d.ts.map +1 -1
  31. package/lib/core/base/Local.js +2 -2
  32. package/lib/core/base/Ref.d.ts +38 -37
  33. package/lib/core/base/Ref.d.ts.map +1 -1
  34. package/lib/core/base/Ref.js +102 -70
  35. package/lib/core/base/Stmt.d.ts +4 -0
  36. package/lib/core/base/Stmt.d.ts.map +1 -1
  37. package/lib/core/base/Stmt.js +12 -1
  38. package/lib/core/base/Type.d.ts +4 -0
  39. package/lib/core/base/Type.d.ts.map +1 -1
  40. package/lib/core/base/Type.js +41 -17
  41. package/lib/core/common/ArkError.d.ts +15 -0
  42. package/lib/core/common/ArkError.d.ts.map +1 -0
  43. package/lib/core/common/ArkError.js +28 -0
  44. package/lib/core/common/ArkIRTransformer.d.ts +1 -1
  45. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  46. package/lib/core/common/ArkIRTransformer.js +24 -8
  47. package/lib/core/common/CfgBuilder.d.ts.map +1 -1
  48. package/lib/core/common/CfgBuilder.js +5 -0
  49. package/lib/core/common/Const.d.ts +15 -10
  50. package/lib/core/common/Const.d.ts.map +1 -1
  51. package/lib/core/common/Const.js +18 -11
  52. package/lib/core/common/DummyMainCreater.d.ts +2 -1
  53. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  54. package/lib/core/common/DummyMainCreater.js +28 -15
  55. package/lib/core/common/EtsConst.d.ts +1 -0
  56. package/lib/core/common/EtsConst.d.ts.map +1 -1
  57. package/lib/core/common/EtsConst.js +2 -1
  58. package/lib/core/common/IRUtils.d.ts +6 -0
  59. package/lib/core/common/IRUtils.d.ts.map +1 -1
  60. package/lib/core/common/IRUtils.js +29 -2
  61. package/lib/core/common/ModelUtils.d.ts +1 -0
  62. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  63. package/lib/core/common/ModelUtils.js +32 -32
  64. package/lib/core/common/TSConst.d.ts +10 -3
  65. package/lib/core/common/TSConst.d.ts.map +1 -1
  66. package/lib/core/common/TSConst.js +11 -4
  67. package/lib/core/common/TypeInference.d.ts +8 -2
  68. package/lib/core/common/TypeInference.d.ts.map +1 -1
  69. package/lib/core/common/TypeInference.js +218 -87
  70. package/lib/core/common/ValueUtil.d.ts +0 -4
  71. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  72. package/lib/core/common/ValueUtil.js +8 -25
  73. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  74. package/lib/core/dataflow/DataflowSolver.js +2 -4
  75. package/lib/core/dataflow/TiantAnalysis.js +2 -1
  76. package/lib/core/dataflow/Util.d.ts +1 -1
  77. package/lib/core/dataflow/Util.d.ts.map +1 -1
  78. package/lib/core/dataflow/Util.js +8 -7
  79. package/lib/core/graph/BasicBlock.d.ts +41 -0
  80. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  81. package/lib/core/graph/BasicBlock.js +132 -1
  82. package/lib/core/graph/Cfg.d.ts +30 -1
  83. package/lib/core/graph/Cfg.d.ts.map +1 -1
  84. package/lib/core/graph/Cfg.js +129 -6
  85. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  86. package/lib/core/graph/builder/ViewTreeBuilder.js +3 -2
  87. package/lib/core/model/ArkBaseModel.d.ts +8 -0
  88. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  89. package/lib/core/model/ArkBaseModel.js +55 -3
  90. package/lib/core/model/ArkClass.d.ts +36 -30
  91. package/lib/core/model/ArkClass.d.ts.map +1 -1
  92. package/lib/core/model/ArkClass.js +78 -39
  93. package/lib/core/model/ArkExport.d.ts +3 -0
  94. package/lib/core/model/ArkExport.d.ts.map +1 -1
  95. package/lib/core/model/ArkExport.js +10 -0
  96. package/lib/core/model/ArkField.d.ts +2 -0
  97. package/lib/core/model/ArkField.d.ts.map +1 -1
  98. package/lib/core/model/ArkField.js +3 -0
  99. package/lib/core/model/ArkFile.d.ts +4 -0
  100. package/lib/core/model/ArkFile.d.ts.map +1 -1
  101. package/lib/core/model/ArkFile.js +20 -0
  102. package/lib/core/model/ArkImport.d.ts +2 -0
  103. package/lib/core/model/ArkImport.d.ts.map +1 -1
  104. package/lib/core/model/ArkImport.js +3 -0
  105. package/lib/core/model/ArkMetadata.d.ts +20 -0
  106. package/lib/core/model/ArkMetadata.d.ts.map +1 -0
  107. package/lib/core/model/ArkMetadata.js +44 -0
  108. package/lib/core/model/ArkMethod.d.ts +156 -53
  109. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  110. package/lib/core/model/ArkMethod.js +309 -54
  111. package/lib/core/model/ArkNamespace.d.ts +4 -0
  112. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  113. package/lib/core/model/ArkNamespace.js +13 -0
  114. package/lib/core/model/ArkSignature.d.ts +11 -5
  115. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  116. package/lib/core/model/ArkSignature.js +38 -18
  117. package/lib/core/model/builder/ArkClassBuilder.d.ts +0 -1
  118. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  119. package/lib/core/model/builder/ArkClassBuilder.js +9 -34
  120. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  121. package/lib/core/model/builder/ArkExportBuilder.js +6 -1
  122. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  123. package/lib/core/model/builder/ArkFieldBuilder.js +3 -0
  124. package/lib/core/model/builder/ArkFileBuilder.js +1 -1
  125. package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
  126. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
  127. package/lib/core/model/builder/ArkImportBuilder.js +12 -5
  128. package/lib/core/model/builder/ArkMethodBuilder.d.ts +2 -1
  129. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  130. package/lib/core/model/builder/ArkMethodBuilder.js +87 -47
  131. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  132. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -0
  133. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  134. package/lib/core/model/builder/builderUtils.js +25 -2
  135. package/lib/save/source/SourceClass.d.ts.map +1 -1
  136. package/lib/save/source/SourceClass.js +4 -0
  137. package/lib/save/source/SourceField.d.ts.map +1 -1
  138. package/lib/save/source/SourceField.js +4 -0
  139. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  140. package/lib/save/source/SourceMethod.js +7 -0
  141. package/lib/save/source/SourceModule.d.ts.map +1 -1
  142. package/lib/save/source/SourceModule.js +14 -9
  143. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  144. package/lib/save/source/SourceNamespace.js +4 -0
  145. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  146. package/lib/save/source/SourceStmt.js +15 -3
  147. package/lib/save/source/SourceTransformer.d.ts +6 -0
  148. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  149. package/lib/save/source/SourceTransformer.js +72 -41
  150. package/lib/save/source/SourceUtils.d.ts.map +1 -1
  151. package/lib/save/source/SourceUtils.js +3 -2
  152. package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
  153. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  154. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  155. package/lib/utils/CfgStructualAnalysis.js +41 -7
  156. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  157. package/lib/utils/callGraphUtils.js +7 -10
  158. package/lib/utils/crypto_utils.d.ts +6 -0
  159. package/lib/utils/crypto_utils.d.ts.map +1 -0
  160. package/lib/utils/crypto_utils.js +57 -0
  161. package/lib/utils/getAllFiles.d.ts +1 -1
  162. package/lib/utils/getAllFiles.d.ts.map +1 -1
  163. package/lib/utils/getAllFiles.js +4 -5
  164. package/package.json +3 -2
@@ -2,29 +2,29 @@ import { FieldSignature } from '../model/ArkSignature';
2
2
  import { Local } from './Local';
3
3
  import { ClassType, Type } from './Type';
4
4
  import { Value } from './Value';
5
- import { ArkClass } from '../model/ArkClass';
5
+ import { ArkMethod } from '../model/ArkMethod';
6
6
  /**
7
7
  * @category core/base/ref
8
8
  */
9
9
  export declare abstract class AbstractRef implements Value {
10
10
  abstract getUses(): Value[];
11
11
  abstract getType(): Type;
12
- inferType(arkClass: ArkClass): AbstractRef;
12
+ inferType(arkMethod: ArkMethod): AbstractRef;
13
13
  }
14
14
  export declare class ArkArrayRef extends AbstractRef {
15
15
  private base;
16
16
  private index;
17
17
  constructor(base: Local, index: Value);
18
18
  /**
19
- * Returns the base of this array reference. Array reference refers to access to array elements.
20
- * Array references usually consist of an local variable and an index.
21
- * For example, `a[i]` is a typical array reference, where `a` is the base (i.e., local variable)
22
- * pointing to the actual memory location where the array is stored
23
- * and `i` is the index indicating access to the `i-th` element from array `a`.
24
- * @returns the base of this array reference.
25
- * @example
26
- * 1. Get the base and the specific elements.
27
-
19
+ * Returns the base of this array reference. Array reference refers to access to array elements.
20
+ * Array references usually consist of an local variable and an index.
21
+ * For example, `a[i]` is a typical array reference, where `a` is the base (i.e., local variable)
22
+ * pointing to the actual memory location where the array is stored
23
+ * and `i` is the index indicating access to the `i-th` element from array `a`.
24
+ * @returns the base of this array reference.
25
+ * @example
26
+ * 1. Get the base and the specific elements.
27
+
28
28
  ```typescript
29
29
  // Create an array
30
30
  let myArray: number[] = [10, 20, 30, 40];
@@ -32,14 +32,14 @@ export declare class ArkArrayRef extends AbstractRef {
32
32
  let arrayRef = new ArkArrayRef(myArray, 2);
33
33
  // Use the getBase() method to get the base of the array
34
34
  let baseArray = arrayRef.getBase();
35
-
35
+
36
36
  console.log("Base array:", baseArray); // Output: Base array: [10, 20, 30, 40]
37
-
37
+
38
38
  // Use baseArray and obeject index of ArrayRef to access to specific array elements
39
39
  let element = baseArray[arrayRef.index];
40
40
  console.log("Element at index", arrayRef.index, ":", element); // Output: Element at index 2 : 30
41
41
  ```
42
- */
42
+ */
43
43
  getBase(): Local;
44
44
  setBase(newBase: Local): void;
45
45
  /**
@@ -69,16 +69,16 @@ export declare abstract class AbstractFieldRef extends AbstractRef {
69
69
  * @example
70
70
  * 1. Compare two Fields
71
71
 
72
- ```typescript
73
- const fieldSignature = new FieldSignature();
74
- fieldSignature.setFieldName(...);
75
- const fieldRef = new ArkInstanceFieldRef(baseValue as Local, fieldSignature);
76
- ...
77
- if (fieldRef.getFieldSignature().getFieldName() ===
78
- targetField.getFieldSignature().getFieldName()) {
79
- ...
80
- }
81
- ```
72
+ ```typescript
73
+ const fieldSignature = new FieldSignature();
74
+ fieldSignature.setFieldName(...);
75
+ const fieldRef = new ArkInstanceFieldRef(baseValue as Local, fieldSignature);
76
+ ...
77
+ if (fieldRef.getFieldSignature().getFieldName() ===
78
+ targetField.getFieldSignature().getFieldName()) {
79
+ ...
80
+ }
81
+ ```
82
82
  */
83
83
  getFieldSignature(): FieldSignature;
84
84
  setFieldSignature(newFieldSignature: FieldSignature): void;
@@ -96,22 +96,23 @@ export declare class ArkInstanceFieldRef extends AbstractFieldRef {
96
96
  * @example
97
97
  * 1. Get a base.
98
98
 
99
- ```typescript
100
- if (expr instanceof ArkInstanceFieldRef) {
101
- ...
102
- let base = expr.getBase();
103
- if (base.getName() == 'this') {
104
- ...
105
- }
106
- ...
107
- }
108
- ```
99
+ ```typescript
100
+ if (expr instanceof ArkInstanceFieldRef) {
101
+ ...
102
+ let base = expr.getBase();
103
+ if (base.getName() == 'this') {
104
+ ...
105
+ }
106
+ ...
107
+ }
108
+ ```
109
109
  */
110
110
  getBase(): Local;
111
111
  setBase(newBase: Local): void;
112
112
  getUses(): Value[];
113
113
  toString(): string;
114
- inferType(arkClass: ArkClass): AbstractRef;
114
+ private getBaseType;
115
+ inferType(arkMethod: ArkMethod): AbstractRef;
115
116
  private getNewFieldSignature;
116
117
  }
117
118
  export declare class ArkStaticFieldRef extends AbstractFieldRef {
@@ -126,14 +127,14 @@ export declare class ArkParameterRef extends AbstractRef {
126
127
  getIndex(): number;
127
128
  getType(): Type;
128
129
  setType(newType: Type): void;
129
- inferType(arkClass: ArkClass): AbstractRef;
130
+ inferType(arkMethod: ArkMethod): AbstractRef;
130
131
  getUses(): Value[];
131
132
  toString(): string;
132
133
  }
133
134
  export declare class ArkThisRef extends AbstractRef {
134
135
  private type;
135
136
  constructor(type: ClassType);
136
- inferType(arkClass: ArkClass): AbstractRef;
137
+ inferType(arkMethod: ArkMethod): AbstractRef;
137
138
  getType(): ClassType;
138
139
  getUses(): Value[];
139
140
  toString(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../src/core/base/Ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../src/core/base/Ref.ts"],"names":[],"mappings":"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"}
@@ -48,12 +48,13 @@ const ValueUtil_1 = require("../common/ValueUtil");
48
48
  const ArkField_1 = require("../model/ArkField");
49
49
  const ArkMethod_1 = require("../model/ArkMethod");
50
50
  const Const_1 = require("../common/Const");
51
+ const TSConst_1 = require("../common/TSConst");
51
52
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Ref');
52
53
  /**
53
54
  * @category core/base/ref
54
55
  */
55
56
  class AbstractRef {
56
- inferType(arkClass) {
57
+ inferType(arkMethod) {
57
58
  return this;
58
59
  }
59
60
  }
@@ -65,15 +66,15 @@ class ArkArrayRef extends AbstractRef {
65
66
  this.index = index;
66
67
  }
67
68
  /**
68
- * Returns the base of this array reference. Array reference refers to access to array elements.
69
- * Array references usually consist of an local variable and an index.
70
- * For example, `a[i]` is a typical array reference, where `a` is the base (i.e., local variable)
71
- * pointing to the actual memory location where the array is stored
72
- * and `i` is the index indicating access to the `i-th` element from array `a`.
73
- * @returns the base of this array reference.
74
- * @example
75
- * 1. Get the base and the specific elements.
76
-
69
+ * Returns the base of this array reference. Array reference refers to access to array elements.
70
+ * Array references usually consist of an local variable and an index.
71
+ * For example, `a[i]` is a typical array reference, where `a` is the base (i.e., local variable)
72
+ * pointing to the actual memory location where the array is stored
73
+ * and `i` is the index indicating access to the `i-th` element from array `a`.
74
+ * @returns the base of this array reference.
75
+ * @example
76
+ * 1. Get the base and the specific elements.
77
+
77
78
  ```typescript
78
79
  // Create an array
79
80
  let myArray: number[] = [10, 20, 30, 40];
@@ -81,14 +82,14 @@ class ArkArrayRef extends AbstractRef {
81
82
  let arrayRef = new ArkArrayRef(myArray, 2);
82
83
  // Use the getBase() method to get the base of the array
83
84
  let baseArray = arrayRef.getBase();
84
-
85
+
85
86
  console.log("Base array:", baseArray); // Output: Base array: [10, 20, 30, 40]
86
-
87
+
87
88
  // Use baseArray and obeject index of ArrayRef to access to specific array elements
88
89
  let element = baseArray[arrayRef.index];
89
90
  console.log("Element at index", arrayRef.index, ":", element); // Output: Element at index 2 : 30
90
91
  ```
91
- */
92
+ */
92
93
  getBase() {
93
94
  return this.base;
94
95
  }
@@ -109,6 +110,9 @@ class ArkArrayRef extends AbstractRef {
109
110
  }
110
111
  getType() {
111
112
  const baseType = this.base.getType();
113
+ if (baseType instanceof Type_1.AliasType) {
114
+ return baseType.getOriginalType();
115
+ }
112
116
  if (baseType instanceof Type_1.ArrayType) {
113
117
  return baseType.getBaseType();
114
118
  }
@@ -149,16 +153,16 @@ class AbstractFieldRef extends AbstractRef {
149
153
  * @example
150
154
  * 1. Compare two Fields
151
155
 
152
- ```typescript
153
- const fieldSignature = new FieldSignature();
154
- fieldSignature.setFieldName(...);
155
- const fieldRef = new ArkInstanceFieldRef(baseValue as Local, fieldSignature);
156
- ...
157
- if (fieldRef.getFieldSignature().getFieldName() ===
158
- targetField.getFieldSignature().getFieldName()) {
159
- ...
160
- }
161
- ```
156
+ ```typescript
157
+ const fieldSignature = new FieldSignature();
158
+ fieldSignature.setFieldName(...);
159
+ const fieldRef = new ArkInstanceFieldRef(baseValue as Local, fieldSignature);
160
+ ...
161
+ if (fieldRef.getFieldSignature().getFieldName() ===
162
+ targetField.getFieldSignature().getFieldName()) {
163
+ ...
164
+ }
165
+ ```
162
166
  */
163
167
  getFieldSignature() {
164
168
  return this.fieldSignature;
@@ -185,16 +189,16 @@ class ArkInstanceFieldRef extends AbstractFieldRef {
185
189
  * @example
186
190
  * 1. Get a base.
187
191
 
188
- ```typescript
189
- if (expr instanceof ArkInstanceFieldRef) {
190
- ...
191
- let base = expr.getBase();
192
- if (base.getName() == 'this') {
193
- ...
194
- }
195
- ...
196
- }
197
- ```
192
+ ```typescript
193
+ if (expr instanceof ArkInstanceFieldRef) {
194
+ ...
195
+ let base = expr.getBase();
196
+ if (base.getName() == 'this') {
197
+ ...
198
+ }
199
+ ...
200
+ }
201
+ ```
198
202
  */
199
203
  getBase() {
200
204
  return this.base;
@@ -211,7 +215,7 @@ class ArkInstanceFieldRef extends AbstractFieldRef {
211
215
  toString() {
212
216
  return this.base.toString() + '.<' + this.getFieldSignature() + '>';
213
217
  }
214
- inferType(arkClass) {
218
+ getBaseType(arkClass) {
215
219
  let baseType = this.base.getType();
216
220
  if (this.base instanceof Local_1.Local && baseType instanceof Type_1.UnknownType) {
217
221
  baseType = TypeInference_1.TypeInference.inferBaseType(this.base.getName(), arkClass);
@@ -225,61 +229,80 @@ class ArkInstanceFieldRef extends AbstractFieldRef {
225
229
  }
226
230
  if (!baseType) {
227
231
  logger.warn('infer field ref base type fail: ' + this.toString());
228
- return this;
232
+ return null;
229
233
  }
230
234
  if (this.base instanceof Local_1.Local) {
235
+ if (this.base.getName() === TSConst_1.THIS_NAME && arkClass.isAnonymousClass()) {
236
+ return null;
237
+ }
231
238
  this.base.setType(baseType);
232
239
  }
240
+ if (baseType instanceof Type_1.AliasType) {
241
+ baseType = baseType.getOriginalType();
242
+ }
243
+ return baseType;
244
+ }
245
+ inferType(arkMethod) {
246
+ const arkClass = arkMethod.getDeclaringArkClass();
247
+ const baseType = this.getBaseType(arkClass);
248
+ if (!baseType) {
249
+ return this;
250
+ }
233
251
  if (baseType instanceof Type_1.ArrayType && this.getFieldName() !== 'length') {
234
252
  return new ArkArrayRef(this.base, ValueUtil_1.ValueUtil.createConst(this.getFieldName()));
235
253
  }
236
- const newFieldSignature = this.getNewFieldSignature(arkClass, baseType);
237
- if (newFieldSignature.isStatic()) {
238
- return new ArkStaticFieldRef(newFieldSignature);
254
+ let newFieldSignature = this.getNewFieldSignature(arkClass, baseType);
255
+ if (baseType instanceof Type_1.UnionType) {
256
+ for (const type of baseType.getTypes()) {
257
+ if (type instanceof Type_1.UndefinedType || type instanceof Type_1.NullType) {
258
+ continue;
259
+ }
260
+ newFieldSignature = this.getNewFieldSignature(arkClass, baseType);
261
+ if (!TypeInference_1.TypeInference.isUnclearType(newFieldSignature)) {
262
+ break;
263
+ }
264
+ }
239
265
  }
240
266
  else {
267
+ newFieldSignature = this.getNewFieldSignature(arkClass, baseType);
268
+ }
269
+ if (newFieldSignature) {
270
+ if (newFieldSignature.isStatic()) {
271
+ return new ArkStaticFieldRef(newFieldSignature);
272
+ }
241
273
  this.setFieldSignature(newFieldSignature);
242
274
  }
243
275
  return this;
244
276
  }
245
277
  getNewFieldSignature(arkClass, baseType) {
246
- let oldFieldSignature = this.getFieldSignature();
247
- const propertyAndproperty = TypeInference_1.TypeInference.inferFieldType(baseType, this.getFieldName(), arkClass);
248
- let property = null;
249
- let propertyType = oldFieldSignature.getType();
250
- if (propertyAndproperty) {
251
- property = propertyAndproperty[0];
252
- propertyType = propertyAndproperty[1];
253
- }
254
- if (TypeInference_1.TypeInference.isUnclearType(propertyType)) {
278
+ const fieldName = this.getFieldName().replace(/[\"|\']/, '');
279
+ const propertyAndType = TypeInference_1.TypeInference.inferFieldType(baseType, fieldName, arkClass);
280
+ let propertyType = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[1];
281
+ if (propertyType && TypeInference_1.TypeInference.isUnclearType(propertyType)) {
255
282
  const newType = TypeInference_1.TypeInference.inferUnclearedType(propertyType, arkClass);
256
283
  if (newType) {
257
284
  propertyType = newType;
258
285
  }
259
286
  }
260
- let newFieldSignature;
261
- if (baseType instanceof Type_1.ClassType && property instanceof ArkField_1.ArkField) {
262
- newFieldSignature = property.getSignature();
287
+ let staticFlag;
288
+ let signature;
289
+ if (baseType instanceof Type_1.ClassType) {
290
+ const property = propertyAndType === null || propertyAndType === void 0 ? void 0 : propertyAndType[0];
291
+ if (property instanceof ArkField_1.ArkField) {
292
+ return property.getSignature();
293
+ }
294
+ staticFlag = baseType.getClassSignature().getClassName() === Const_1.DEFAULT_ARK_CLASS_NAME ||
295
+ (property instanceof ArkMethod_1.ArkMethod && property.isStatic());
296
+ signature = property instanceof ArkMethod_1.ArkMethod ? property.getSignature().getDeclaringClassSignature() : baseType.getClassSignature();
297
+ }
298
+ else if (baseType instanceof Type_1.AnnotationNamespaceType) {
299
+ staticFlag = true;
300
+ signature = baseType.getNamespaceSignature();
263
301
  }
264
302
  else {
265
- let staticFlag;
266
- let signature;
267
- if (baseType instanceof Type_1.ClassType) {
268
- staticFlag = baseType.getClassSignature().getClassName() === Const_1.DEFAULT_ARK_CLASS_NAME ||
269
- (property instanceof ArkMethod_1.ArkMethod && property.isStatic());
270
- signature = baseType.getClassSignature();
271
- }
272
- else if (baseType instanceof Type_1.AnnotationNamespaceType) {
273
- staticFlag = true;
274
- signature = baseType.getNamespaceSignature();
275
- }
276
- else {
277
- staticFlag = oldFieldSignature.isStatic();
278
- signature = oldFieldSignature.getDeclaringSignature();
279
- }
280
- newFieldSignature = new ArkSignature_1.FieldSignature(this.getFieldName(), signature, propertyType, staticFlag);
303
+ return null;
281
304
  }
282
- return newFieldSignature;
305
+ return new ArkSignature_1.FieldSignature(fieldName, signature, propertyType !== null && propertyType !== void 0 ? propertyType : this.getType(), staticFlag);
283
306
  }
284
307
  }
285
308
  exports.ArkInstanceFieldRef = ArkInstanceFieldRef;
@@ -310,8 +333,16 @@ class ArkParameterRef extends AbstractRef {
310
333
  setType(newType) {
311
334
  this.paramType = newType;
312
335
  }
313
- inferType(arkClass) {
314
- let type = TypeInference_1.TypeInference.inferUnclearedType(this.paramType, arkClass);
336
+ inferType(arkMethod) {
337
+ var _a;
338
+ if (arkMethod.isAnonymousMethod() && this.paramType instanceof Type_1.UnknownType) {
339
+ const type1 = (_a = arkMethod.getSignature().getMethodSubSignature().getParameters()[this.index]) === null || _a === void 0 ? void 0 : _a.getType();
340
+ if (!TypeInference_1.TypeInference.isUnclearType(type1)) {
341
+ this.paramType = type1;
342
+ return this;
343
+ }
344
+ }
345
+ let type = TypeInference_1.TypeInference.inferUnclearedType(this.paramType, arkMethod.getDeclaringArkClass());
315
346
  if (type) {
316
347
  this.paramType = type;
317
348
  }
@@ -330,7 +361,8 @@ class ArkThisRef extends AbstractRef {
330
361
  super();
331
362
  this.type = type;
332
363
  }
333
- inferType(arkClass) {
364
+ inferType(arkMethod) {
365
+ const arkClass = arkMethod.getDeclaringArkClass();
334
366
  const className = this.type.getClassSignature().getClassName();
335
367
  if (className.startsWith(Const_1.ANONYMOUS_CLASS_PREFIX)) {
336
368
  let type = TypeInference_1.TypeInference.inferBaseType(className.split(Const_1.ANONYMOUS_CLASS_DELIMITER)[1], arkClass);
@@ -3,6 +3,7 @@ import { AbstractExpr, AbstractInvokeExpr, ArkConditionExpr } from './Expr';
3
3
  import { AbstractFieldRef, ArkArrayRef } from './Ref';
4
4
  import { Value } from './Value';
5
5
  import { FullPosition, LineColPosition } from './Position';
6
+ import { ArkMetadata, ArkMetadataKind, ArkMetadataType } from '../model/ArkMetadata';
6
7
  /**
7
8
  * @category core/base/stmt
8
9
  */
@@ -12,6 +13,9 @@ export declare abstract class Stmt {
12
13
  protected originalPosition: LineColPosition;
13
14
  protected cfg: Cfg;
14
15
  protected operandOriginalPositions?: FullPosition[];
16
+ metadata?: ArkMetadata;
17
+ getMetadata(kind: ArkMetadataKind): ArkMetadataType | undefined;
18
+ setMetadata(kind: ArkMetadataKind, value: ArkMetadataType): void;
15
19
  /** Return a list of values which are uesd in this statement */
16
20
  getUses(): Value[];
17
21
  replaceUse(oldUse: Value, newUse: Value): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ const StmtUseReplacer_1 = require("../common/StmtUseReplacer");
19
19
  const Expr_1 = require("./Expr");
20
20
  const Ref_1 = require("./Ref");
21
21
  const Position_1 = require("./Position");
22
+ const ArkMetadata_1 = require("../model/ArkMetadata");
22
23
  /**
23
24
  * @category core/base/stmt
24
25
  */
@@ -26,7 +27,17 @@ class Stmt {
26
27
  constructor() {
27
28
  this.originalPosition = Position_1.LineColPosition.DEFAULT;
28
29
  }
29
- // def and uses one by one
30
+ getMetadata(kind) {
31
+ var _a;
32
+ return (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.getMetadata(kind);
33
+ }
34
+ setMetadata(kind, value) {
35
+ var _a;
36
+ if (!this.metadata) {
37
+ this.metadata = new ArkMetadata_1.ArkMetadata();
38
+ }
39
+ return (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.setMetadata(kind, value);
40
+ }
30
41
  /** Return a list of values which are uesd in this statement */
31
42
  getUses() {
32
43
  return [];
@@ -173,6 +173,7 @@ export declare class AliasType extends Type implements ArkExport {
173
173
  private originalType;
174
174
  private name;
175
175
  private signature;
176
+ protected modifiers?: number;
176
177
  constructor(name: string, originalType: Type, signature: LocalSignature);
177
178
  getName(): string;
178
179
  setOriginalType(type: Type): void;
@@ -181,6 +182,9 @@ export declare class AliasType extends Type implements ArkExport {
181
182
  getExportType(): ExportType;
182
183
  getModifiers(): number;
183
184
  containsModifier(modifierType: ModifierType): boolean;
185
+ setModifiers(modifiers: number): void;
186
+ addModifier(modifier: ModifierType | number): void;
187
+ removeModifier(modifier: ModifierType): void;
184
188
  getSignature(): LocalSignature;
185
189
  }
186
190
  export declare class GenericType extends Type {
@@ -1 +1 @@
1
- {"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../src/core/base/Type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../src/core/base/Type.ts"],"names":[],"mappings":"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"}