arkanalyzer 1.0.94 → 2.0.0-beta1

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 (291) hide show
  1. package/lib/Config.d.ts +7 -0
  2. package/lib/Config.d.ts.map +1 -1
  3. package/lib/Scene.d.ts +134 -170
  4. package/lib/Scene.d.ts.map +1 -1
  5. package/lib/Scene.js +412 -976
  6. package/lib/callgraph/algorithm/AbstractAnalysis.js +3 -2
  7. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +1 -1
  8. package/lib/callgraph/model/CallGraph.js +1 -1
  9. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +1 -3
  10. package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts.map +1 -1
  11. package/lib/callgraph/pointerAnalysis/PTAUtils.js +17 -7
  12. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  13. package/lib/callgraph/pointerAnalysis/Pag.js +4 -14
  14. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  15. package/lib/callgraph/pointerAnalysis/PagBuilder.js +2 -1
  16. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  17. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +1 -2
  18. package/lib/callgraph/pointerAnalysis/plugins/WorkerPlugin.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/plugins/WorkerPlugin.js +0 -1
  20. package/lib/cli/commands/cg.d.ts +1 -0
  21. package/lib/cli/commands/cg.d.ts.map +1 -1
  22. package/lib/cli/commands/cg.js +22 -18
  23. package/lib/cli/commands/ir.d.ts +1 -0
  24. package/lib/cli/commands/ir.d.ts.map +1 -1
  25. package/lib/cli/commands/ir.js +5 -2
  26. package/lib/core/base/Constant.d.ts +5 -5
  27. package/lib/core/base/Constant.d.ts.map +1 -1
  28. package/lib/core/base/Constant.js +12 -9
  29. package/lib/core/base/Expr.d.ts +36 -20
  30. package/lib/core/base/Expr.d.ts.map +1 -1
  31. package/lib/core/base/Expr.js +206 -94
  32. package/lib/core/base/Local.d.ts +10 -20
  33. package/lib/core/base/Local.d.ts.map +1 -1
  34. package/lib/core/base/Local.js +25 -28
  35. package/lib/core/base/Position.d.ts +6 -0
  36. package/lib/core/base/Position.d.ts.map +1 -1
  37. package/lib/core/base/Position.js +37 -11
  38. package/lib/core/base/Ref.d.ts +45 -33
  39. package/lib/core/base/Ref.d.ts.map +1 -1
  40. package/lib/core/base/Ref.js +225 -51
  41. package/lib/core/base/Stmt.d.ts +19 -9
  42. package/lib/core/base/Stmt.d.ts.map +1 -1
  43. package/lib/core/base/Stmt.js +135 -52
  44. package/lib/core/base/Type.d.ts +67 -4
  45. package/lib/core/base/Type.d.ts.map +1 -1
  46. package/lib/core/base/Type.js +391 -20
  47. package/lib/core/base/TypeExpr.d.ts +6 -4
  48. package/lib/core/base/TypeExpr.d.ts.map +1 -1
  49. package/lib/core/base/TypeExpr.js +34 -10
  50. package/lib/core/base/Value.d.ts +20 -2
  51. package/lib/core/base/Value.d.ts.map +1 -1
  52. package/lib/core/base/Value.js +12 -0
  53. package/lib/core/common/ArkIRTransformer.d.ts +18 -0
  54. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  55. package/lib/core/common/ArkIRTransformer.js +94 -75
  56. package/lib/core/common/ArkValueTransformer.d.ts +21 -3
  57. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  58. package/lib/core/common/ArkValueTransformer.js +455 -265
  59. package/lib/core/common/Builtin.d.ts +48 -24
  60. package/lib/core/common/Builtin.d.ts.map +1 -1
  61. package/lib/core/common/Builtin.js +90 -52
  62. package/lib/core/common/CanonicalizerValidator.d.ts +308 -0
  63. package/lib/core/common/CanonicalizerValidator.d.ts.map +1 -0
  64. package/lib/core/common/CanonicalizerValidator.js +888 -0
  65. package/lib/core/common/Const.d.ts +3 -3
  66. package/lib/core/common/Const.d.ts.map +1 -1
  67. package/lib/core/common/Const.js +3 -3
  68. package/lib/core/common/DummyMainCreater.d.ts +2 -21
  69. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  70. package/lib/core/common/DummyMainCreater.js +8 -105
  71. package/lib/core/common/IRInference.d.ts +55 -3
  72. package/lib/core/common/IRInference.d.ts.map +1 -1
  73. package/lib/core/common/IRInference.js +407 -126
  74. package/lib/core/common/IRUtils.d.ts +1 -0
  75. package/lib/core/common/IRUtils.d.ts.map +1 -1
  76. package/lib/core/common/IRUtils.js +44 -13
  77. package/lib/core/common/ModelUtils.d.ts +44 -20
  78. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  79. package/lib/core/common/ModelUtils.js +378 -208
  80. package/lib/core/common/SdkUtils.d.ts +35 -5
  81. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  82. package/lib/core/common/SdkUtils.js +181 -53
  83. package/lib/core/common/SignatureCanonicalizer.d.ts +95 -0
  84. package/lib/core/common/SignatureCanonicalizer.d.ts.map +1 -0
  85. package/lib/core/common/SignatureCanonicalizer.js +116 -0
  86. package/lib/core/common/SignatureCanonicalizerRegistry.d.ts +176 -0
  87. package/lib/core/common/SignatureCanonicalizerRegistry.d.ts.map +1 -0
  88. package/lib/core/common/SignatureCanonicalizerRegistry.js +343 -0
  89. package/lib/core/common/SignatureModelCanonicalizer.d.ts +69 -0
  90. package/lib/core/common/SignatureModelCanonicalizer.d.ts.map +1 -0
  91. package/lib/core/common/SignatureModelCanonicalizer.js +109 -0
  92. package/lib/core/common/StmtUseReplacer.d.ts +1 -0
  93. package/lib/core/common/StmtUseReplacer.d.ts.map +1 -1
  94. package/lib/core/common/StmtUseReplacer.js +9 -0
  95. package/lib/core/common/StringUtils.d.ts +12 -1
  96. package/lib/core/common/StringUtils.d.ts.map +1 -1
  97. package/lib/core/common/StringUtils.js +36 -17
  98. package/lib/core/common/TempSignatureCanonicalizer.d.ts +82 -0
  99. package/lib/core/common/TempSignatureCanonicalizer.d.ts.map +1 -0
  100. package/lib/core/common/TempSignatureCanonicalizer.js +177 -0
  101. package/lib/core/common/TypeInference.d.ts +24 -6
  102. package/lib/core/common/TypeInference.d.ts.map +1 -1
  103. package/lib/core/common/TypeInference.js +243 -117
  104. package/lib/core/common/ValueUtil.d.ts +2 -1
  105. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  106. package/lib/core/common/ValueUtil.js +4 -1
  107. package/lib/core/graph/Cfg.d.ts.map +1 -1
  108. package/lib/core/graph/Cfg.js +21 -6
  109. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  110. package/lib/core/graph/builder/CfgBuilder.js +46 -33
  111. package/lib/core/graph/builder/IfBuilder.d.ts.map +1 -1
  112. package/lib/core/graph/builder/IfBuilder.js +6 -2
  113. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  114. package/lib/core/graph/builder/ViewTreeBuilder.js +6 -2
  115. package/lib/core/inference/ModelInference.d.ts +24 -4
  116. package/lib/core/inference/ModelInference.d.ts.map +1 -1
  117. package/lib/core/inference/ModelInference.js +273 -79
  118. package/lib/core/inference/ValueInference.d.ts +3 -2
  119. package/lib/core/inference/ValueInference.d.ts.map +1 -1
  120. package/lib/core/inference/ValueInference.js +90 -40
  121. package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
  122. package/lib/core/inference/abc/AbcInference.js +28 -15
  123. package/lib/core/inference/arkts/ArkTsInference.d.ts +9 -3
  124. package/lib/core/inference/arkts/ArkTsInference.d.ts.map +1 -1
  125. package/lib/core/inference/arkts/ArkTsInference.js +54 -16
  126. package/lib/core/model/ArkClass.d.ts +192 -18
  127. package/lib/core/model/ArkClass.d.ts.map +1 -1
  128. package/lib/core/model/ArkClass.js +852 -122
  129. package/lib/core/model/ArkExport.d.ts.map +1 -1
  130. package/lib/core/model/ArkExport.js +1 -2
  131. package/lib/core/model/ArkField.d.ts +34 -2
  132. package/lib/core/model/ArkField.d.ts.map +1 -1
  133. package/lib/core/model/ArkField.js +89 -14
  134. package/lib/core/model/ArkFile.d.ts +72 -12
  135. package/lib/core/model/ArkFile.d.ts.map +1 -1
  136. package/lib/core/model/ArkFile.js +275 -65
  137. package/lib/core/model/ArkImport.d.ts.map +1 -1
  138. package/lib/core/model/ArkImport.js +1 -2
  139. package/lib/core/model/ArkMethod.d.ts +101 -15
  140. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  141. package/lib/core/model/ArkMethod.js +252 -39
  142. package/lib/core/model/ArkModule.d.ts +1 -1
  143. package/lib/core/model/ArkModule.js +1 -1
  144. package/lib/core/model/ArkNamespace.d.ts +80 -10
  145. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  146. package/lib/core/model/ArkNamespace.js +309 -76
  147. package/lib/core/model/ArkSignature.d.ts +242 -18
  148. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  149. package/lib/core/model/ArkSignature.js +725 -95
  150. package/lib/core/model/builder/ArkClassBuilder.d.ts +6 -3
  151. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  152. package/lib/core/model/builder/ArkClassBuilder.js +116 -71
  153. package/lib/core/model/builder/ArkExportBuilder.d.ts +1 -1
  154. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  155. package/lib/core/model/builder/ArkExportBuilder.js +1 -1
  156. package/lib/core/model/builder/ArkFieldBuilder.d.ts +0 -2
  157. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  158. package/lib/core/model/builder/ArkFieldBuilder.js +9 -43
  159. package/lib/core/model/builder/ArkFileBuilder.d.ts.map +1 -1
  160. package/lib/core/model/builder/ArkFileBuilder.js +32 -33
  161. package/lib/core/model/builder/ArkMethodBuilder.d.ts +10 -3
  162. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  163. package/lib/core/model/builder/ArkMethodBuilder.js +40 -26
  164. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +3 -2
  165. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  166. package/lib/core/model/builder/ArkNamespaceBuilder.js +45 -77
  167. package/lib/core/model/builder/ArkSignatureBuilder.d.ts +9 -0
  168. package/lib/core/model/builder/ArkSignatureBuilder.d.ts.map +1 -1
  169. package/lib/core/model/builder/ArkSignatureBuilder.js +26 -3
  170. package/lib/core/model/builder/BodyBuilder.d.ts +1 -0
  171. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
  172. package/lib/core/model/builder/BodyBuilder.js +37 -11
  173. package/lib/core/model/builder/builderUtils.d.ts +11 -1
  174. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  175. package/lib/core/model/builder/builderUtils.js +124 -90
  176. package/lib/frontend/FrontendBuilder.d.ts +10 -6
  177. package/lib/frontend/FrontendBuilder.d.ts.map +1 -1
  178. package/lib/frontend/FrontendBuilder.js +19 -45
  179. package/lib/frontend/ModuleScene.d.ts +43 -0
  180. package/lib/frontend/ModuleScene.d.ts.map +1 -0
  181. package/lib/frontend/ModuleScene.js +143 -0
  182. package/lib/frontend/SceneBuildStage.d.ts +15 -0
  183. package/lib/frontend/SceneBuildStage.d.ts.map +1 -0
  184. package/lib/frontend/SceneBuildStage.js +32 -0
  185. package/lib/frontend/SceneBuilder.d.ts +153 -0
  186. package/lib/frontend/SceneBuilder.d.ts.map +1 -0
  187. package/lib/frontend/SceneBuilder.js +859 -0
  188. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts +0 -2
  189. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts.map +1 -1
  190. package/lib/frontend/arktsFrontend/ArktsFrontend.js +0 -18
  191. package/lib/frontend/arktsFrontend/FileBodyRemount.d.ts +17 -0
  192. package/lib/frontend/arktsFrontend/FileBodyRemount.d.ts.map +1 -0
  193. package/lib/frontend/arktsFrontend/FileBodyRemount.js +187 -0
  194. package/lib/frontend/common/ModuleBuilder.d.ts +4 -2
  195. package/lib/frontend/common/ModuleBuilder.d.ts.map +1 -1
  196. package/lib/frontend/common/ModuleBuilder.js +19 -9
  197. package/lib/frontend/cppFrontend/CppFrontend.d.ts +0 -6
  198. package/lib/frontend/cppFrontend/CppFrontend.d.ts.map +1 -1
  199. package/lib/frontend/cppFrontend/CppFrontend.js +0 -56
  200. package/lib/frontend/cppFrontend/base/Type.d.ts +7 -0
  201. package/lib/frontend/cppFrontend/base/Type.d.ts.map +1 -1
  202. package/lib/frontend/cppFrontend/base/Type.js +29 -0
  203. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -1
  204. package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +56 -56
  205. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +1 -1
  206. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -1
  207. package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +124 -113
  208. package/lib/frontend/cppFrontend/common/Builtin.d.ts +29 -19
  209. package/lib/frontend/cppFrontend/common/Builtin.d.ts.map +1 -1
  210. package/lib/frontend/cppFrontend/common/Builtin.js +56 -35
  211. package/lib/frontend/cppFrontend/common/IRInference.d.ts +7 -2
  212. package/lib/frontend/cppFrontend/common/IRInference.d.ts.map +1 -1
  213. package/lib/frontend/cppFrontend/common/IRInference.js +61 -28
  214. package/lib/frontend/cppFrontend/common/IRUtils.d.ts +1 -0
  215. package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -1
  216. package/lib/frontend/cppFrontend/common/IRUtils.js +22 -10
  217. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts +19 -0
  218. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts.map +1 -1
  219. package/lib/frontend/cppFrontend/common/ModelUtils.js +84 -3
  220. package/lib/frontend/cppFrontend/common/TypeInference.d.ts.map +1 -1
  221. package/lib/frontend/cppFrontend/common/TypeInference.js +44 -54
  222. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -1
  223. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +2 -1
  224. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts +1 -1
  225. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts.map +1 -1
  226. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts.map +1 -1
  227. package/lib/frontend/cppFrontend/inference/CxxValueInference.js +41 -5
  228. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -1
  229. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +18 -28
  230. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  231. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.js +2 -3
  232. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +2 -2
  233. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -1
  234. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +31 -24
  235. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  236. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +10 -16
  237. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +0 -2
  238. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  239. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +19 -37
  240. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +1 -0
  241. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -1
  242. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.js +30 -3
  243. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -1
  244. package/lib/frontend/cppFrontend/model/builder/builderUtils.js +8 -4
  245. package/lib/index.d.ts +3 -0
  246. package/lib/index.d.ts.map +1 -1
  247. package/lib/index.js +10 -2
  248. package/lib/save/json/JsonSerialization.js +2 -2
  249. package/lib/save/source/SourceStmt.js +1 -1
  250. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  251. package/lib/save/source/SourceTransformer.js +0 -9
  252. package/lib/statistics/StageStatistics.d.ts +195 -0
  253. package/lib/statistics/StageStatistics.d.ts.map +1 -0
  254. package/lib/statistics/StageStatistics.js +346 -0
  255. package/lib/statistics/StageStatisticsReporter.d.ts +58 -0
  256. package/lib/statistics/StageStatisticsReporter.d.ts.map +1 -0
  257. package/lib/statistics/StageStatisticsReporter.js +255 -0
  258. package/lib/utils/Canonicalizer.d.ts +9 -2
  259. package/lib/utils/Canonicalizer.d.ts.map +1 -1
  260. package/lib/utils/Canonicalizer.js +19 -2
  261. package/lib/utils/CxxSceneUtils.d.ts +7 -0
  262. package/lib/utils/CxxSceneUtils.d.ts.map +1 -1
  263. package/lib/utils/CxxSceneUtils.js +10 -1
  264. package/lib/utils/FileUtils.d.ts +0 -1
  265. package/lib/utils/FileUtils.d.ts.map +1 -1
  266. package/lib/utils/FileUtils.js +1 -9
  267. package/lib/utils/HashUtils.d.ts +9 -0
  268. package/lib/utils/HashUtils.d.ts.map +1 -0
  269. package/lib/utils/HashUtils.js +65 -0
  270. package/lib/utils/ModuleUtils.d.ts.map +1 -1
  271. package/lib/utils/ModuleUtils.js +24 -5
  272. package/lib/utils/VisitedSegment.d.ts +23 -0
  273. package/lib/utils/VisitedSegment.d.ts.map +1 -0
  274. package/lib/utils/VisitedSegment.js +64 -0
  275. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  276. package/lib/utils/callGraphUtils.js +7 -7
  277. package/lib/utils/getAllFiles.d.ts.map +1 -1
  278. package/lib/utils/getAllFiles.js +11 -8
  279. package/lib/utils/logger.d.ts +4 -0
  280. package/lib/utils/logger.d.ts.map +1 -1
  281. package/lib/utils/logger.js +16 -0
  282. package/lib/utils/parseArkSourceFile.d.ts +33 -0
  283. package/lib/utils/parseArkSourceFile.d.ts.map +1 -0
  284. package/lib/utils/parseArkSourceFile.js +131 -0
  285. package/package.json +1 -1
  286. package/lib/utils/DependenciesSort.d.ts +0 -3
  287. package/lib/utils/DependenciesSort.d.ts.map +0 -1
  288. package/lib/utils/DependenciesSort.js +0 -72
  289. package/lib/utils/crypto_utils.d.ts +0 -6
  290. package/lib/utils/crypto_utils.d.ts.map +0 -1
  291. package/lib/utils/crypto_utils.js +0 -57
@@ -20,9 +20,9 @@ export declare const CONSTRUCT_SIGNATURE_NAME = "construct-signature";
20
20
  export declare const UNKNOWN_PROJECT_NAME: string;
21
21
  export declare const UNKNOWN_FILE_NAME: string;
22
22
  export declare const UNKNOWN_NAMESPACE_NAME: string;
23
- export declare const UNKNOWN_CLASS_NAME = "";
24
- export declare const UNKNOWN_FIELD_NAME = "";
25
- export declare const UNKNOWN_METHOD_NAME = "";
23
+ export declare const UNKNOWN_CLASS_NAME: string;
24
+ export declare const UNKNOWN_FIELD_NAME: string;
25
+ export declare const UNKNOWN_METHOD_NAME: string;
26
26
  export declare const TEMP_LOCAL_PREFIX = "%";
27
27
  export declare const LEXICAL_ENV_NAME_PREFIX: string;
28
28
  export declare const ARKTS_STATIC_MARK = "use static";
@@ -1 +1 @@
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,sBAAsB,QAAqB,CAAC;AACzD,yEAAyE;AACzE,eAAO,MAAM,0BAA0B,QAAqB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,MAAiB,CAAC;AACxD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAGjD,eAAO,MAAM,uBAAuB,QAA6B,CAAC;AAClE,eAAO,MAAM,yBAAyB,QAA2B,CAAC;AAClE,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAChE,eAAO,MAAM,+BAA+B,QAA4B,CAAC;AACzE,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAG9D,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;AAC7C,eAAO,MAAM,uBAAuB,QAAiC,CAAC;AAGtE,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAG9C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,qCAAqC,kCAAkC,CAAC;AACrF,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAG7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,YAAY,eAAe,CAAC;AACzC,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AACjE,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AACnE,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AAGrD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,2BAA2B,wBAAwB,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,sBAAsB,QAAqB,CAAC;AACzD,yEAAyE;AACzE,eAAO,MAAM,0BAA0B,QAAqB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,MAAiB,CAAC;AACxD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAGjD,eAAO,MAAM,uBAAuB,QAA6B,CAAC;AAClE,eAAO,MAAM,yBAAyB,QAA2B,CAAC;AAClE,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAChE,eAAO,MAAM,+BAA+B,QAA4B,CAAC;AACzE,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAG9D,eAAO,MAAM,oBAAoB,QAA6B,CAAC;AAC/D,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,QAA6B,CAAC;AACjE,eAAO,MAAM,kBAAkB,QAA6B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,QAA6B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAG9D,eAAO,MAAM,iBAAiB,MAAc,CAAC;AAC7C,eAAO,MAAM,uBAAuB,QAAiC,CAAC;AAGtE,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAG9C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,qCAAqC,kCAAkC,CAAC;AACrF,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAG7C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,YAAY,eAAe,CAAC;AACzC,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AACjE,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AACnE,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AAGrD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,2BAA2B,wBAAwB,CAAC"}
@@ -41,9 +41,9 @@ exports.CONSTRUCT_SIGNATURE_NAME = 'construct-signature'; // method name for con
41
41
  exports.UNKNOWN_PROJECT_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
42
42
  exports.UNKNOWN_FILE_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
43
43
  exports.UNKNOWN_NAMESPACE_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
44
- exports.UNKNOWN_CLASS_NAME = ''; // temp for being compatible with existing type inference
45
- exports.UNKNOWN_FIELD_NAME = ''; // temp for being compatible with existing type inference
46
- exports.UNKNOWN_METHOD_NAME = ''; // temp for being compatible with existing type inference
44
+ exports.UNKNOWN_CLASS_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
45
+ exports.UNKNOWN_FIELD_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
46
+ exports.UNKNOWN_METHOD_NAME = exports.NAME_PREFIX + exports.UNKNOWN_NAME;
47
47
  // IR const
48
48
  exports.TEMP_LOCAL_PREFIX = exports.NAME_PREFIX;
49
49
  exports.LEXICAL_ENV_NAME_PREFIX = exports.TEMP_LOCAL_PREFIX + 'closures';
@@ -1,7 +1,6 @@
1
1
  import { Scene } from '../../Scene';
2
2
  import { ArkClass } from '../model/ArkClass';
3
3
  import { ArkMethod } from '../model/ArkMethod';
4
- import { CallGraph } from '../../callgraph/model/CallGraph';
5
4
  /**
6
5
  收集所有的 Ability 和 Component 类,构造一个虚拟函数进行类的实例生成、初始化、生命周期函数调用等操作,具体为:
7
6
  classA.%statInit()
@@ -66,7 +65,7 @@ export declare class DummyMainCreater {
66
65
  */
67
66
  constructor(scene: Scene, dummyMethodName?: string, classScope?: ArkClass[], extraInstanceAssign?: boolean);
68
67
  setEntryMethods(methods: ArkMethod[]): void;
69
- createDummyMain(): void;
68
+ createDummyMain(): ArkMethod;
70
69
  private addStaticInit;
71
70
  private addClassInit;
72
71
  private addParamInit;
@@ -79,27 +78,9 @@ export declare class DummyMainCreater {
79
78
  private addMethodsInvokeStmt;
80
79
  private linkBlocks;
81
80
  private addCfg2Stmt;
82
- getDummyMain(): ArkMethod;
81
+ getDummyMain(): ArkMethod | null;
83
82
  private getEntryMethodsFromComponents;
84
83
  private classInheritsAbility;
85
84
  private getMethodsFromAllAbilities;
86
- /**
87
- * Analysis the coverage of files, methods, stmts when starting from the dummy main method according to the given call graph.
88
- * @param callGraph - the call graph create within ArkAnalyzer
89
- * @param generated - whether to include the generated methods
90
- */
91
- analysisCoverage(callGraph: CallGraph, generated?: boolean): Coverage;
92
- }
93
- interface Coverage {
94
- filesCoverage: number;
95
- methodsCoverage: number;
96
- stmtsCoverage: number;
97
- totalFiles: number;
98
- totalMethods: number;
99
- totalStmts: number;
100
- visitedFiles: number;
101
- visitedMethods: number;
102
- visitedStmts: number;
103
85
  }
104
- export {};
105
86
  //# sourceMappingURL=DummyMainCreater.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DummyMainCreater.d.ts","sourceRoot":"","sources":["../../../src/core/common/DummyMainCreater.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiBpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,OAAO,EAAE,SAAS,EAAiB,MAAM,iCAAiC,CAAC;AAK3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAO,CAAC,YAAY,CAAuC;IAE3D,OAAO,CAAC,UAAU,CAAuC;IAEzD,OAAO,CAAC,kBAAkB,CAAuC;IAEjE,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC;;;;;;OAMG;gBACS,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAE,OAAe;IAW1G,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAI3C,eAAe,IAAI,IAAI;IAwD9B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,iCAAiC;IAkBzC,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAYZ,YAAY,IAAI,SAAS;IAIhC,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,0BAA0B;IAiBlC;;;;OAIG;IACI,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,GAAE,OAAc,GAAG,QAAQ;CAIrF;AAED,UAAU,QAAQ;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"DummyMainCreater.d.ts","sourceRoot":"","sources":["../../../src/core/common/DummyMainCreater.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiBpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAc/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAO,CAAC,YAAY,CAAuC;IAE3D,OAAO,CAAC,UAAU,CAAuC;IAEzD,OAAO,CAAC,kBAAkB,CAAuC;IAEjE,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC;;;;;;OAMG;gBACS,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAE,OAAe;IAW1G,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAI3C,eAAe,IAAI,SAAS;IAsDnC,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,iCAAiC;IAkBzC,OAAO,CAAC,kBAAkB;IAuD1B,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAYZ,YAAY,IAAI,SAAS,GAAG,IAAI;IAIvC,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,0BAA0B;CAgBrC"}
@@ -99,7 +99,6 @@ class DummyMainCreater {
99
99
  this.pairedMethodGroups = new Map();
100
100
  // every declaring class of method in entryMethods have its instance local which is used to be the base of instance invoke expr
101
101
  this.classLocalMap = new Map();
102
- this.dummyMain = new ArkMethod_1.ArkMethod();
103
102
  this.tempLocalIndex = 0;
104
103
  this.tempBlockIndex = 0;
105
104
  this.extraInstanceAssign = false;
@@ -129,24 +128,21 @@ class DummyMainCreater {
129
128
  this.scene.setFile(dummyMainFile);
130
129
  }
131
130
  // step2: find out or create dummy class
132
- let dummyMainClass = dummyMainFile.getClassWithName(Const_1.DUMMY_CLASS);
131
+ const dummyMainClassSignature = new ArkSignature_1.ClassSignature(Const_1.DUMMY_CLASS, dummyMainFile.getFileSigID());
132
+ let dummyMainClass = dummyMainFile.getClass(dummyMainClassSignature);
133
133
  if (!dummyMainClass) {
134
- dummyMainClass = new ArkClass_1.ArkClass();
135
- dummyMainClass.setDeclaringArkFile(dummyMainFile);
136
- const dummyMainClassSignature = new ArkSignature_1.ClassSignature(Const_1.DUMMY_CLASS, dummyMainFileSignature);
134
+ dummyMainClass = new ArkClass_1.ArkClass(dummyMainFile.getFileSigID());
137
135
  dummyMainClass.setSignature(dummyMainClassSignature);
138
136
  dummyMainFile.addArkClass(dummyMainClass);
139
137
  }
140
138
  // step3: create dummy method
141
- this.dummyMain.setDeclaringArkClass(dummyMainClass);
142
139
  const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName((_a = this.dummyMethodName) !== null && _a !== void 0 ? _a : Const_1.DUMMY_METHOD);
143
- const methodSignature = new ArkSignature_1.MethodSignature(this.dummyMain.getDeclaringArkClass().getSignature(), methodSubSignature);
144
- this.dummyMain.setImplementationSignature(methodSignature);
140
+ const methodSignature = new ArkSignature_1.MethodSignature(dummyMainClass.getClassSigID(), methodSubSignature);
141
+ this.dummyMain = new ArkMethod_1.ArkMethod(dummyMainClass.getClassSigID(), methodSignature);
145
142
  this.dummyMain.setImplOriginFullPosition(new Position_1.FullPosition(0, 0, 0, 0));
146
143
  this.dummyMain.setIsGeneratedFlag(true);
147
144
  (0, ArkMethodBuilder_1.checkAndUpdateMethod)(this.dummyMain, dummyMainClass);
148
145
  dummyMainClass.addMethod(this.dummyMain);
149
- this.scene.addToMethodsMap(this.dummyMain);
150
146
  // step4: create instance local for each class
151
147
  for (const cls of this.entryClasses) {
152
148
  if (cls.isDefaultArkClass()) {
@@ -165,6 +161,7 @@ class DummyMainCreater {
165
161
  dummyCfg.setDeclaringMethod(this.dummyMain);
166
162
  this.createDummyMainCfg();
167
163
  this.addCfg2Stmt();
164
+ return this.dummyMain;
168
165
  }
169
166
  addStaticInit(firstBlock) {
170
167
  for (const method of this.scene.getStaticInitMethods()) {
@@ -382,7 +379,8 @@ class DummyMainCreater {
382
379
  }
383
380
  }
384
381
  getDummyMain() {
385
- return this.dummyMain;
382
+ var _a;
383
+ return (_a = this.dummyMain) !== null && _a !== void 0 ? _a : null;
386
384
  }
387
385
  getEntryMethodsFromComponents() {
388
386
  this.scene
@@ -437,100 +435,5 @@ class DummyMainCreater {
437
435
  }
438
436
  });
439
437
  }
440
- /**
441
- * Analysis the coverage of files, methods, stmts when starting from the dummy main method according to the given call graph.
442
- * @param callGraph - the call graph create within ArkAnalyzer
443
- * @param generated - whether to include the generated methods
444
- */
445
- analysisCoverage(callGraph, generated = true) {
446
- const analysis = new CoverageAnalysis(this.scene, this.dummyMain, callGraph, generated);
447
- return analysis.calculateCoverage();
448
- }
449
438
  }
450
439
  exports.DummyMainCreater = DummyMainCreater;
451
- class CoverageAnalysis {
452
- constructor(scene, entry, callGraph, generated = true) {
453
- this.visitedFiles = new Set();
454
- this.visitedMethods = new Set();
455
- this.visitedStmts = new Set();
456
- this.scene = scene;
457
- this.callGraph = callGraph;
458
- this.entry = entry;
459
- this.totalFiles = new Set(scene.getFiles());
460
- this.totalMethods = new Set();
461
- this.totalFiles.forEach(file => {
462
- file.getClasses().forEach(cls => {
463
- cls.getMethods(generated).forEach(method => {
464
- this.totalMethods.add(method);
465
- });
466
- });
467
- });
468
- // if entry method is dummy main, then it is also generated, but still need to include it
469
- this.totalMethods.add(entry);
470
- this.totalStmts = new Set();
471
- this.totalMethods.forEach(method => {
472
- var _a;
473
- (_a = method
474
- .getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts().forEach(stmt => {
475
- this.totalStmts.add(stmt);
476
- });
477
- });
478
- }
479
- addVisitedFile(file) {
480
- this.visitedFiles.add(file);
481
- }
482
- addVisitedMethod(method) {
483
- this.visitedMethods.add(method);
484
- }
485
- addVisitedStmt(stmt) {
486
- this.visitedStmts.add(stmt);
487
- }
488
- calculateCoverage() {
489
- this.goThroughMethod(this.entry);
490
- return {
491
- filesCoverage: this.visitedFiles.size / this.totalFiles.size,
492
- methodsCoverage: this.visitedMethods.size / this.totalMethods.size,
493
- stmtsCoverage: this.visitedStmts.size / this.totalStmts.size,
494
- totalFiles: this.totalFiles.size,
495
- totalMethods: this.totalMethods.size,
496
- totalStmts: this.totalStmts.size,
497
- visitedFiles: this.visitedFiles.size,
498
- visitedMethods: this.visitedMethods.size,
499
- visitedStmts: this.visitedStmts.size,
500
- };
501
- }
502
- /**
503
- * Scan all invoke stmts of the given method, and go through all callee methods of this given method recursively.
504
- * @param method
505
- * @private
506
- */
507
- goThroughMethod(method) {
508
- var _a;
509
- const file = method.getDeclaringArkFile();
510
- if (!this.totalFiles.has(file) || !this.totalMethods.has(method) || this.visitedMethods.has(method)) {
511
- return;
512
- }
513
- this.addVisitedMethod(method);
514
- this.addVisitedFile(file);
515
- const stmts = (_a = method.getCfg()) === null || _a === void 0 ? void 0 : _a.getStmts();
516
- if (!stmts) {
517
- return;
518
- }
519
- stmts.forEach(stmt => {
520
- this.addVisitedStmt(stmt);
521
- });
522
- const node = this.callGraph.getCallGraphNodeByMethod(method.getSignature());
523
- const outgoingEdges = node.getOutgoingEdges();
524
- if (!outgoingEdges) {
525
- return;
526
- }
527
- for (const outEdge of outgoingEdges) {
528
- const calleeSig = outEdge.getDstNode().getMethod();
529
- const callee = this.scene.getMethod(calleeSig);
530
- if (!callee) {
531
- continue;
532
- }
533
- this.goThroughMethod(callee);
534
- }
535
- }
536
- }
@@ -4,11 +4,31 @@ import { Local } from '../base/Local';
4
4
  import { AbstractExpr, AbstractInvokeExpr, AliasTypeExpr, ArkInstanceInvokeExpr, ArkStaticInvokeExpr } from '../base/Expr';
5
5
  import { Scene } from '../../Scene';
6
6
  import { ArkClass } from '../model/ArkClass';
7
- import { ClassSignature, FieldSignature, FileSignature, MethodSignature } from '../model/ArkSignature';
7
+ import { BaseSignature, ClassSignature, FileSignature, MethodSignature } from '../model/ArkSignature';
8
8
  import { AbstractFieldRef, AbstractRef, ArkInstanceFieldRef, ArkParameterRef } from '../base/Ref';
9
9
  import { Value } from '../base/Value';
10
10
  import { ArkFile } from '../model/ArkFile';
11
11
  import { KeyofTypeExpr, TypeQueryExpr } from '../base/TypeExpr';
12
+ export interface GetterFieldResolution {
13
+ kind: 'getter';
14
+ value: AbstractInvokeExpr;
15
+ }
16
+ export interface FormalFieldResolution {
17
+ kind: 'formal';
18
+ formalId: number | null;
19
+ staticFlag: boolean;
20
+ type: Type;
21
+ }
22
+ export interface ParamsFieldResolution {
23
+ kind: 'params';
24
+ fieldName: string;
25
+ declaringOrID: BaseSignature | number;
26
+ type: Type;
27
+ staticFlag: boolean;
28
+ namespaceDeclared: boolean;
29
+ }
30
+ export type FieldSigResolution = FormalFieldResolution | ParamsFieldResolution | null;
31
+ export type FieldPropertyResolution = GetterFieldResolution | FormalFieldResolution | ParamsFieldResolution | null;
12
32
  export declare class IRInference {
13
33
  static inferExportInfos(file: ArkFile): void;
14
34
  static inferImportInfos(file: ArkFile): void;
@@ -16,18 +36,39 @@ export declare class IRInference {
16
36
  static needInfer(fileSignature: FileSignature): boolean;
17
37
  static inferStaticInvokeExpr(expr: ArkStaticInvokeExpr, arkMethod: ArkMethod): AbstractInvokeExpr;
18
38
  static inferStaticInvokeExprByMethodName(methodName: string, arkMethod: ArkMethod, expr: AbstractInvokeExpr): AbstractInvokeExpr;
39
+ private static getNestedMethodInScopeChain;
19
40
  static inferInstanceInvokeExpr(expr: ArkInstanceInvokeExpr, arkMethod: ArkMethod): AbstractInvokeExpr;
20
41
  static inferFieldRef(ref: ArkInstanceFieldRef, arkMethod: ArkMethod): AbstractRef;
42
+ /**
43
+ * @internal 终态执行——formal 分支(graduateToFormal 快路径 / static 形态替换)与
44
+ * params 分支(static probe 转换 / 就地演进)的统一收敛。static params 转换前
45
+ * probe 字段空间:miss 时 params 携带值空间成员(ns 导出的 class/enum、字段式
46
+ * static 方法引用),无 formal 归宿——直接转换会走 clear+miss error 路由并
47
+ * 多占一个 slot;miss 落入 updateFieldSignature(就地演进,上下文保留)。
48
+ */
49
+ static applyFieldResolution(ref: AbstractFieldRef, res: FieldSigResolution): AbstractFieldRef;
50
+ /** params+static 分支的统一收敛(applyFieldResolution 与 updateRefSignature 共用)。 */
51
+ private static applyStaticParamsResolution;
21
52
  private static inferBase;
22
53
  static inferThisLocal(arkMethod: ArkMethod): Local | null;
23
54
  static inferArgs(expr: AbstractInvokeExpr, arkMethod: ArkMethod): void;
24
- static inferArg(expr: AbstractInvokeExpr, argType: Type, paramType: Type, scene: Scene, realTypes: Type[]): void;
55
+ static inferArg(expr: AbstractInvokeExpr, argType: Type, paramType: Type, scene: Scene, realTypes?: Type[]): Type[] | undefined;
25
56
  static inferRightWithSdkType(leftType: Type, rightType: Type, ackClass: ArkClass): void;
26
57
  static inferArgTypeWithSdk(sdkType: ClassType, scene: Scene, argType: Type): void;
27
58
  private static inferInvokeExpr;
28
59
  static inferInvokeExprWithArray(methodName: string, expr: AbstractInvokeExpr, baseType: ArrayType, scene: Scene): AbstractInvokeExpr | null;
29
60
  static inferInvokeExprWithFunction(methodName: string, expr: AbstractInvokeExpr, baseType: FunctionType, scene: Scene): AbstractInvokeExpr | null;
30
61
  static inferInvokeExprWithDeclaredClass(expr: AbstractInvokeExpr, baseType: ClassType, methodName: string, scene: Scene): AbstractInvokeExpr | null;
62
+ /** Whether any declaration of the method matches the given args precisely (arg-count window + type match). */
63
+ private static methodMatchesArgs;
64
+ /** Bind the matched method onto the invoke expr (signature + generics + static conversion). */
65
+ private static invokeMatchedMethod;
66
+ /**
67
+ * Constructor-call handling across candidate classes: the first candidate owning a
68
+ * real construct-signature / call / constructor method wins; when none does, the
69
+ * legacy stub signature (over the base type) is kept.
70
+ */
71
+ private static invokeConstructorOnClasses;
31
72
  private static inferSpecialMethod;
32
73
  private static changePtrInvokeExpr;
33
74
  private static getRealTypes;
@@ -35,10 +76,21 @@ export declare class IRInference {
35
76
  private static processForEach;
36
77
  static inferLocal(base: Local, arkMethod: ArkMethod): void;
37
78
  static inferInstanceMember<T extends U, U extends Value>(baseType: Type, value: T, arkMethod: ArkMethod, inferMember: (declareType: Type, value: T, arkMethod: ArkMethod) => U | null): U | null;
38
- static generateNewFieldSignature(ref: AbstractFieldRef, arkClass: ArkClass, baseType: Type): FieldSignature | null;
79
+ static generateNewFieldSignature(ref: AbstractFieldRef, arkClass: ArkClass, baseType: Type): FieldSigResolution;
39
80
  static updateRefSignature(baseType: Type, ref: AbstractFieldRef, arkMethod: ArkMethod): AbstractRef | null;
81
+ /** TupleType 前置:元组索引字段的类型直写('0'/'1' → 对应元素类型)。 */
82
+ private static updateTupleElementType;
40
83
  private static genFieldSignature;
41
84
  private static getFieldSignature;
85
+ /**
86
+ * 声明类型路径的字段类型 unclear(如 interface 无标注字段的声明类型路径)时的值类型精化:
87
+ * base local 的初始化 stmt(declaringStmt)右值类型是 clear ClassType(对象字面量匿名类等)
88
+ * 时,取值类型上同名字段的定义点类型回填。fieldSig 保持声明锚定不变,仅经精度栅栏单向
89
+ * 精化 formal canonical 的类型(unclear → clear,与 AbstractFieldRef.route 的栅栏同语义)。
90
+ * base 是全局变量的使用点 local(无方法内定义 stmt)时,经 findDeclaredLocal 桥接文件级
91
+ * def local(顶层 const 的初始化在 default 方法中)。
92
+ */
93
+ private static refineFieldTypeFromBaseInitializer;
42
94
  private static findPropertyFormChildrenClass;
43
95
  private static repairType;
44
96
  static inferAnonymousClass(anon: ArkClass | null, declaredSignature: ClassSignature, set?: Set<string>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}