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
@@ -17,6 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.AnnotationTypeQueryType = exports.AnnotationNamespaceType = exports.AnnotationType = exports.AliasTypeDeclaration = exports.GenericType = exports.AliasType = exports.TupleType = exports.ArrayType = exports.ClassType = exports.FunctionType = exports.NeverType = exports.VoidType = exports.UnionType = exports.LiteralType = exports.UndefinedType = exports.NullType = exports.StringType = exports.NumberType = exports.BooleanType = exports.PrimitiveType = exports.UnclearReferenceType = exports.UnknownType = exports.AnyType = exports.Type = void 0;
18
18
  const ArkSignature_1 = require("../model/ArkSignature");
19
19
  const ArkExport_1 = require("../model/ArkExport");
20
+ const ArkBaseModel_1 = require("../model/ArkBaseModel");
21
+ const TSConst_1 = require("../common/TSConst");
20
22
  /**
21
23
  * @category core/base/type
22
24
  */
@@ -35,7 +37,7 @@ class AnyType extends Type {
35
37
  super();
36
38
  }
37
39
  toString() {
38
- return 'any';
40
+ return TSConst_1.ANY_KEYWORD;
39
41
  }
40
42
  }
41
43
  exports.AnyType = AnyType;
@@ -52,7 +54,7 @@ class UnknownType extends Type {
52
54
  super();
53
55
  }
54
56
  toString() {
55
- return 'unknown';
57
+ return TSConst_1.UNKNOWN_KEYWORD;
56
58
  }
57
59
  }
58
60
  exports.UnknownType = UnknownType;
@@ -101,7 +103,7 @@ class PrimitiveType extends Type {
101
103
  exports.PrimitiveType = PrimitiveType;
102
104
  class BooleanType extends PrimitiveType {
103
105
  constructor() {
104
- super('boolean');
106
+ super(TSConst_1.BOOLEAN_KEYWORD);
105
107
  }
106
108
  static getInstance() {
107
109
  return this.INSTANCE;
@@ -111,7 +113,7 @@ exports.BooleanType = BooleanType;
111
113
  BooleanType.INSTANCE = new BooleanType();
112
114
  class NumberType extends PrimitiveType {
113
115
  constructor() {
114
- super('number');
116
+ super(TSConst_1.NUMBER_KEYWORD);
115
117
  }
116
118
  static getInstance() {
117
119
  return this.INSTANCE;
@@ -121,7 +123,7 @@ exports.NumberType = NumberType;
121
123
  NumberType.INSTANCE = new NumberType();
122
124
  class StringType extends PrimitiveType {
123
125
  constructor() {
124
- super('string');
126
+ super(TSConst_1.STRING_KEYWORD);
125
127
  }
126
128
  static getInstance() {
127
129
  return this.INSTANCE;
@@ -138,7 +140,7 @@ class NullType extends PrimitiveType {
138
140
  return this.INSTANCE;
139
141
  }
140
142
  constructor() {
141
- super('null');
143
+ super(TSConst_1.NULL_KEYWORD);
142
144
  }
143
145
  }
144
146
  exports.NullType = NullType;
@@ -152,7 +154,7 @@ class UndefinedType extends PrimitiveType {
152
154
  return this.INSTANCE;
153
155
  }
154
156
  constructor() {
155
- super('undefined');
157
+ super(TSConst_1.UNDEFINED_KEYWORD);
156
158
  }
157
159
  }
158
160
  exports.UndefinedType = UndefinedType;
@@ -196,11 +198,7 @@ class UnionType extends Type {
196
198
  this.currType = newType;
197
199
  }
198
200
  toString() {
199
- let typeStr = this.types.join('|');
200
- if (!(this.currType instanceof UnknownType) && this.currType !== this) {
201
- typeStr += '-' + this.currType;
202
- }
203
- return typeStr;
201
+ return this.types.join('|');
204
202
  }
205
203
  }
206
204
  exports.UnionType = UnionType;
@@ -216,7 +214,7 @@ class VoidType extends Type {
216
214
  super();
217
215
  }
218
216
  toString() {
219
- return 'void';
217
+ return TSConst_1.VOID_KEYWORD;
220
218
  }
221
219
  }
222
220
  exports.VoidType = VoidType;
@@ -229,7 +227,7 @@ class NeverType extends Type {
229
227
  super();
230
228
  }
231
229
  toString() {
232
- return 'never';
230
+ return TSConst_1.NEVER_KEYWORD;
233
231
  }
234
232
  }
235
233
  exports.NeverType = NeverType;
@@ -278,7 +276,13 @@ class ClassType extends Type {
278
276
  this.realGenericTypes = types;
279
277
  }
280
278
  toString() {
281
- return this.classSignature.toString();
279
+ var _a;
280
+ let temp = this.classSignature.toString();
281
+ let generic = (_a = this.realGenericTypes) === null || _a === void 0 ? void 0 : _a.join(',');
282
+ if (generic) {
283
+ temp += `<${generic}>`;
284
+ }
285
+ return temp;
282
286
  }
283
287
  }
284
288
  exports.ClassType = ClassType;
@@ -352,10 +356,30 @@ class AliasType extends Type {
352
356
  return ArkExport_1.ExportType.TYPE;
353
357
  }
354
358
  getModifiers() {
355
- return 0;
359
+ if (!this.modifiers) {
360
+ return 0;
361
+ }
362
+ return this.modifiers;
356
363
  }
357
364
  containsModifier(modifierType) {
358
- return false;
365
+ if (!this.modifiers) {
366
+ return false;
367
+ }
368
+ return (this.modifiers & modifierType) === modifierType;
369
+ }
370
+ setModifiers(modifiers) {
371
+ if (modifiers !== 0) {
372
+ this.modifiers = modifiers;
373
+ }
374
+ }
375
+ addModifier(modifier) {
376
+ this.modifiers = this.getModifiers() | modifier;
377
+ }
378
+ removeModifier(modifier) {
379
+ if (!this.modifiers) {
380
+ return;
381
+ }
382
+ this.modifiers &= ArkBaseModel_1.MODIFIER_TYPE_MASK ^ modifier;
359
383
  }
360
384
  getSignature() {
361
385
  return this.signature;
@@ -0,0 +1,15 @@
1
+ export declare enum ArkErrorCode {
2
+ OK = 0,
3
+ CLASS_INSTANCE_FIELD_UNDEFINDED = -1,
4
+ BB_MORE_THAN_ONE_BRANCH_RET_STMT = -2,
5
+ BB_BRANCH_RET_STMT_NOT_AT_END = -3,
6
+ CFG_NOT_FOUND_START_BLOCK = -4,
7
+ CFG_HAS_UNREACHABLE_BLOCK = -5,
8
+ METHOD_SIGNATURE_UNDEFINED = -6,
9
+ METHOD_SIGNATURE_LINE_UNMATCHED = -7
10
+ }
11
+ export interface ArkError {
12
+ errCode: ArkErrorCode;
13
+ errMsg?: string;
14
+ }
15
+ //# sourceMappingURL=ArkError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArkError.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkError.ts"],"names":[],"mappings":"AAeA,oBAAY,YAAY;IACpB,EAAE,IAAI;IACN,+BAA+B,KAAK;IACpC,gCAAgC,KAAK;IACrC,6BAA6B,KAAK;IAClC,yBAAyB,KAAK;IAC9B,yBAAyB,KAAK;IAC9B,0BAA0B,KAAK;IAC/B,+BAA+B,KAAK;CACvC;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ArkErrorCode = void 0;
18
+ var ArkErrorCode;
19
+ (function (ArkErrorCode) {
20
+ ArkErrorCode[ArkErrorCode["OK"] = 0] = "OK";
21
+ ArkErrorCode[ArkErrorCode["CLASS_INSTANCE_FIELD_UNDEFINDED"] = -1] = "CLASS_INSTANCE_FIELD_UNDEFINDED";
22
+ ArkErrorCode[ArkErrorCode["BB_MORE_THAN_ONE_BRANCH_RET_STMT"] = -2] = "BB_MORE_THAN_ONE_BRANCH_RET_STMT";
23
+ ArkErrorCode[ArkErrorCode["BB_BRANCH_RET_STMT_NOT_AT_END"] = -3] = "BB_BRANCH_RET_STMT_NOT_AT_END";
24
+ ArkErrorCode[ArkErrorCode["CFG_NOT_FOUND_START_BLOCK"] = -4] = "CFG_NOT_FOUND_START_BLOCK";
25
+ ArkErrorCode[ArkErrorCode["CFG_HAS_UNREACHABLE_BLOCK"] = -5] = "CFG_HAS_UNREACHABLE_BLOCK";
26
+ ArkErrorCode[ArkErrorCode["METHOD_SIGNATURE_UNDEFINED"] = -6] = "METHOD_SIGNATURE_UNDEFINED";
27
+ ArkErrorCode[ArkErrorCode["METHOD_SIGNATURE_LINE_UNMATCHED"] = -7] = "METHOD_SIGNATURE_LINE_UNMATCHED";
28
+ })(ArkErrorCode || (exports.ArkErrorCode = ArkErrorCode = {}));
@@ -17,7 +17,6 @@ export declare class DummyStmt extends Stmt {
17
17
  toString(): string;
18
18
  }
19
19
  export declare class ArkIRTransformer {
20
- private readonly tempLocalPrefix;
21
20
  private tempLocalIndex;
22
21
  private locals;
23
22
  private sourceFile;
@@ -33,6 +32,7 @@ export declare class ArkIRTransformer {
33
32
  getAliasTypeMap(): Map<string, [AliasType, AliasTypeDeclaration]>;
34
33
  prebuildStmts(): Stmt[];
35
34
  tsNodeToStmts(node: ts.Node): Stmt[];
35
+ private functionDeclarationToStmts;
36
36
  private returnStatementToStmts;
37
37
  private blockToStmts;
38
38
  private expressionStatementToStmts;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,8 @@ const Position_1 = require("../base/Position");
59
59
  const ModelUtils_1 = require("./ModelUtils");
60
60
  const Builtin_1 = require("./Builtin");
61
61
  const TSConst_1 = require("./TSConst");
62
+ const builderUtils_1 = require("../model/builder/builderUtils");
63
+ const Const_1 = require("./Const");
62
64
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkIRTransformer');
63
65
  exports.DUMMY_INITIALIZER_STMT = 'dummyInitializerStmt';
64
66
  class DummyStmt extends Stmt_1.Stmt {
@@ -73,7 +75,6 @@ class DummyStmt extends Stmt_1.Stmt {
73
75
  exports.DummyStmt = DummyStmt;
74
76
  class ArkIRTransformer {
75
77
  constructor(sourceFile, declaringMethod) {
76
- this.tempLocalPrefix = '$temp';
77
78
  this.tempLocalIndex = 0;
78
79
  this.locals = new Map();
79
80
  this.inBuilderMethod = false;
@@ -154,9 +155,24 @@ class ArkIRTransformer {
154
155
  else if (ts.isReturnStatement(node)) {
155
156
  stmts = this.returnStatementToStmts(node);
156
157
  }
158
+ else if (ts.isFunctionDeclaration(node)) {
159
+ stmts = this.functionDeclarationToStmts(node);
160
+ }
157
161
  this.mapStmtsToTsStmt(stmts, node);
162
+ if (stmts.length > 0) {
163
+ IRUtils_1.IRUtils.setLeadingComments(stmts[0], node, this.sourceFile, this.declaringMethod.getDeclaringArkFile().getScene().getOptions());
164
+ }
158
165
  return stmts;
159
166
  }
167
+ functionDeclarationToStmts(functionDeclarationNode) {
168
+ const declaringClass = this.declaringMethod.getDeclaringArkClass();
169
+ const arkMethod = new ArkMethod_1.ArkMethod();
170
+ if (this.builderMethodContextFlag) {
171
+ ModelUtils_1.ModelUtils.implicitArkUIBuilderMethods.add(arkMethod);
172
+ }
173
+ (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(functionDeclarationNode, declaringClass, arkMethod, this.sourceFile, this.declaringMethod);
174
+ return [];
175
+ }
160
176
  returnStatementToStmts(returnStatement) {
161
177
  const stmts = [];
162
178
  if (returnStatement.expression) {
@@ -224,6 +240,8 @@ class ArkIRTransformer {
224
240
  const aliasName = typeAliasDeclaration.name.text;
225
241
  const originalType = this.resolveTypeNode(typeAliasDeclaration.type);
226
242
  const aliasType = new Type_1.AliasType(aliasName, originalType, new ArkSignature_1.LocalSignature(aliasName, this.declaringMethod.getSignature()));
243
+ const modifiers = typeAliasDeclaration.modifiers ? (0, builderUtils_1.buildModifiers)(typeAliasDeclaration) : 0;
244
+ aliasType.setModifiers(modifiers);
227
245
  const sourceCode = typeAliasDeclaration.getText(this.sourceFile);
228
246
  const aliasTypePosition = Position_1.LineColPosition.buildFromNode(typeAliasDeclaration, this.sourceFile);
229
247
  const aliasTypeDeclaration = new Type_1.AliasTypeDeclaration(sourceCode, aliasTypePosition);
@@ -324,7 +342,7 @@ class ArkIRTransformer {
324
342
  const elements = variableDeclaration.name.elements;
325
343
  let index = 0;
326
344
  for (const element of elements) {
327
- const arrayRef = new Ref_1.ArkArrayRef(arrayItem, new Constant_1.Constant(index.toString(), Type_1.NumberType.getInstance()));
345
+ const arrayRef = new Ref_1.ArkArrayRef(arrayItem, ValueUtil_1.ValueUtil.getOrCreateNumberConst(index));
328
346
  const arrayRefPositions = [arrayItemPositions[0], ...arrayItemPositions, Position_1.FullPosition.DEFAULT];
329
347
  const item = new Local_1.Local(element.getText(this.sourceFile));
330
348
  const itemPosition = Position_1.FullPosition.buildFromNode(element, this.sourceFile);
@@ -618,9 +636,9 @@ class ArkIRTransformer {
618
636
  const createViewArgPositionsAll = [newExprPositions];
619
637
  if (ts.isEtsComponentExpression(componentExpression) && componentExpression.body) {
620
638
  const anonymous = ts.factory.createArrowFunction([], [], [], undefined, undefined, componentExpression.body);
621
- // @ts-ignore
639
+ // @ts-expect-error: add pos info for the created ArrowFunction
622
640
  anonymous.pos = componentExpression.body.pos;
623
- // @ts-ignore
641
+ // @ts-expect-error: add end info for the created ArrowFunction
624
642
  anonymous.end = componentExpression.body.end;
625
643
  const { value: builderMethod, valueOriginalPositions: builderMethodPositions, } = this.callableNodeToValueAndStmts(anonymous);
626
644
  createViewArgs.push(builderMethod);
@@ -798,7 +816,6 @@ class ArkIRTransformer {
798
816
  if (callExpression.typeArguments) {
799
817
  realGenericTypes = [];
800
818
  callExpression.typeArguments.forEach(typeArgument => {
801
- // @ts-ignore
802
819
  realGenericTypes.push(this.resolveTypeNode(typeArgument));
803
820
  });
804
821
  }
@@ -894,7 +911,6 @@ class ArkIRTransformer {
894
911
  if (newExpression.typeArguments) {
895
912
  realGenericTypes = [];
896
913
  newExpression.typeArguments.forEach(typeArgument => {
897
- // @ts-ignore
898
914
  realGenericTypes.push(this.resolveTypeNode(typeArgument));
899
915
  });
900
916
  }
@@ -1172,7 +1188,7 @@ class ArkIRTransformer {
1172
1188
  const elements = leftOpNode.elements;
1173
1189
  let index = 0;
1174
1190
  for (const element of elements) {
1175
- const arrayRef = new Ref_1.ArkArrayRef(leftValue, new Constant_1.Constant(index.toString(), Type_1.NumberType.getInstance()));
1191
+ const arrayRef = new Ref_1.ArkArrayRef(leftValue, ValueUtil_1.ValueUtil.getOrCreateNumberConst(index));
1176
1192
  const arrayRefPositions = [leftPositions[0], ...leftPositions, Position_1.FullPosition.DEFAULT];
1177
1193
  const item = new Local_1.Local(element.getText(this.sourceFile));
1178
1194
  const itemPosition = Position_1.FullPosition.buildFromNode(element, this.sourceFile);
@@ -1432,7 +1448,7 @@ class ArkIRTransformer {
1432
1448
  return local;
1433
1449
  }
1434
1450
  generateTempLocal(localType = Type_1.UnknownType.getInstance()) {
1435
- const tempLocalName = this.tempLocalPrefix + this.tempLocalIndex;
1451
+ const tempLocalName = Const_1.TEMP_LOCAL_PREFIX + this.tempLocalIndex;
1436
1452
  this.tempLocalIndex++;
1437
1453
  const tempLocal = new Local_1.Local(tempLocalName, localType);
1438
1454
  this.locals.set(tempLocalName, tempLocal);
@@ -1 +1 @@
1
- {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/common/CfgBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/common/CfgBuilder.ts"],"names":[],"mappings":"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"}
@@ -222,6 +222,11 @@ class CfgBuilder {
222
222
  judgeLastType(s);
223
223
  lastStatement = s;
224
224
  }
225
+ else if (!this.declaringMethod.isDefaultArkMethod() && ts.isFunctionDeclaration(c)) {
226
+ let s = new StatementBuilder('functionDeclarationStatement', c.getText(this.sourceFile), c, scope.id);
227
+ judgeLastType(s);
228
+ lastStatement = s;
229
+ }
225
230
  else if (ts.isReturnStatement(c)) {
226
231
  let s = new StatementBuilder('returnStatement', c.getText(this.sourceFile), c, scope.id);
227
232
  judgeLastType(s);
@@ -1,15 +1,20 @@
1
- export declare const DEFAULT_ARK_CLASS_NAME = "_DEFAULT_ARK_CLASS";
2
- export declare const DEFAULT_ARK_METHOD_NAME = "_DEFAULT_ARK_METHOD";
3
- export declare const ANONYMOUS_CLASS_PREFIX = "AnonymousClass";
4
- export declare const ANONYMOUS_CLASS_DELIMITER = "-";
5
- export declare const INSTANCE_INIT_METHOD_NAME = "@instance_init";
6
- export declare const STATIC_INIT_METHOD_NAME = "@static_init";
7
- export declare const ANONYMOUS_METHOD_PREFIX = "AnonymousMethod-";
1
+ export declare const NAME_DELIMITER = "$";
2
+ export declare const NAME_PREFIX = "%";
3
+ export declare const UNKNOWN_NAME = "unk";
4
+ export declare const DEFAULT_NAME = "dflt";
5
+ export declare const DEFAULT_ARK_CLASS_NAME: string;
6
+ export declare const DEFAULT_ARK_METHOD_NAME: string;
7
+ export declare const ANONYMOUS_CLASS_PREFIX: string;
8
+ export declare const ANONYMOUS_CLASS_DELIMITER = "$";
9
+ export declare const INSTANCE_INIT_METHOD_NAME: string;
10
+ export declare const STATIC_INIT_METHOD_NAME: string;
11
+ export declare const ANONYMOUS_METHOD_PREFIX: string;
8
12
  export declare const CALL_SIGNATURE_NAME = "create";
9
- export declare const UNKNOWN_PROJECT_NAME = "_UnknownProjectName";
10
- export declare const UNKNOWN_FILE_NAME = "_UnknownFileName";
11
- export declare const UNKNOWN_NAMESPACE_NAME = "_UnknownNamespaceName";
13
+ export declare const UNKNOWN_PROJECT_NAME: string;
14
+ export declare const UNKNOWN_FILE_NAME: string;
15
+ export declare const UNKNOWN_NAMESPACE_NAME: string;
12
16
  export declare const UNKNOWN_CLASS_NAME = "";
13
17
  export declare const UNKNOWN_FIELD_NAME = "";
14
18
  export declare const UNKNOWN_METHOD_NAME = "";
19
+ export declare const TEMP_LOCAL_PREFIX = "%";
15
20
  //# sourceMappingURL=Const.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Const.d.ts","sourceRoot":"","sources":["../../../src/core/common/Const.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAG7C,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AACpD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC"}
1
+ {"version":3,"file":"Const.d.ts","sourceRoot":"","sources":["../../../src/core/common/Const.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,YAAY,SAAS,CAAC;AAGnC,eAAO,MAAM,sBAAsB,QAA6B,CAAC;AACjE,eAAO,MAAM,uBAAuB,QAA6B,CAAC;AAClE,eAAO,MAAM,sBAAsB,QAAqB,CAAC;AACzD,eAAO,MAAM,yBAAyB,MAAiB,CAAC;AAGxD,eAAO,MAAM,yBAAyB,QAA2B,CAAC;AAClE,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAChE,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,oBAAoB,QAA6B,CAAC;AAC/D,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,QAA6B,CAAC;AACjE,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,iBAAiB,MAAc,CAAC"}
@@ -14,21 +14,28 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.UNKNOWN_METHOD_NAME = exports.UNKNOWN_FIELD_NAME = exports.UNKNOWN_CLASS_NAME = exports.UNKNOWN_NAMESPACE_NAME = exports.UNKNOWN_FILE_NAME = exports.UNKNOWN_PROJECT_NAME = exports.CALL_SIGNATURE_NAME = exports.ANONYMOUS_METHOD_PREFIX = exports.STATIC_INIT_METHOD_NAME = exports.INSTANCE_INIT_METHOD_NAME = exports.ANONYMOUS_CLASS_DELIMITER = exports.ANONYMOUS_CLASS_PREFIX = exports.DEFAULT_ARK_METHOD_NAME = exports.DEFAULT_ARK_CLASS_NAME = void 0;
17
+ exports.TEMP_LOCAL_PREFIX = exports.UNKNOWN_METHOD_NAME = exports.UNKNOWN_FIELD_NAME = exports.UNKNOWN_CLASS_NAME = exports.UNKNOWN_NAMESPACE_NAME = exports.UNKNOWN_FILE_NAME = exports.UNKNOWN_PROJECT_NAME = exports.CALL_SIGNATURE_NAME = exports.ANONYMOUS_METHOD_PREFIX = exports.STATIC_INIT_METHOD_NAME = exports.INSTANCE_INIT_METHOD_NAME = exports.ANONYMOUS_CLASS_DELIMITER = exports.ANONYMOUS_CLASS_PREFIX = exports.DEFAULT_ARK_METHOD_NAME = exports.DEFAULT_ARK_CLASS_NAME = exports.DEFAULT_NAME = exports.UNKNOWN_NAME = exports.NAME_PREFIX = exports.NAME_DELIMITER = void 0;
18
+ // names
19
+ exports.NAME_DELIMITER = '$';
20
+ exports.NAME_PREFIX = '%';
21
+ exports.UNKNOWN_NAME = 'unk';
22
+ exports.DEFAULT_NAME = 'dflt';
18
23
  // ArkClass const
19
- exports.DEFAULT_ARK_CLASS_NAME = '_DEFAULT_ARK_CLASS';
20
- exports.DEFAULT_ARK_METHOD_NAME = '_DEFAULT_ARK_METHOD';
21
- exports.ANONYMOUS_CLASS_PREFIX = 'AnonymousClass';
22
- exports.ANONYMOUS_CLASS_DELIMITER = '-';
24
+ exports.DEFAULT_ARK_CLASS_NAME = exports.NAME_PREFIX + exports.DEFAULT_NAME;
25
+ exports.DEFAULT_ARK_METHOD_NAME = exports.NAME_PREFIX + exports.DEFAULT_NAME;
26
+ exports.ANONYMOUS_CLASS_PREFIX = exports.NAME_PREFIX + 'AC';
27
+ exports.ANONYMOUS_CLASS_DELIMITER = exports.NAME_DELIMITER;
23
28
  // ArkMethod const
24
- exports.INSTANCE_INIT_METHOD_NAME = '@instance_init';
25
- exports.STATIC_INIT_METHOD_NAME = '@static_init';
26
- exports.ANONYMOUS_METHOD_PREFIX = 'AnonymousMethod-';
29
+ exports.INSTANCE_INIT_METHOD_NAME = exports.NAME_PREFIX + 'instInit';
30
+ exports.STATIC_INIT_METHOD_NAME = exports.NAME_PREFIX + 'statInit';
31
+ exports.ANONYMOUS_METHOD_PREFIX = exports.NAME_PREFIX + 'AM';
27
32
  exports.CALL_SIGNATURE_NAME = 'create';
28
33
  // ArkSignature const
29
- exports.UNKNOWN_PROJECT_NAME = '_UnknownProjectName';
30
- exports.UNKNOWN_FILE_NAME = '_UnknownFileName';
31
- exports.UNKNOWN_NAMESPACE_NAME = '_UnknownNamespaceName';
34
+ exports.UNKNOWN_PROJECT_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
35
+ exports.UNKNOWN_FILE_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
36
+ exports.UNKNOWN_NAMESPACE_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
32
37
  exports.UNKNOWN_CLASS_NAME = ''; // temp for being compatible with existing type inference
33
38
  exports.UNKNOWN_FIELD_NAME = ''; // temp for being compatible with existing type inference
34
39
  exports.UNKNOWN_METHOD_NAME = ''; // temp for being compatible with existing type inference
40
+ // IR const
41
+ exports.TEMP_LOCAL_PREFIX = exports.NAME_PREFIX;
@@ -3,7 +3,7 @@ import { ArkClass } from '../model/ArkClass';
3
3
  import { ArkMethod } from '../model/ArkMethod';
4
4
  /**
5
5
  收集所有的onCreate,onStart等函数,构造一个虚拟函数,具体为:
6
- @static_init()
6
+ %statInit()
7
7
  ...
8
8
  count = 0
9
9
  while (true) {
@@ -40,6 +40,7 @@ export declare class DummyMainCreater {
40
40
  private addCfg2Stmt;
41
41
  getDummyMain(): ArkMethod;
42
42
  private getEntryMethodsFromComponents;
43
+ private classInheritsAbility;
43
44
  getMethodsFromAllAbilities(): ArkMethod[];
44
45
  getEntryMethodsFromModuleJson5(): ArkMethod[];
45
46
  getAbilitiesByParseModuleJson(modulePath: string): ArkClass[];
@@ -1 +1 @@
1
- {"version":3,"file":"DummyMainCreater.d.ts","sourceRoot":"","sources":["../../../src/core/common/DummyMainCreater.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiBpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAW/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,aAAa,CAA2C;IAChE,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAkC;gBAE1C,KAAK,EAAE,KAAK;IAUxB,OAAO,CAAC,iBAAiB;IASlB,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAI3C,eAAe,IAAI,IAAI;IAgD9B,OAAO,CAAC,kBAAkB;IAgI1B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,WAAW;IAYZ,YAAY,IAAI,SAAS;IAIhC,OAAO,CAAC,6BAA6B;IAmB9B,0BAA0B,IAAI,SAAS,EAAE;IAWzC,8BAA8B,IAAI,SAAS,EAAE;IAkD7C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IA2B7D,kBAAkB,IAAI,SAAS,EAAE;CAiB3C"}
1
+ {"version":3,"file":"DummyMainCreater.d.ts","sourceRoot":"","sources":["../../../src/core/common/DummyMainCreater.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsBpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAY/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,aAAa,CAA2C;IAChE,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAkC;gBAE1C,KAAK,EAAE,KAAK;IAUxB,OAAO,CAAC,iBAAiB;IASlB,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAI3C,eAAe,IAAI,IAAI;IAiD9B,OAAO,CAAC,kBAAkB;IAkI1B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,WAAW;IAYZ,YAAY,IAAI,SAAS;IAIhC,OAAO,CAAC,6BAA6B;IAmBrC,OAAO,CAAC,oBAAoB;IAYrB,0BAA0B,IAAI,SAAS,EAAE;IAUzC,8BAA8B,IAAI,SAAS,EAAE;IAkD7C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IA2B7D,kBAAkB,IAAI,SAAS,EAAE;CAiB3C"}
@@ -61,11 +61,12 @@ const ArkSignatureBuilder_1 = require("../model/builder/ArkSignatureBuilder");
61
61
  const TSConst_1 = require("./TSConst");
62
62
  const json5parser_1 = require("../../utils/json5parser");
63
63
  const logger_1 = __importStar(require("../../utils/logger"));
64
- const ArkClassBuilder_1 = require("../model/builder/ArkClassBuilder");
64
+ const ArkMethodBuilder_1 = require("../model/builder/ArkMethodBuilder");
65
+ const ValueUtil_1 = require("./ValueUtil");
65
66
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Scene');
66
67
  /**
67
68
  收集所有的onCreate,onStart等函数,构造一个虚拟函数,具体为:
68
- @static_init()
69
+ %statInit()
69
70
  ...
70
71
  count = 0
71
72
  while (true) {
@@ -102,7 +103,7 @@ class DummyMainCreater {
102
103
  this.buildBuiltInClass();
103
104
  }
104
105
  buildBuiltInClass() {
105
- for (const sdkFile of this.scene.getSdkArkFilesMap().values()) {
106
+ for (const sdkFile of this.scene.getSdkArkFiles()) {
106
107
  if (sdkFile.getName() === 'api\\@ohos.app.ability.Want.d.ts') {
107
108
  const arkClass = sdkFile.getClassWithName('Want');
108
109
  this.builtInClass.set('Want', arkClass);
@@ -118,7 +119,7 @@ class DummyMainCreater {
118
119
  dummyMainFile.setScene(this.scene);
119
120
  const dummyMainFileSignature = new ArkSignature_1.FileSignature(this.scene.getProjectName(), '@dummyFile');
120
121
  dummyMainFile.setFileSignature(dummyMainFileSignature);
121
- this.scene.getFilesMap().set(dummyMainFile.getFileSignature().toString(), dummyMainFile);
122
+ this.scene.setFile(dummyMainFile);
122
123
  const dummyMainClass = new ArkClass_1.ArkClass();
123
124
  dummyMainClass.setDeclaringArkFile(dummyMainFile);
124
125
  const dummyMainClassSignature = new ArkSignature_1.ClassSignature('@dummyClass', dummyMainClass.getDeclaringArkFile().getFileSignature(), ((_a = dummyMainClass.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
@@ -128,8 +129,9 @@ class DummyMainCreater {
128
129
  this.dummyMain.setDeclaringArkClass(dummyMainClass);
129
130
  const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName('@dummyMain');
130
131
  const methodSignature = new ArkSignature_1.MethodSignature(this.dummyMain.getDeclaringArkClass().getSignature(), methodSubSignature);
131
- this.dummyMain.setSignature(methodSignature);
132
- (0, ArkClassBuilder_1.checkAndUpdateMethod)(this.dummyMain, dummyMainClass);
132
+ this.dummyMain.setImplementationSignature(methodSignature);
133
+ this.dummyMain.setLineCol(0);
134
+ (0, ArkMethodBuilder_1.checkAndUpdateMethod)(this.dummyMain, dummyMainClass);
133
135
  dummyMainClass.addMethod(this.dummyMain);
134
136
  for (const method of this.entryMethods) {
135
137
  if (method.getDeclaringArkClass().isDefaultArkClass()) {
@@ -162,7 +164,6 @@ class DummyMainCreater {
162
164
  const dummyCfg = new Cfg_1.Cfg();
163
165
  dummyCfg.setDeclaringMethod(this.dummyMain);
164
166
  const firstBlock = new BasicBlock_1.BasicBlock();
165
- dummyCfg.addBlock(firstBlock);
166
167
  let isStartingStmt = true;
167
168
  for (const method of this.scene.getStaticInitMethods()) {
168
169
  const staticInvokeExpr = new Expr_1.ArkStaticInvokeExpr(method.getSignature(), []);
@@ -193,15 +194,17 @@ class DummyMainCreater {
193
194
  }
194
195
  }
195
196
  const countLocal = new Local_1.Local('count', Type_1.NumberType.getInstance());
196
- const zero = new Constant_1.Constant('0', Type_1.NumberType.getInstance());
197
+ const zero = ValueUtil_1.ValueUtil.getOrCreateNumberConst(0);
197
198
  const countAssignStmt = new Stmt_1.ArkAssignStmt(countLocal, zero);
198
- const truE = new Constant_1.Constant('true', Type_1.BooleanType.getInstance());
199
+ const truE = ValueUtil_1.ValueUtil.getBooleanConstant(true);
199
200
  const conditionTrue = new Expr_1.ArkConditionExpr(truE, zero, Expr_1.RelationalBinaryOperator.Equality);
200
201
  const whileStmt = new Stmt_1.ArkIfStmt(conditionTrue);
201
202
  firstBlock.addStmt(countAssignStmt);
203
+ dummyCfg.addBlock(firstBlock);
204
+ dummyCfg.setStartingStmt(firstBlock.getStmts()[0]);
202
205
  const whileBlock = new BasicBlock_1.BasicBlock();
203
- dummyCfg.addBlock(whileBlock);
204
206
  whileBlock.addStmt(whileStmt);
207
+ dummyCfg.addBlock(whileBlock);
205
208
  firstBlock.addSuccessorBlock(whileBlock);
206
209
  whileBlock.addPredecessorBlock(firstBlock);
207
210
  let lastBlocks = [whileBlock];
@@ -211,8 +214,8 @@ class DummyMainCreater {
211
214
  const condition = new Expr_1.ArkConditionExpr(countLocal, new Constant_1.Constant(count.toString(), Type_1.NumberType.getInstance()), Expr_1.RelationalBinaryOperator.Equality);
212
215
  const ifStmt = new Stmt_1.ArkIfStmt(condition);
213
216
  const ifBlock = new BasicBlock_1.BasicBlock();
214
- dummyCfg.addBlock(ifBlock);
215
217
  ifBlock.addStmt(ifStmt);
218
+ dummyCfg.addBlock(ifBlock);
216
219
  for (const block of lastBlocks) {
217
220
  ifBlock.addPredecessorBlock(block);
218
221
  block.addSuccessorBlock(ifBlock);
@@ -260,8 +263,8 @@ class DummyMainCreater {
260
263
  invokeExpr = new Expr_1.ArkStaticInvokeExpr(method.getSignature(), paramLocals);
261
264
  }
262
265
  const invokeStmt = new Stmt_1.ArkInvokeStmt(invokeExpr);
263
- dummyCfg.addBlock(invokeBlock);
264
266
  invokeBlock.addStmt(invokeStmt);
267
+ dummyCfg.addBlock(invokeBlock);
265
268
  ifBlock.addSuccessorBlock(invokeBlock);
266
269
  invokeBlock.addPredecessorBlock(ifBlock);
267
270
  lastBlocks = [ifBlock, invokeBlock];
@@ -272,8 +275,8 @@ class DummyMainCreater {
272
275
  }
273
276
  const returnStmt = new Stmt_1.ArkReturnVoidStmt();
274
277
  const returnBlock = new BasicBlock_1.BasicBlock();
275
- dummyCfg.addBlock(returnBlock);
276
278
  returnBlock.addStmt(returnStmt);
279
+ dummyCfg.addBlock(returnBlock);
277
280
  whileBlock.addSuccessorBlock(returnBlock);
278
281
  returnBlock.addPredecessorBlock(whileBlock);
279
282
  return dummyCfg;
@@ -333,11 +336,21 @@ class DummyMainCreater {
333
336
  });
334
337
  return methods;
335
338
  }
336
- getMethodsFromAllAbilities() {
339
+ classInheritsAbility(arkClass) {
337
340
  const ABILITY_BASE_CLASSES = ['UIExtensionAbility', 'Ability', 'FormExtensionAbility', 'UIAbility', 'BackupExtensionAbility'];
341
+ let superClass = arkClass.getSuperClass();
342
+ while (superClass) {
343
+ if (ABILITY_BASE_CLASSES.includes(superClass.getName())) {
344
+ return true;
345
+ }
346
+ superClass = superClass.getSuperClass();
347
+ }
348
+ return false;
349
+ }
350
+ getMethodsFromAllAbilities() {
338
351
  let methods = [];
339
352
  this.scene.getClasses()
340
- .filter(cls => ABILITY_BASE_CLASSES.includes(cls.getSuperClassName()))
353
+ .filter(cls => this.classInheritsAbility(cls))
341
354
  .forEach(cls => {
342
355
  methods.push(...cls.getMethods().filter(mtd => entryMethodUtils_1.LIFECYCLE_METHOD_NAME.includes(mtd.getName())));
343
356
  });
@@ -62,4 +62,5 @@ export declare const COMPONENT_COMMON: string;
62
62
  export declare const COMPONENT_INSTANCE: string;
63
63
  export declare const API_INTERNAL: string;
64
64
  export declare const COMPONENT_ATTRIBUTE: string;
65
+ export declare const CALL_BACK: string;
65
66
  //# sourceMappingURL=EtsConst.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EtsConst.d.ts","sourceRoot":"","sources":["../../../src/core/common/EtsConst.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoyBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAgD,CAAC;AAElG,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAqD/C,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAqE,CAAC;AAClH,eAAO,MAAM,eAAe,EAAE,MAAgB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,EAAE,MAAkB,CAAC;AACnD,eAAO,MAAM,uBAAuB,EAAE,MAAuB,CAAC;AAE9D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAc,CAAC;AACpD,eAAO,MAAM,oBAAoB,EAAE,MAAe,CAAC;AACnD,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAkB,CAAC;AACpD,eAAO,MAAM,uBAAuB,EAAE,MAAsB,CAAC;AAE7D,eAAO,MAAM,YAAY,EAAE,MAAa,CAAC;AACzC,eAAO,MAAM,mBAAmB,EAAE,MAAmB,CAAC;AACtD,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAE,MAAgB,CAAC;AAExD,eAAO,MAAM,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAKlD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,MAA0C,CAAC;AACxE,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAmB,CAAC;AACrD,eAAO,MAAM,YAAY,EAAE,MAA0C,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,MAAoB,CAAC"}
1
+ {"version":3,"file":"EtsConst.d.ts","sourceRoot":"","sources":["../../../src/core/common/EtsConst.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoyBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAgD,CAAC;AAElG,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAqD/C,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAqE,CAAC;AAClH,eAAO,MAAM,eAAe,EAAE,MAAgB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,EAAE,MAAkB,CAAC;AACnD,eAAO,MAAM,uBAAuB,EAAE,MAAuB,CAAC;AAE9D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAc,CAAC;AACpD,eAAO,MAAM,oBAAoB,EAAE,MAAe,CAAC;AACnD,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAkB,CAAC;AACpD,eAAO,MAAM,uBAAuB,EAAE,MAAsB,CAAC;AAE7D,eAAO,MAAM,YAAY,EAAE,MAAa,CAAC;AACzC,eAAO,MAAM,mBAAmB,EAAE,MAAmB,CAAC;AACtD,eAAO,MAAM,yBAAyB,EAAE,MAAiB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAE,MAAgB,CAAC;AAExD,eAAO,MAAM,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAKlD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,MAA0C,CAAC;AACxE,eAAO,MAAM,gBAAgB,EAAE,MAAiB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,MAAmB,CAAC;AACrD,eAAO,MAAM,YAAY,EAAE,MAA0C,CAAC;AAEtE,eAAO,MAAM,mBAAmB,EAAE,MAAoB,CAAC;AACvD,eAAO,MAAM,SAAS,EAAE,MAAmB,CAAC"}
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.COMPONENT_ATTRIBUTE = exports.API_INTERNAL = exports.COMPONENT_INSTANCE = exports.COMPONENT_COMMON = exports.COMPONENT_PATH = exports.SPECIAL_CONTAINER_COMPONENT = exports.COMPONENT_BUILD_FUNCTION = exports.COMPONENT_BRANCH_FUNCTION = exports.COMPONENT_IF_BRANCH = exports.COMPONENT_IF = exports.COMPONENT_LAZY_FOR_EACH = exports.COMPONENT_FOR_EACH = exports.COMPONENT_REPEAT = exports.COMPONENT_CUSTOMVIEW = exports.COMPONENT_POP_FUNCTION = exports.COMPONENT_CREATE_FUNCTION = exports.isEtsContainerComponent = exports.isEtsSystemComponent = exports.isEtsAtomicComponent = exports.BUILDER_PARAM_DECORATOR = exports.BUILDER_DECORATOR = exports.ENTRY_DECORATOR = exports.COMPONENT_DECORATOR = exports.BUILDIN_ATOMIC_COMPONENT = exports.BUILDIN_SYSTEM_COMPONENT = exports.ETS_COMPILER_OPTIONS = void 0;
20
+ exports.CALL_BACK = exports.COMPONENT_ATTRIBUTE = exports.API_INTERNAL = exports.COMPONENT_INSTANCE = exports.COMPONENT_COMMON = exports.COMPONENT_PATH = exports.SPECIAL_CONTAINER_COMPONENT = exports.COMPONENT_BUILD_FUNCTION = exports.COMPONENT_BRANCH_FUNCTION = exports.COMPONENT_IF_BRANCH = exports.COMPONENT_IF = exports.COMPONENT_LAZY_FOR_EACH = exports.COMPONENT_FOR_EACH = exports.COMPONENT_REPEAT = exports.COMPONENT_CUSTOMVIEW = exports.COMPONENT_POP_FUNCTION = exports.COMPONENT_CREATE_FUNCTION = exports.isEtsContainerComponent = exports.isEtsSystemComponent = exports.isEtsAtomicComponent = exports.BUILDER_PARAM_DECORATOR = exports.BUILDER_DECORATOR = exports.ENTRY_DECORATOR = exports.COMPONENT_DECORATOR = exports.BUILDIN_ATOMIC_COMPONENT = exports.BUILDIN_SYSTEM_COMPONENT = exports.ETS_COMPILER_OPTIONS = void 0;
21
21
  const path_1 = __importDefault(require("path"));
22
22
  exports.ETS_COMPILER_OPTIONS = {
23
23
  ets: {
@@ -916,3 +916,4 @@ exports.COMPONENT_COMMON = 'Common';
916
916
  exports.COMPONENT_INSTANCE = 'Instance';
917
917
  exports.API_INTERNAL = path_1.default.sep + '@internal' + path_1.default.sep;
918
918
  exports.COMPONENT_ATTRIBUTE = 'Attribute';
919
+ exports.CALL_BACK = 'Callback';