arkanalyzer 1.0.6 → 1.0.8

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 (224) hide show
  1. package/config/arkanalyzer.json +8 -0
  2. package/docs/IR2ts-stmt.md +81 -0
  3. package/docs/IR2ts.md +82 -0
  4. package/lib/Config.d.ts +29 -1
  5. package/lib/Config.d.ts.map +1 -1
  6. package/lib/Config.js +44 -11
  7. package/lib/Scene.d.ts +152 -9
  8. package/lib/Scene.d.ts.map +1 -1
  9. package/lib/Scene.js +233 -66
  10. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +2 -1
  11. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  12. package/lib/callgraph/algorithm/AbstractAnalysis.js +14 -7
  13. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
  14. package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +2 -4
  15. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  16. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +2 -3
  17. package/lib/callgraph/common/Statistics.js +1 -1
  18. package/lib/callgraph/model/BaseGraph.js +2 -2
  19. package/lib/callgraph/model/CallGraph.d.ts +3 -2
  20. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  21. package/lib/callgraph/model/CallGraph.js +23 -14
  22. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +2 -2
  23. package/lib/callgraph/model/builder/CallGraphBuilder.js +3 -3
  24. package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
  25. package/lib/callgraph/pointerAnalysis/Context.js +0 -1
  26. package/lib/callgraph/pointerAnalysis/Pag.d.ts +36 -9
  27. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  28. package/lib/callgraph/pointerAnalysis/Pag.js +130 -37
  29. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +34 -5
  30. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  31. package/lib/callgraph/pointerAnalysis/PagBuilder.js +479 -126
  32. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +6 -0
  33. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  34. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +107 -45
  35. package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
  36. package/lib/callgraph/pointerAnalysis/PtsDS.js +0 -2
  37. package/lib/core/base/Constant.d.ts +37 -5
  38. package/lib/core/base/Constant.d.ts.map +1 -1
  39. package/lib/core/base/Constant.js +58 -8
  40. package/lib/core/base/Expr.d.ts +98 -13
  41. package/lib/core/base/Expr.d.ts.map +1 -1
  42. package/lib/core/base/Expr.js +295 -127
  43. package/lib/core/base/Local.d.ts +70 -5
  44. package/lib/core/base/Local.d.ts.map +1 -1
  45. package/lib/core/base/Local.js +77 -4
  46. package/lib/core/base/Ref.d.ts +79 -5
  47. package/lib/core/base/Ref.d.ts.map +1 -1
  48. package/lib/core/base/Ref.js +143 -38
  49. package/lib/core/base/Stmt.d.ts +126 -12
  50. package/lib/core/base/Stmt.d.ts.map +1 -1
  51. package/lib/core/base/Stmt.js +135 -28
  52. package/lib/core/base/Type.d.ts +11 -2
  53. package/lib/core/base/Type.d.ts.map +1 -1
  54. package/lib/core/base/Type.js +47 -42
  55. package/lib/core/base/Value.d.ts +24 -2
  56. package/lib/core/base/Value.d.ts.map +1 -1
  57. package/lib/core/common/ArkError.d.ts +15 -0
  58. package/lib/core/common/ArkError.d.ts.map +1 -0
  59. package/lib/core/common/ArkError.js +28 -0
  60. package/lib/core/common/ArkIRTransformer.d.ts +12 -5
  61. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  62. package/lib/core/common/ArkIRTransformer.js +90 -45
  63. package/lib/core/common/BodyBuilder.d.ts +2 -0
  64. package/lib/core/common/BodyBuilder.d.ts.map +1 -1
  65. package/lib/core/common/BodyBuilder.js +5 -2
  66. package/lib/core/common/Builtin.js +1 -1
  67. package/lib/core/common/CfgBuilder.d.ts +12 -7
  68. package/lib/core/common/CfgBuilder.d.ts.map +1 -1
  69. package/lib/core/common/CfgBuilder.js +336 -140
  70. package/lib/core/common/Const.d.ts +15 -10
  71. package/lib/core/common/Const.d.ts.map +1 -1
  72. package/lib/core/common/Const.js +18 -11
  73. package/lib/core/common/DummyMainCreater.d.ts +5 -4
  74. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  75. package/lib/core/common/DummyMainCreater.js +43 -28
  76. package/lib/core/common/EtsConst.d.ts +1 -0
  77. package/lib/core/common/EtsConst.d.ts.map +1 -1
  78. package/lib/core/common/EtsConst.js +2 -1
  79. package/lib/core/common/ExprUseReplacer.js +8 -8
  80. package/lib/core/common/IRUtils.d.ts +7 -0
  81. package/lib/core/common/IRUtils.d.ts.map +1 -1
  82. package/lib/core/common/IRUtils.js +34 -2
  83. package/lib/core/common/ModelUtils.d.ts +1 -0
  84. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  85. package/lib/core/common/ModelUtils.js +39 -36
  86. package/lib/core/common/RefUseReplacer.js +3 -3
  87. package/lib/core/common/StmtUseReplacer.js +4 -4
  88. package/lib/core/common/TSConst.d.ts +10 -3
  89. package/lib/core/common/TSConst.d.ts.map +1 -1
  90. package/lib/core/common/TSConst.js +11 -4
  91. package/lib/core/common/TypeInference.d.ts +8 -2
  92. package/lib/core/common/TypeInference.d.ts.map +1 -1
  93. package/lib/core/common/TypeInference.js +222 -90
  94. package/lib/core/common/ValueUtil.d.ts +0 -4
  95. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  96. package/lib/core/common/ValueUtil.js +10 -27
  97. package/lib/core/common/VisibleValue.js +1 -1
  98. package/lib/core/dataflow/DataflowProblem.d.ts +1 -0
  99. package/lib/core/dataflow/DataflowProblem.d.ts.map +1 -1
  100. package/lib/core/dataflow/DataflowProblem.js +4 -4
  101. package/lib/core/dataflow/DataflowSolver.d.ts +20 -16
  102. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  103. package/lib/core/dataflow/DataflowSolver.js +67 -78
  104. package/lib/core/dataflow/TiantAnalysis.d.ts +1 -0
  105. package/lib/core/dataflow/TiantAnalysis.d.ts.map +1 -1
  106. package/lib/core/dataflow/TiantAnalysis.js +42 -28
  107. package/lib/core/dataflow/UndefinedVariable.d.ts +15 -1
  108. package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
  109. package/lib/core/dataflow/UndefinedVariable.js +122 -76
  110. package/lib/core/dataflow/Util.d.ts +5 -1
  111. package/lib/core/dataflow/Util.d.ts.map +1 -1
  112. package/lib/core/dataflow/Util.js +43 -22
  113. package/lib/core/graph/BasicBlock.d.ts +72 -0
  114. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  115. package/lib/core/graph/BasicBlock.js +165 -3
  116. package/lib/core/graph/Cfg.d.ts +30 -1
  117. package/lib/core/graph/Cfg.d.ts.map +1 -1
  118. package/lib/core/graph/Cfg.js +131 -11
  119. package/lib/core/graph/DominanceFinder.js +7 -7
  120. package/lib/core/graph/DominanceTree.js +4 -4
  121. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  122. package/lib/core/graph/builder/ViewTreeBuilder.js +6 -5
  123. package/lib/core/model/ArkBaseModel.d.ts +59 -0
  124. package/lib/core/model/ArkBaseModel.d.ts.map +1 -0
  125. package/lib/core/model/ArkBaseModel.js +271 -0
  126. package/lib/core/model/ArkBody.d.ts +3 -9
  127. package/lib/core/model/ArkBody.d.ts.map +1 -1
  128. package/lib/core/model/ArkBody.js +3 -14
  129. package/lib/core/model/ArkClass.d.ts +107 -13
  130. package/lib/core/model/ArkClass.d.ts.map +1 -1
  131. package/lib/core/model/ArkClass.js +152 -54
  132. package/lib/core/model/ArkExport.d.ts +8 -7
  133. package/lib/core/model/ArkExport.d.ts.map +1 -1
  134. package/lib/core/model/ArkExport.js +16 -18
  135. package/lib/core/model/ArkField.d.ts +16 -13
  136. package/lib/core/model/ArkField.d.ts.map +1 -1
  137. package/lib/core/model/ArkField.js +18 -62
  138. package/lib/core/model/ArkFile.d.ts +42 -0
  139. package/lib/core/model/ArkFile.d.ts.map +1 -1
  140. package/lib/core/model/ArkFile.js +58 -0
  141. package/lib/core/model/ArkImport.d.ts +9 -7
  142. package/lib/core/model/ArkImport.d.ts.map +1 -1
  143. package/lib/core/model/ArkImport.js +11 -12
  144. package/lib/core/model/ArkMetadata.d.ts +20 -0
  145. package/lib/core/model/ArkMetadata.d.ts.map +1 -0
  146. package/lib/core/model/ArkMetadata.js +44 -0
  147. package/lib/core/model/ArkMethod.d.ts +195 -17
  148. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  149. package/lib/core/model/ArkMethod.js +363 -46
  150. package/lib/core/model/ArkNamespace.d.ts +6 -8
  151. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  152. package/lib/core/model/ArkNamespace.js +16 -20
  153. package/lib/core/model/ArkSignature.d.ts +41 -0
  154. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  155. package/lib/core/model/ArkSignature.js +76 -19
  156. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  157. package/lib/core/model/builder/ArkClassBuilder.js +60 -49
  158. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  159. package/lib/core/model/builder/ArkExportBuilder.js +12 -6
  160. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  161. package/lib/core/model/builder/ArkFieldBuilder.js +13 -9
  162. package/lib/core/model/builder/ArkFileBuilder.js +1 -3
  163. package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
  164. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
  165. package/lib/core/model/builder/ArkImportBuilder.js +16 -13
  166. package/lib/core/model/builder/ArkMethodBuilder.d.ts +3 -1
  167. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  168. package/lib/core/model/builder/ArkMethodBuilder.js +105 -45
  169. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  170. package/lib/core/model/builder/ArkNamespaceBuilder.js +4 -5
  171. package/lib/core/model/builder/builderUtils.d.ts +2 -1
  172. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  173. package/lib/core/model/builder/builderUtils.js +63 -43
  174. package/lib/index.d.ts +2 -1
  175. package/lib/index.d.ts.map +1 -1
  176. package/lib/index.js +4 -3
  177. package/lib/save/ArkStream.js +1 -1
  178. package/lib/save/DotPrinter.d.ts.map +1 -1
  179. package/lib/save/DotPrinter.js +1 -15
  180. package/lib/save/GraphPrinter.d.ts.map +1 -1
  181. package/lib/save/GraphPrinter.js +4 -2
  182. package/lib/save/JsonPrinter.js +5 -5
  183. package/lib/save/ViewTreePrinter.d.ts +16 -0
  184. package/lib/save/ViewTreePrinter.d.ts.map +1 -0
  185. package/lib/save/ViewTreePrinter.js +130 -0
  186. package/lib/save/source/SourceBase.d.ts +2 -2
  187. package/lib/save/source/SourceBase.d.ts.map +1 -1
  188. package/lib/save/source/SourceBase.js +6 -13
  189. package/lib/save/source/SourceBody.d.ts.map +1 -1
  190. package/lib/save/source/SourceBody.js +27 -14
  191. package/lib/save/source/SourceClass.d.ts.map +1 -1
  192. package/lib/save/source/SourceClass.js +12 -8
  193. package/lib/save/source/SourceField.d.ts.map +1 -1
  194. package/lib/save/source/SourceField.js +6 -2
  195. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  196. package/lib/save/source/SourceMethod.js +10 -3
  197. package/lib/save/source/SourceModule.d.ts.map +1 -1
  198. package/lib/save/source/SourceModule.js +16 -10
  199. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  200. package/lib/save/source/SourceNamespace.js +4 -0
  201. package/lib/save/source/SourceStmt.d.ts +1 -1
  202. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  203. package/lib/save/source/SourceStmt.js +37 -25
  204. package/lib/save/source/SourceTransformer.d.ts +6 -0
  205. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  206. package/lib/save/source/SourceTransformer.js +82 -51
  207. package/lib/save/source/SourceUtils.d.ts.map +1 -1
  208. package/lib/save/source/SourceUtils.js +12 -11
  209. package/lib/transformer/StaticSingleAssignmentFormer.js +3 -3
  210. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  211. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  212. package/lib/utils/CfgStructualAnalysis.js +103 -72
  213. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  214. package/lib/utils/callGraphUtils.js +7 -10
  215. package/lib/utils/crypto_utils.d.ts +6 -0
  216. package/lib/utils/crypto_utils.d.ts.map +1 -0
  217. package/lib/utils/crypto_utils.js +57 -0
  218. package/lib/utils/entryMethodUtils.d.ts.map +1 -1
  219. package/lib/utils/entryMethodUtils.js +27 -26
  220. package/lib/utils/getAllFiles.d.ts +1 -1
  221. package/lib/utils/getAllFiles.d.ts.map +1 -1
  222. package/lib/utils/getAllFiles.js +4 -5
  223. package/lib/utils/logger.js +2 -2
  224. package/package.json +3 -2
@@ -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,20 +3,20 @@ 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) {
10
- if (count == 1) {
10
+ if (count === 1) {
11
11
  temp1 = new ability
12
12
  temp2 = new want
13
13
  temp1.onCreate(temp2)
14
14
  }
15
- if (count == 2) {
15
+ if (count === 2) {
16
16
  onDestroy()
17
17
  }
18
18
  ...
19
- if (count == *) {
19
+ if (count === *) {
20
20
  callbackMethod1()
21
21
  }
22
22
  ...
@@ -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;IA+C9B,OAAO,CAAC,kBAAkB;IA2H1B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,WAAW;IAYZ,YAAY,IAAI,SAAS;IAIhC,OAAO,CAAC,6BAA6B;IAqB9B,0BAA0B,IAAI,SAAS,EAAE;IAWzC,8BAA8B,IAAI,SAAS,EAAE;IAoD7C,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,24 +61,25 @@ 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 Decorator_1 = require("../base/Decorator");
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) {
72
- if (count == 1) {
73
+ if (count === 1) {
73
74
  temp1 = new ability
74
75
  temp2 = new want
75
76
  temp1.onCreate(temp2)
76
77
  }
77
- if (count == 2) {
78
+ if (count === 2) {
78
79
  onDestroy()
79
80
  }
80
81
  ...
81
- if (count == *) {
82
+ if (count === *) {
82
83
  callbackMethod1()
83
84
  }
84
85
  ...
@@ -102,8 +103,8 @@ class DummyMainCreater {
102
103
  this.buildBuiltInClass();
103
104
  }
104
105
  buildBuiltInClass() {
105
- for (const sdkFile of this.scene.getSdkArkFilesMap().values()) {
106
- if (sdkFile.getName() == 'api\\@ohos.app.ability.Want.d.ts') {
106
+ for (const sdkFile of this.scene.getSdkArkFiles()) {
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);
109
110
  }
@@ -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,7 +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
+ this.dummyMain.setImplementationSignature(methodSignature);
133
+ this.dummyMain.setLineCol(0);
134
+ (0, ArkMethodBuilder_1.checkAndUpdateMethod)(this.dummyMain, dummyMainClass);
132
135
  dummyMainClass.addMethod(this.dummyMain);
133
136
  for (const method of this.entryMethods) {
134
137
  if (method.getDeclaringArkClass().isDefaultArkClass()) {
@@ -138,7 +141,7 @@ class DummyMainCreater {
138
141
  const declaringArkClass = method.getDeclaringArkClass();
139
142
  let newLocal = null;
140
143
  for (const local of this.classLocalMap.values()) {
141
- if ((local === null || local === void 0 ? void 0 : local.getType()).getClassSignature() == declaringArkClass.getSignature()) {
144
+ if ((local === null || local === void 0 ? void 0 : local.getType()).getClassSignature() === declaringArkClass.getSignature()) {
142
145
  newLocal = local;
143
146
  break;
144
147
  }
@@ -151,7 +154,7 @@ class DummyMainCreater {
151
154
  }
152
155
  }
153
156
  const localSet = new Set(Array.from(this.classLocalMap.values()).filter((value) => value !== null));
154
- const dummyBody = new ArkBody_1.ArkBody(localSet, new Cfg_1.Cfg(), this.createDummyMainCfg(), new Map(), new Map());
157
+ const dummyBody = new ArkBody_1.ArkBody(localSet, this.createDummyMainCfg());
155
158
  this.dummyMain.setBody(dummyBody);
156
159
  this.addCfg2Stmt();
157
160
  this.scene.addToMethodsMap(this.dummyMain);
@@ -161,10 +164,14 @@ class DummyMainCreater {
161
164
  const dummyCfg = new Cfg_1.Cfg();
162
165
  dummyCfg.setDeclaringMethod(this.dummyMain);
163
166
  const firstBlock = new BasicBlock_1.BasicBlock();
164
- dummyCfg.addBlock(firstBlock);
167
+ let isStartingStmt = true;
165
168
  for (const method of this.scene.getStaticInitMethods()) {
166
169
  const staticInvokeExpr = new Expr_1.ArkStaticInvokeExpr(method.getSignature(), []);
167
170
  const invokeStmt = new Stmt_1.ArkInvokeStmt(staticInvokeExpr);
171
+ if (isStartingStmt) {
172
+ dummyCfg.setStartingStmt(invokeStmt);
173
+ isStartingStmt = false;
174
+ }
168
175
  firstBlock.addStmt(invokeStmt);
169
176
  }
170
177
  const locals = Array.from(new Set(this.classLocalMap.values()));
@@ -187,15 +194,17 @@ class DummyMainCreater {
187
194
  }
188
195
  }
189
196
  const countLocal = new Local_1.Local('count', Type_1.NumberType.getInstance());
190
- const zero = new Constant_1.Constant('0', Type_1.NumberType.getInstance());
197
+ const zero = ValueUtil_1.ValueUtil.getOrCreateNumberConst(0);
191
198
  const countAssignStmt = new Stmt_1.ArkAssignStmt(countLocal, zero);
192
- const truE = new Constant_1.Constant('true', Type_1.BooleanType.getInstance());
199
+ const truE = ValueUtil_1.ValueUtil.getBooleanConstant(true);
193
200
  const conditionTrue = new Expr_1.ArkConditionExpr(truE, zero, Expr_1.RelationalBinaryOperator.Equality);
194
201
  const whileStmt = new Stmt_1.ArkIfStmt(conditionTrue);
195
202
  firstBlock.addStmt(countAssignStmt);
203
+ dummyCfg.addBlock(firstBlock);
204
+ dummyCfg.setStartingStmt(firstBlock.getStmts()[0]);
196
205
  const whileBlock = new BasicBlock_1.BasicBlock();
197
- dummyCfg.addBlock(whileBlock);
198
206
  whileBlock.addStmt(whileStmt);
207
+ dummyCfg.addBlock(whileBlock);
199
208
  firstBlock.addSuccessorBlock(whileBlock);
200
209
  whileBlock.addPredecessorBlock(firstBlock);
201
210
  let lastBlocks = [whileBlock];
@@ -205,8 +214,8 @@ class DummyMainCreater {
205
214
  const condition = new Expr_1.ArkConditionExpr(countLocal, new Constant_1.Constant(count.toString(), Type_1.NumberType.getInstance()), Expr_1.RelationalBinaryOperator.Equality);
206
215
  const ifStmt = new Stmt_1.ArkIfStmt(condition);
207
216
  const ifBlock = new BasicBlock_1.BasicBlock();
208
- dummyCfg.addBlock(ifBlock);
209
217
  ifBlock.addStmt(ifStmt);
218
+ dummyCfg.addBlock(ifBlock);
210
219
  for (const block of lastBlocks) {
211
220
  ifBlock.addPredecessorBlock(block);
212
221
  block.addSuccessorBlock(ifBlock);
@@ -254,8 +263,8 @@ class DummyMainCreater {
254
263
  invokeExpr = new Expr_1.ArkStaticInvokeExpr(method.getSignature(), paramLocals);
255
264
  }
256
265
  const invokeStmt = new Stmt_1.ArkInvokeStmt(invokeExpr);
257
- dummyCfg.addBlock(invokeBlock);
258
266
  invokeBlock.addStmt(invokeStmt);
267
+ dummyCfg.addBlock(invokeBlock);
259
268
  ifBlock.addSuccessorBlock(invokeBlock);
260
269
  invokeBlock.addPredecessorBlock(ifBlock);
261
270
  lastBlocks = [ifBlock, invokeBlock];
@@ -266,8 +275,8 @@ class DummyMainCreater {
266
275
  }
267
276
  const returnStmt = new Stmt_1.ArkReturnVoidStmt();
268
277
  const returnBlock = new BasicBlock_1.BasicBlock();
269
- dummyCfg.addBlock(returnBlock);
270
278
  returnBlock.addStmt(returnStmt);
279
+ dummyCfg.addBlock(returnBlock);
271
280
  whileBlock.addSuccessorBlock(returnBlock);
272
281
  returnBlock.addPredecessorBlock(whileBlock);
273
282
  return dummyCfg;
@@ -317,10 +326,8 @@ class DummyMainCreater {
317
326
  if (COMPONENT_BASE_CLASSES.includes(cls.getSuperClassName())) {
318
327
  return true;
319
328
  }
320
- for (let m of cls.getModifiers()) {
321
- if (m instanceof Decorator_1.Decorator && m.getKind() === 'Component') {
322
- return true;
323
- }
329
+ if (cls.hasDecorator('Component')) {
330
+ return true;
324
331
  }
325
332
  return false;
326
333
  })
@@ -329,11 +336,21 @@ class DummyMainCreater {
329
336
  });
330
337
  return methods;
331
338
  }
339
+ classInheritsAbility(arkClass) {
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
+ }
332
350
  getMethodsFromAllAbilities() {
333
- const ABILITY_BASE_CLASSES = ['UIExtensionAbility', 'Ability', 'FormExtensionAbility'];
334
351
  let methods = [];
335
352
  this.scene.getClasses()
336
- .filter(cls => ABILITY_BASE_CLASSES.includes(cls.getSuperClassName()))
353
+ .filter(cls => this.classInheritsAbility(cls))
337
354
  .forEach(cls => {
338
355
  methods.push(...cls.getMethods().filter(mtd => entryMethodUtils_1.LIFECYCLE_METHOD_NAME.includes(mtd.getName())));
339
356
  });
@@ -369,10 +386,8 @@ class DummyMainCreater {
369
386
  const abilityEntryMethods = [];
370
387
  let cls = ability;
371
388
  for (const method of cls.getMethods()) {
372
- for (const modifier of method.getModifiers()) {
373
- if (modifier === 'private') {
374
- continue;
375
- }
389
+ if (method.isPrivate()) {
390
+ continue;
376
391
  }
377
392
  for (const mtd of abilityEntryMethods) {
378
393
  if (mtd.getName() === method.getName()) {
@@ -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';
@@ -46,41 +46,41 @@ class ExprUseReplacer {
46
46
  }
47
47
  }
48
48
  caseBinopExpr(expr) {
49
- if (expr.getOp1() == this.oldUse) {
49
+ if (expr.getOp1() === this.oldUse) {
50
50
  expr.setOp1(this.newUse);
51
51
  }
52
- if (expr.getOp2() == this.oldUse) {
52
+ if (expr.getOp2() === this.oldUse) {
53
53
  expr.setOp2(this.newUse);
54
54
  }
55
55
  }
56
56
  caseInvokeExpr(expr) {
57
57
  let args = expr.getArgs();
58
58
  for (let i = 0; i < args.length; i++) {
59
- if (args[i] == this.oldUse) {
59
+ if (args[i] === this.oldUse) {
60
60
  args[i] = this.newUse;
61
61
  }
62
62
  }
63
- if (expr instanceof Expr_1.ArkInstanceInvokeExpr && expr.getBase() == this.oldUse) {
63
+ if (expr instanceof Expr_1.ArkInstanceInvokeExpr && expr.getBase() === this.oldUse) {
64
64
  expr.setBase(this.newUse);
65
65
  }
66
66
  }
67
67
  caseNewArrayExpr(expr) {
68
- if (expr.getSize() == this.oldUse) {
68
+ if (expr.getSize() === this.oldUse) {
69
69
  expr.setSize(this.newUse);
70
70
  }
71
71
  }
72
72
  caseTypeOfExpr(expr) {
73
- if (expr.getOp() == this.oldUse) {
73
+ if (expr.getOp() === this.oldUse) {
74
74
  expr.setOp(this.newUse);
75
75
  }
76
76
  }
77
77
  caseInstanceOfExpr(expr) {
78
- if (expr.getOp() == this.oldUse) {
78
+ if (expr.getOp() === this.oldUse) {
79
79
  expr.setOp(this.newUse);
80
80
  }
81
81
  }
82
82
  caseCastExpr(expr) {
83
- if (expr.getOp() == this.oldUse) {
83
+ if (expr.getOp() === this.oldUse) {
84
84
  expr.setOp(this.newUse);
85
85
  }
86
86
  }
@@ -1,7 +1,14 @@
1
1
  import { Value } from '../base/Value';
2
2
  import { Scene } from '../../Scene';
3
+ import ts from 'ohos-typescript';
4
+ import { SceneOptions } from '../../Config';
5
+ import { Stmt } from '../base/Stmt';
6
+ import { ArkBaseModel } from '../model/ArkBaseModel';
3
7
  export declare class IRUtils {
4
8
  static moreThanOneAddress(value: Value): boolean;
5
9
  static generateTextForStmt(scene: Scene): void;
10
+ static setLeadingComments(metadata: Stmt | ArkBaseModel, node: ts.Node, sourceFile: ts.SourceFile, options: SceneOptions): void;
11
+ static getLeadingComments(node: ts.Node, sourceFile: ts.SourceFile, options: SceneOptions): string[];
12
+ static isTempLocal(value: Value): boolean;
6
13
  }
7
14
  //# sourceMappingURL=IRUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IRUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRUtils.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,qBAAa,OAAO;IAChB,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAQhD,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAUjD"}
1
+ {"version":3,"file":"IRUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRUtils.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,qBAAa,OAAO;WACF,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;WAczC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;WAWvC,kBAAkB,CAC5B,QAAQ,EAAE,IAAI,GAAG,YAAY,EAC7B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,YAAY,GACtB,IAAI;WAOO,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE;WAa7F,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAGnD"}
@@ -13,14 +13,25 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
16
19
  Object.defineProperty(exports, "__esModule", { value: true });
17
20
  exports.IRUtils = void 0;
18
21
  const Expr_1 = require("../base/Expr");
19
22
  const Ref_1 = require("../base/Ref");
23
+ const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
24
+ const ArkMetadata_1 = require("../model/ArkMetadata");
25
+ const Local_1 = require("../base/Local");
26
+ const Const_1 = require("./Const");
20
27
  class IRUtils {
21
28
  static moreThanOneAddress(value) {
22
- if (value instanceof Expr_1.AbstractBinopExpr || value instanceof Expr_1.AbstractInvokeExpr || value instanceof Ref_1.AbstractFieldRef ||
23
- value instanceof Ref_1.ArkArrayRef || value instanceof Expr_1.ArkCastExpr || value instanceof Expr_1.ArkUnopExpr) {
29
+ if (value instanceof Expr_1.AbstractBinopExpr ||
30
+ value instanceof Expr_1.AbstractInvokeExpr ||
31
+ value instanceof Ref_1.AbstractFieldRef ||
32
+ value instanceof Ref_1.ArkArrayRef ||
33
+ value instanceof Expr_1.ArkCastExpr ||
34
+ value instanceof Expr_1.ArkUnopExpr) {
24
35
  return true;
25
36
  }
26
37
  return false;
@@ -35,5 +46,26 @@ class IRUtils {
35
46
  }
36
47
  }
37
48
  }
49
+ static setLeadingComments(metadata, node, sourceFile, options) {
50
+ let comments = this.getLeadingComments(node, sourceFile, options);
51
+ if (comments.length > 0) {
52
+ metadata.setMetadata(ArkMetadata_1.ArkMetadataKind.LEADING_COMMENTS, comments);
53
+ }
54
+ }
55
+ static getLeadingComments(node, sourceFile, options) {
56
+ let comments = [];
57
+ if (!options.enableLeadingComments) {
58
+ return comments;
59
+ }
60
+ const commentRanges = ohos_typescript_1.default.getLeadingCommentRanges(node.getFullText(sourceFile), 0) || [];
61
+ for (const range of commentRanges) {
62
+ const comment = node.getFullText(sourceFile).slice(range.pos, range.end).replace(/\r\n/g, '\n');
63
+ comments.push(comment);
64
+ }
65
+ return comments;
66
+ }
67
+ static isTempLocal(value) {
68
+ return value instanceof Local_1.Local && value.getName().startsWith(Const_1.NAME_PREFIX);
69
+ }
38
70
  }
39
71
  exports.IRUtils = IRUtils;
@@ -57,5 +57,6 @@ export declare function getArkFile(im: FromInfo): ArkFile | null | undefined;
57
57
  * @param fromInfo importInfo or exportInfo
58
58
  */
59
59
  export declare function findExportInfo(fromInfo: FromInfo): ExportInfo | null;
60
+ export declare function findArkExport(exportInfo: ExportInfo | undefined): ArkExport | null;
60
61
  export declare function findArkExportInFile(name: string, declaringArkFile: ArkFile): ArkExport | null;
61
62
  //# sourceMappingURL=ModelUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/ModelUtils.ts"],"names":[],"mappings":"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"}