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
@@ -17,24 +17,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.ArkSignatureBuilder = void 0;
18
18
  const ArkSignature_1 = require("../ArkSignature");
19
19
  const Type_1 = require("../../base/Type");
20
+ const EtsConst_1 = require("../../common/EtsConst");
20
21
  class ArkSignatureBuilder {
21
22
  static buildMethodSignatureFromClassNameAndMethodName(className, methodName, staticFlag = false) {
22
23
  const classSignature = this.buildClassSignatureFromClassName(className);
23
24
  const methodSubSignature = this.buildMethodSubSignatureFromMethodName(methodName, staticFlag);
25
+ // Object path: the stub class signature (unclear) is routed to the temp canonicalizer
26
+ // inside the constructor — no formal interning without a model.
24
27
  return new ArkSignature_1.MethodSignature(classSignature, methodSubSignature);
25
28
  }
26
29
  static buildMethodSignatureFromMethodName(methodName, staticFlag = false) {
27
30
  const methodSubSignature = this.buildMethodSubSignatureFromMethodName(methodName, staticFlag);
28
- return new ArkSignature_1.MethodSignature(ArkSignature_1.ClassSignature.DEFAULT, methodSubSignature);
31
+ return new ArkSignature_1.MethodSignature(0, methodSubSignature);
29
32
  }
30
33
  static buildMethodSubSignatureFromMethodName(methodName, staticFlag = false) {
31
34
  return new ArkSignature_1.MethodSubSignature(methodName, [], Type_1.UnknownType.getInstance(), staticFlag);
32
35
  }
33
36
  static buildClassSignatureFromClassName(className) {
34
- return new ArkSignature_1.ClassSignature(className, ArkSignature_1.FileSignature.DEFAULT);
37
+ // 白名单内的组件名走共享缓存;名单外(任意类名)保持每次 new 的现状。
38
+ if ((0, EtsConst_1.isEtsSystemComponent)(className) || this.CACHEABLE_COMPONENT_STUBS.has(className)) {
39
+ let cached = this.componentStubCache.get(className);
40
+ if (cached === undefined) {
41
+ cached = new ArkSignature_1.ClassSignature(className, 0);
42
+ this.componentStubCache.set(className, cached);
43
+ }
44
+ return cached;
45
+ }
46
+ return new ArkSignature_1.ClassSignature(className, 0);
47
+ }
48
+ /** @internal Registry dispose 同点清理(Scene.dispose/clear 调用)。 */
49
+ static clearComponentStubCache() {
50
+ this.componentStubCache.clear();
35
51
  }
36
52
  static buildFieldSignatureFromFieldName(fieldName, staticFlag = false) {
37
- return new ArkSignature_1.FieldSignature(fieldName, ArkSignature_1.ClassSignature.DEFAULT, Type_1.UnknownType.getInstance(), staticFlag);
53
+ return new ArkSignature_1.FieldSignature(fieldName, 0, Type_1.UnknownType.getInstance(), staticFlag);
38
54
  }
39
55
  }
40
56
  exports.ArkSignatureBuilder = ArkSignatureBuilder;
57
+ /**
58
+ * Stub 缓存白名单(组件名域):系统组件(isEtsSystemComponent 动态集合,SDK 构建期灌入全量)+ 组件常量(自定义组件折叠名 / If / Repeat)。
59
+ * 白名单外的名字(new 表达式类名、C++ 类型名等任意来源)不缓存——每次 new,行为不变。
60
+ */
61
+ ArkSignatureBuilder.CACHEABLE_COMPONENT_STUBS = new Set([EtsConst_1.COMPONENT_CUSTOMVIEW, EtsConst_1.COMPONENT_IF, EtsConst_1.COMPONENT_REPEAT]);
62
+ /** 白名单内同名 stub 共享实例。 */
63
+ ArkSignatureBuilder.componentStubCache = new Map();
@@ -52,6 +52,7 @@ export declare class BodyBuilder {
52
52
  private inferTypesDefineInOuter;
53
53
  private updateNestedMethodUsedInOuter;
54
54
  private updateNestedMethodWithClosures;
55
+ private syncChildrenOuterMethodSigID;
55
56
  private updateOuterMethodWithClosures;
56
57
  private getOriginalNestedMethodName;
57
58
  private updateGlobalInfoWithClosures;
@@ -1 +1 @@
1
- {"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAkB,eAAe,EAA8C,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EAAuD,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,WAAW;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,cAAc,CAA4B;gBAEtC,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU;IAKpH,KAAK,IAAI,OAAO,GAAG,IAAI;IAkBvB,aAAa,IAAI,UAAU;IAI3B,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS;IAIhD,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIjD,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAI/C,kBAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI;IAI1E;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;;;OAKG;IACI,sBAAsB,IAAI,IAAI;IAwDrC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,sCAAsC;IA4B9C,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,8BAA8B;IAmBtC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,6BAA6B;IAyCrC,OAAO,CAAC,8BAA8B;IAkBtC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,2BAA2B;IAwBnC,OAAO,CAAC,oCAAoC;IA+B5C,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qCAAqC;IA8B7C,OAAO,CAAC,2BAA2B;CA8CtC"}
1
+ {"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAkB,eAAe,EAA8C,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,EAAuD,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,WAAW;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,cAAc,CAA4B;gBAEtC,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU;IAKpH,KAAK,IAAI,OAAO,GAAG,IAAI;IAkBvB,aAAa,IAAI,UAAU;IAI3B,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS;IAIhD,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAIjD,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAI/C,kBAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI;IAI1E;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;;;OAKG;IACI,sBAAsB,IAAI,IAAI;IAwDrC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,sCAAsC;IA4B9C,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,8BAA8B;IAmBtC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,6BAA6B;IAyCrC,OAAO,CAAC,8BAA8B;IAkCtC,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,2BAA2B;IAwBnC,OAAO,CAAC,oCAAoC;IAiC5C,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qCAAqC;IA8B7C,OAAO,CAAC,2BAA2B;CA8CtC"}
@@ -21,6 +21,7 @@ const CfgBuilder_1 = require("../../graph/builder/CfgBuilder");
21
21
  const Local_1 = require("../../base/Local");
22
22
  const ArkMethodBuilder_1 = require("./ArkMethodBuilder");
23
23
  const Const_1 = require("../../common/Const");
24
+ const SignatureCanonicalizerRegistry_1 = require("../../common/SignatureCanonicalizerRegistry");
24
25
  const Ref_1 = require("../../base/Ref");
25
26
  const Stmt_1 = require("../../base/Stmt");
26
27
  const Type_1 = require("../../base/Type");
@@ -238,13 +239,9 @@ class BodyBuilder {
238
239
  }
239
240
  generateNestedMethodChains(outerMethod) {
240
241
  let candidateMethods = [];
241
- outerMethod
242
- .getDeclaringArkClass()
243
- .getMethods()
244
- .forEach(method => {
245
- if (method.getName().startsWith(Const_1.NAME_PREFIX) && method.getName().endsWith(`${Const_1.NAME_DELIMITER}${outerMethod.getName()}`)) {
246
- candidateMethods.push(method);
247
- }
242
+ outerMethod.getDeclaringArkClass().forEachNestedMethodOf(outerMethod.getName(), method => {
243
+ candidateMethods.push(method);
244
+ return true;
248
245
  });
249
246
  const childrenChains = this.getNestedChildrenChains(outerMethod, candidateMethods);
250
247
  if (childrenChains.length > 0) {
@@ -345,7 +342,7 @@ class BodyBuilder {
345
342
  const outerGlobals = (_c = outerMethod.getBody()) === null || _c === void 0 ? void 0 : _c.getUsedGlobals();
346
343
  const callGlobal = (_d = outerGlobals === null || outerGlobals === void 0 ? void 0 : outerGlobals.get(nestedMethodName)) !== null && _d !== void 0 ? _d : outerGlobals === null || outerGlobals === void 0 ? void 0 : outerGlobals.get(originalMethodName);
347
344
  if (callGlobal !== undefined && callGlobal instanceof Ref_1.GlobalRef && callGlobal.getRef() === null) {
348
- const fieldSignature = new ArkSignature_1.FieldSignature(nestedMethodName, nestedMethod.getDeclaringArkClass().getSignature(), new Type_1.FunctionType(nestedMethod.getSignature()));
345
+ const fieldSignature = new ArkSignature_1.FieldSignature(nestedMethodName, nestedMethod.getDeclaringArkClass().getClassSigID(), new Type_1.FunctionType(nestedMethod.getSignature()));
349
346
  callGlobal.setRef(new Ref_1.ArkStaticFieldRef(fieldSignature));
350
347
  }
351
348
  const childrenChains = nestedChain.children;
@@ -360,16 +357,43 @@ class BodyBuilder {
360
357
  if (!(closuresLocal.getType() instanceof Type_1.LexicalEnvType)) {
361
358
  return;
362
359
  }
360
+ // A declare entry can be value-equal to the implementation signature (they then share
361
+ // one canonical instance). Injecting it here AND in the impl path below would unshift
362
+ // the closure param twice onto the same shared params array — skip it and let the impl
363
+ // path handle the shared instance exactly once.
364
+ const implSigID = nestedMethod.getMethodSigID();
365
+ const canonicalizer = SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance().methodSigCanonicalizer;
363
366
  const declareSignatures = nestedMethod.getDeclareSignatures();
364
367
  declareSignatures === null || declareSignatures === void 0 ? void 0 : declareSignatures.forEach((signature, index) => {
368
+ if (implSigID !== undefined && canonicalizer.getExistingId(signature) === implSigID) {
369
+ return;
370
+ }
365
371
  nestedMethod.setDeclareSignatureWithIndex(this.createNewSignatureWithClosures(closuresLocal, signature), index);
366
372
  });
373
+ const oldSigID = nestedMethod.getMethodSigID();
367
374
  const implementSignature = nestedMethod.getImplementationSignature();
368
375
  if (implementSignature !== null) {
369
376
  nestedMethod.setImplementationSignature(this.createNewSignatureWithClosures(closuresLocal, implementSignature));
377
+ // Rebuilding the signature interns a new MethodSigID. Direct children reference the
378
+ // outer method by its (now stale) SigID, so re-point them to the new one.
379
+ const newSigID = nestedMethod.getMethodSigID();
380
+ if (newSigID !== oldSigID) {
381
+ this.syncChildrenOuterMethodSigID(nestedMethod, oldSigID, newSigID);
382
+ }
370
383
  }
371
384
  this.addClosureParamsAssignStmts(closuresLocal, nestedMethod);
372
385
  }
386
+ syncChildrenOuterMethodSigID(parent, oldSigID, newSigID) {
387
+ if (oldSigID === undefined || oldSigID <= 0 || newSigID === undefined) {
388
+ return;
389
+ }
390
+ parent.getDeclaringArkClass().forEachMethod(method => {
391
+ if (method !== parent && method.getOuterMethodSigID() === oldSigID) {
392
+ method.setOuterMethodSigID(newSigID);
393
+ }
394
+ return true;
395
+ });
396
+ }
373
397
  updateOuterMethodWithClosures(outerMethod, nestedMethod, closuresLocal) {
374
398
  var _a, _b, _c, _d, _e, _f;
375
399
  const nestedMethodName = nestedMethod.getName();
@@ -419,7 +443,7 @@ class BodyBuilder {
419
443
  if (!(lexicalEnv instanceof Type_1.LexicalEnvType)) {
420
444
  return;
421
445
  }
422
- const fieldSignature = new ArkSignature_1.FieldSignature(methodSignature.getMethodSubSignature().getMethodName(), methodSignature.getDeclaringClassSignature(), new Type_1.ClosureType(lexicalEnv, methodSignature));
446
+ const fieldSignature = new ArkSignature_1.FieldSignature(methodSignature.getMethodSubSignature().getMethodName(), methodSignature.getDeclaringClassSigID(), new Type_1.ClosureType(lexicalEnv, methodSignature));
423
447
  globalRef.setRef(new Ref_1.ArkStaticFieldRef(fieldSignature));
424
448
  this.updateAbstractInvokeExprWithClosures(globalRef, outerMethod.getSignature(), nestedMethod.getSignature(), closuresLocal);
425
449
  }
@@ -445,7 +469,9 @@ class BodyBuilder {
445
469
  // 更新所有stmt中调用内层函数处的AbstractInvokeExpr中的函数签名和实参args,加入闭包参数
446
470
  // 更新所有stmt中定义的函数指针的usedStmt中的函数签名和实参args,加入闭包参数
447
471
  updateAbstractInvokeExprWithClosures(value, outerMethodSignature, nestedMethodSignature, closuresLocal) {
448
- for (const usedStmt of value.getUsedStmts()) {
472
+ const usedStmts = value.getUsedStmts();
473
+ for (let i = 0; i < usedStmts.length; i++) {
474
+ const usedStmt = usedStmts[i];
449
475
  if (usedStmt instanceof Stmt_1.ArkInvokeStmt) {
450
476
  this.updateSignatureAndArgsInArkInvokeExpr(usedStmt, nestedMethodSignature, closuresLocal);
451
477
  }
@@ -479,7 +505,7 @@ class BodyBuilder {
479
505
  closuresParam.setType(closuresLocal.getType());
480
506
  params.unshift(closuresParam);
481
507
  let newSubSignature = new ArkSignature_1.MethodSubSignature(oldSubSignature.getMethodName(), params, oldSubSignature.getReturnType(), oldSubSignature.isStatic());
482
- return new ArkSignature_1.MethodSignature(oldSignature.getDeclaringClassSignature(), newSubSignature);
508
+ return new ArkSignature_1.MethodSignature(oldSignature.getDeclaringClassSigID(), newSubSignature);
483
509
  }
484
510
  updateSignatureAndArgsInArkInvokeExpr(stmt, methodSignature, closuresLocal) {
485
511
  let expr;
@@ -11,11 +11,21 @@ export declare function handlePropertyAccessExpression(node: ts.PropertyAccessEx
11
11
  export declare function buildDecorators(node: ts.Node, sourceFile: ts.SourceFile): Set<Decorator>;
12
12
  export declare function parseDecorator(node: ts.Decorator): Decorator | undefined;
13
13
  export declare function buildModifiers(node: ts.Node): number;
14
- export declare function buildHeritageClauses(heritageClauses?: ts.NodeArray<HeritageClause>): Map<string, string>;
14
+ export declare function buildHeritageClauses(heritageClauses: ts.NodeArray<HeritageClause> | undefined, sourceFile: ts.SourceFile): Map<string, string>;
15
15
  export declare function buildTypeParameters(typeParameters: ts.NodeArray<TypeParameterDeclaration>, sourceFile: ts.SourceFile, arkInstance: ArkMethod | ArkClass): GenericType[];
16
16
  export declare function buildParameters(params: ts.NodeArray<ParameterDeclaration>, arkInstance: ArkMethod | ArkField, sourceFile: ts.SourceFile, paramsPosition: Map<string, FullPosition>): MethodParameter[];
17
17
  export declare function buildGenericType(type: Type, arkInstance: ArkMethod | ArkField | AliasType): Type;
18
18
  export declare function buildReturnType(node: TypeNode, sourceFile: ts.SourceFile, method: ArkMethod): Type;
19
19
  export declare function tsNode2Type(typeNode: ts.TypeNode | ts.TypeParameterDeclaration, sourceFile: ts.SourceFile, arkInstance: ArkMethod | ArkClass | ArkField): Type;
20
20
  export declare function buildTypeFromPreStr(preStr: string): Type;
21
+ /**
22
+ * 构建期同名载体统一:声明类型为 UnclearReferenceType(未解析标注,类别未知)且初始化器类型为
23
+ * 同名 ClassType(如 `new SharedArr()` 的 stub——new 语义保证类别是类)时,声明侧统一到初始化器
24
+ * 的 ClassType 实例。仅限纯名字标注(无泛型实参)——带实参的标注(如 `Set<string>`)有完整的
25
+ * 推断期名字解析路径(实参树全链解析),构建期统一反而引入实参形态中间态。统一后与 new 表达式/
26
+ * 构造器 invoke 共享同一 stub 的 temp class 行,目标类后续注册时可一次毕业全链收敛。ArrayType
27
+ * 按 dimension 一致做元素级递归;其余组合一律声明优先(零行为变化)。统一产物仍是 unclear
28
+ * (stub declaring 为 %unk),不影响后续推断路径。
29
+ */
30
+ export declare function unifyDeclaredTypeWithInitializer(declared: Type, initializer: Type): Type;
21
31
  //# sourceMappingURL=builderUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAA4D,eAAe,EAAiC,MAAM,oBAAoB,CAAC;AAsB9I,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAuBxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAUpD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxG;AAED,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAClC,WAAW,EAAE,CAyBf;AA4ED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAC1C,WAAW,EAAE,SAAS,GAAG,QAAQ,EACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAC1C,eAAe,EAAE,CAkDnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAsDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAQlG;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EACnD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAC7C,IAAI,CA8FN;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDxD"}
1
+ {"version":3,"file":"builderUtils.d.ts","sourceRoot":"","sources":["../../../../src/core/model/builder/builderUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EACH,SAAS,EAIT,WAAW,EAGX,IAAI,EAIP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAA4D,eAAe,EAAiC,MAAM,oBAAoB,CAAC;AAsB9I,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAUlE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAYxF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAUxF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAuBxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAapD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB9I;AAED,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC,EACtD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAClC,WAAW,EAAE,CAyBf;AA4ED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAC1C,WAAW,EAAE,SAAS,GAAG,QAAQ,EACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAC1C,eAAe,EAAE,CAkDnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAsDhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAWlG;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EACnD,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAC7C,IAAI,CAiCN;AAiFD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDxD;AA8DD;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,CAUxF"}
@@ -40,7 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.buildTypeFromPreStr = exports.tsNode2Type = exports.buildReturnType = exports.buildGenericType = exports.buildParameters = exports.buildTypeParameters = exports.buildHeritageClauses = exports.buildModifiers = exports.parseDecorator = exports.buildDecorators = exports.handlePropertyAccessExpression = exports.handleQualifiedName = void 0;
43
+ exports.unifyDeclaredTypeWithInitializer = exports.buildTypeFromPreStr = exports.tsNode2Type = exports.buildReturnType = exports.buildGenericType = exports.buildParameters = exports.buildTypeParameters = exports.buildHeritageClauses = exports.buildModifiers = exports.parseDecorator = exports.buildDecorators = exports.handlePropertyAccessExpression = exports.handleQualifiedName = void 0;
44
44
  const ohos_typescript_1 = __importDefault(require("ohos-typescript"));
45
45
  const Type_1 = require("../../base/Type");
46
46
  const TypeInference_1 = require("../../common/TypeInference");
@@ -93,13 +93,13 @@ function handlePropertyAccessExpression(node) {
93
93
  exports.handlePropertyAccessExpression = handlePropertyAccessExpression;
94
94
  function buildDecorators(node, sourceFile) {
95
95
  let decorators = new Set();
96
- ohos_typescript_1.default.getAllDecorators(node).forEach(decoratorNode => {
96
+ for (const decoratorNode of ohos_typescript_1.default.getAllDecorators(node)) {
97
97
  let decorator = parseDecorator(decoratorNode);
98
98
  if (decorator) {
99
99
  decorator.setContent((0, StringUtils_1.cloneText)(decoratorNode.expression.getText(sourceFile)));
100
100
  decorators.add(decorator);
101
101
  }
102
- });
102
+ }
103
103
  return decorators;
104
104
  }
105
105
  exports.buildDecorators = buildDecorators;
@@ -125,23 +125,25 @@ function parseDecorator(node) {
125
125
  }
126
126
  exports.parseDecorator = parseDecorator;
127
127
  function buildModifiers(node) {
128
- var _a;
129
128
  let modifiers = 0;
130
129
  if (ohos_typescript_1.default.canHaveModifiers(node)) {
131
- (_a = ohos_typescript_1.default.getModifiers(node)) === null || _a === void 0 ? void 0 : _a.forEach(modifier => {
132
- modifiers |= (0, ArkBaseModel_1.modifierKind2Enum)(modifier.kind);
133
- });
130
+ const nodeModifiers = ohos_typescript_1.default.getModifiers(node);
131
+ if (nodeModifiers) {
132
+ for (const modifier of nodeModifiers) {
133
+ modifiers |= (0, ArkBaseModel_1.modifierKind2Enum)(modifier.kind);
134
+ }
135
+ }
134
136
  }
135
137
  return modifiers;
136
138
  }
137
139
  exports.buildModifiers = buildModifiers;
138
- function buildHeritageClauses(heritageClauses) {
140
+ function buildHeritageClauses(heritageClauses, sourceFile) {
139
141
  let heritageClausesMap = new Map();
140
142
  heritageClauses === null || heritageClauses === void 0 ? void 0 : heritageClauses.forEach(heritageClause => {
141
143
  heritageClause.types.forEach(type => {
142
144
  let heritageClauseName = '';
143
145
  if (type.typeArguments) {
144
- heritageClauseName = (0, StringUtils_1.cloneText)(type.getText());
146
+ heritageClauseName = (0, StringUtils_1.cloneText)(type.getText(sourceFile));
145
147
  }
146
148
  else if (ohos_typescript_1.default.isIdentifier(type.expression)) {
147
149
  heritageClauseName = (0, StringUtils_1.cloneText)(type.expression.text);
@@ -150,7 +152,7 @@ function buildHeritageClauses(heritageClauses) {
150
152
  heritageClauseName = handlePropertyAccessExpression(type.expression);
151
153
  }
152
154
  else {
153
- heritageClauseName = (0, StringUtils_1.cloneText)(type.getText());
155
+ heritageClauseName = (0, StringUtils_1.cloneText)(type.getText(sourceFile));
154
156
  }
155
157
  heritageClausesMap.set(heritageClauseName, ohos_typescript_1.default.SyntaxKind[heritageClause.token]);
156
158
  });
@@ -377,88 +379,22 @@ function buildReturnType(node, sourceFile, method) {
377
379
  exports.buildReturnType = buildReturnType;
378
380
  function tsNode2Type(typeNode, sourceFile, arkInstance) {
379
381
  if (ohos_typescript_1.default.isTypeReferenceNode(typeNode)) {
380
- const genericTypes = [];
381
- if (typeNode.typeArguments) {
382
- for (const typeArgument of typeNode.typeArguments) {
383
- genericTypes.push(tsNode2Type(typeArgument, sourceFile, arkInstance));
384
- }
385
- }
386
- let referenceNodeName = typeNode.typeName;
387
- if (ohos_typescript_1.default.isQualifiedName(referenceNodeName)) {
388
- let parameterTypeStr = handleQualifiedName(referenceNodeName);
389
- return new Type_1.UnclearReferenceType(parameterTypeStr, genericTypes);
390
- }
391
- else {
392
- let parameterTypeStr = (0, StringUtils_1.cloneText)(referenceNodeName.text);
393
- if (parameterTypeStr === Builtin_1.Builtin.OBJECT) {
394
- return Builtin_1.Builtin.OBJECT_CLASS_TYPE;
395
- }
396
- return new Type_1.UnclearReferenceType(parameterTypeStr, genericTypes);
397
- }
382
+ return buildTypeFromTypeReference(typeNode, sourceFile, arkInstance);
398
383
  }
399
384
  else if (ohos_typescript_1.default.isUnionTypeNode(typeNode) || ohos_typescript_1.default.isIntersectionTypeNode(typeNode)) {
400
- let multipleTypePara = [];
401
- typeNode.types.forEach(tmpType => {
402
- multipleTypePara.push(tsNode2Type(tmpType, sourceFile, arkInstance));
403
- });
404
- if (ohos_typescript_1.default.isUnionTypeNode(typeNode)) {
405
- return new Type_1.UnionType(multipleTypePara);
406
- }
407
- else {
408
- return new Type_1.IntersectionType(multipleTypePara);
409
- }
385
+ return buildTypeFromUnionOrIntersection(typeNode, sourceFile, arkInstance);
410
386
  }
411
387
  else if (ohos_typescript_1.default.isLiteralTypeNode(typeNode)) {
412
388
  return ArkValueTransformer_1.ArkValueTransformer.resolveLiteralTypeNode(typeNode, sourceFile);
413
389
  }
414
390
  else if (ohos_typescript_1.default.isTypeLiteralNode(typeNode)) {
415
- let cls = new ArkClass_1.ArkClass();
416
- let declaringClass;
417
- if (arkInstance instanceof ArkMethod_1.ArkMethod) {
418
- declaringClass = arkInstance.getDeclaringArkClass();
419
- }
420
- else if (arkInstance instanceof ArkField_1.ArkField) {
421
- declaringClass = arkInstance.getDeclaringArkClass();
422
- }
423
- else {
424
- declaringClass = arkInstance;
425
- }
426
- if (declaringClass.getDeclaringArkNamespace()) {
427
- cls.setDeclaringArkNamespace(declaringClass.getDeclaringArkNamespace());
428
- cls.setDeclaringArkFile(declaringClass.getDeclaringArkFile());
429
- }
430
- else {
431
- cls.setDeclaringArkFile(declaringClass.getDeclaringArkFile());
432
- }
433
- (0, ArkClassBuilder_1.buildNormalArkClassFromArkMethod)(typeNode, cls, sourceFile);
434
- return new Type_1.ClassType(cls.getSignature());
391
+ return buildTypeFromTypeLiteral(typeNode, sourceFile, arkInstance);
435
392
  }
436
393
  else if (ohos_typescript_1.default.isFunctionTypeNode(typeNode)) {
437
- let mtd = new ArkMethod_1.ArkMethod();
438
- let cls;
439
- if (arkInstance instanceof ArkMethod_1.ArkMethod) {
440
- cls = arkInstance.getDeclaringArkClass();
441
- }
442
- else if (arkInstance instanceof ArkClass_1.ArkClass) {
443
- cls = arkInstance;
444
- }
445
- else {
446
- cls = arkInstance.getDeclaringArkClass();
447
- }
448
- (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(typeNode, cls, mtd, sourceFile);
449
- return new Type_1.FunctionType(mtd.getSignature());
394
+ return buildTypeFromFunctionType(typeNode, sourceFile, arkInstance);
450
395
  }
451
396
  else if (ohos_typescript_1.default.isTypeParameterDeclaration(typeNode)) {
452
- const name = (0, StringUtils_1.cloneText)(typeNode.name.text);
453
- let defaultType;
454
- if (typeNode.default) {
455
- defaultType = tsNode2Type(typeNode.default, sourceFile, arkInstance);
456
- }
457
- let constraint;
458
- if (typeNode.constraint) {
459
- constraint = tsNode2Type(typeNode.constraint, sourceFile, arkInstance);
460
- }
461
- return new Type_1.GenericType(name, defaultType, constraint);
397
+ return buildTypeFromTypeParameter(typeNode, sourceFile, arkInstance);
462
398
  }
463
399
  else if (ohos_typescript_1.default.isTupleTypeNode(typeNode)) {
464
400
  const types = [];
@@ -488,6 +424,81 @@ function tsNode2Type(typeNode, sourceFile, arkInstance) {
488
424
  }
489
425
  }
490
426
  exports.tsNode2Type = tsNode2Type;
427
+ function buildTypeFromTypeReference(typeNode, sourceFile, arkInstance) {
428
+ const genericTypes = [];
429
+ if (typeNode.typeArguments) {
430
+ for (const typeArgument of typeNode.typeArguments) {
431
+ genericTypes.push(tsNode2Type(typeArgument, sourceFile, arkInstance));
432
+ }
433
+ }
434
+ let referenceNodeName = typeNode.typeName;
435
+ if (ohos_typescript_1.default.isQualifiedName(referenceNodeName)) {
436
+ let parameterTypeStr = handleQualifiedName(referenceNodeName);
437
+ return new Type_1.UnclearReferenceType(parameterTypeStr, genericTypes);
438
+ }
439
+ else {
440
+ let parameterTypeStr = (0, StringUtils_1.cloneText)(referenceNodeName.text);
441
+ if (parameterTypeStr === Builtin_1.Builtin.OBJECT) {
442
+ return Builtin_1.Builtin.OBJECT_CLASS_TYPE;
443
+ }
444
+ return new Type_1.UnclearReferenceType(parameterTypeStr, genericTypes);
445
+ }
446
+ }
447
+ function buildTypeFromUnionOrIntersection(typeNode, sourceFile, arkInstance) {
448
+ let multipleTypePara = [];
449
+ typeNode.types.forEach(tmpType => {
450
+ multipleTypePara.push(tsNode2Type(tmpType, sourceFile, arkInstance));
451
+ });
452
+ if (ohos_typescript_1.default.isUnionTypeNode(typeNode)) {
453
+ return new Type_1.UnionType(multipleTypePara);
454
+ }
455
+ else {
456
+ return new Type_1.IntersectionType(multipleTypePara);
457
+ }
458
+ }
459
+ function buildTypeFromTypeLiteral(typeNode, sourceFile, arkInstance) {
460
+ var _a;
461
+ let declaringClass;
462
+ if (arkInstance instanceof ArkMethod_1.ArkMethod) {
463
+ declaringClass = arkInstance.getDeclaringArkClass();
464
+ }
465
+ else if (arkInstance instanceof ArkField_1.ArkField) {
466
+ declaringClass = arkInstance.getDeclaringArkClass();
467
+ }
468
+ else {
469
+ declaringClass = arkInstance;
470
+ }
471
+ let cls = new ArkClass_1.ArkClass(declaringClass.getDeclaringFileID(), (_a = declaringClass.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getNamespaceSigID());
472
+ (0, ArkClassBuilder_1.buildNormalArkClassFromArkMethod)(typeNode, cls, sourceFile);
473
+ return new Type_1.ClassType(cls.getSignature());
474
+ }
475
+ function buildTypeFromFunctionType(typeNode, sourceFile, arkInstance) {
476
+ let cls;
477
+ if (arkInstance instanceof ArkMethod_1.ArkMethod) {
478
+ cls = arkInstance.getDeclaringArkClass();
479
+ }
480
+ else if (arkInstance instanceof ArkClass_1.ArkClass) {
481
+ cls = arkInstance;
482
+ }
483
+ else {
484
+ cls = arkInstance.getDeclaringArkClass();
485
+ }
486
+ let mtd = new ArkMethod_1.ArkMethod(cls.getClassSigID());
487
+ (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(typeNode, cls, mtd, sourceFile);
488
+ return new Type_1.FunctionType(mtd.getSignature());
489
+ }
490
+ function buildTypeFromTypeParameter(typeNode, sourceFile, arkInstance) {
491
+ const name = (0, StringUtils_1.cloneText)(typeNode.name.text);
492
+ let defaultType;
493
+ if (typeNode.default) {
494
+ defaultType = tsNode2Type(typeNode.default, sourceFile, arkInstance);
495
+ }
496
+ let constraint;
497
+ if (typeNode.constraint) {
498
+ constraint = tsNode2Type(typeNode.constraint, sourceFile, arkInstance);
499
+ }
500
+ return new Type_1.GenericType(name, defaultType, constraint);
501
+ }
491
502
  function buildTypeFromPreStr(preStr) {
492
503
  let postStr = '';
493
504
  switch (preStr) {
@@ -564,21 +575,23 @@ function buildTypeFromTypeQuery(typeQueryNode, sourceFile, arkInstance) {
564
575
  if (ohos_typescript_1.default.isQualifiedName(exprNameNode)) {
565
576
  if ((0, StringUtils_1.cloneText)(exprNameNode.left.getText(sourceFile)) === TSConst_1.THIS_NAME) {
566
577
  const fieldName = (0, StringUtils_1.cloneText)(exprNameNode.right.getText(sourceFile));
578
+ let baseLocal;
579
+ let fieldSignature;
567
580
  if (arkInstance instanceof ArkMethod_1.ArkMethod) {
568
- const fieldSignature = (_b = (_a = arkInstance.getDeclaringArkClass().getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature()) !== null && _b !== void 0 ? _b : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
569
- const baseLocal = (_d = (_c = arkInstance.getBody()) === null || _c === void 0 ? void 0 : _c.getLocals().get(TSConst_1.THIS_NAME)) !== null && _d !== void 0 ? _d : new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getDeclaringArkClass().getSignature(), arkInstance.getDeclaringArkClass().getGenericsTypes()));
570
- opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
581
+ const declaringClass = arkInstance.getDeclaringArkClass();
582
+ fieldSignature = (_b = (_a = declaringClass.getFieldWithName(fieldName)) === null || _a === void 0 ? void 0 : _a.getSignature()) !== null && _b !== void 0 ? _b : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
583
+ baseLocal = (_d = (_c = arkInstance.getBody()) === null || _c === void 0 ? void 0 : _c.getLocals().get(TSConst_1.THIS_NAME)) !== null && _d !== void 0 ? _d : new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(declaringClass.getSignature(), declaringClass.getGenericsTypes()));
571
584
  }
572
585
  else if (arkInstance instanceof ArkClass_1.ArkClass) {
573
- const fieldSignature = (_f = (_e = arkInstance.getFieldWithName(fieldName)) === null || _e === void 0 ? void 0 : _e.getSignature()) !== null && _f !== void 0 ? _f : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
574
- const baseLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getSignature(), arkInstance.getGenericsTypes()));
575
- opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
586
+ fieldSignature = (_f = (_e = arkInstance.getFieldWithName(fieldName)) === null || _e === void 0 ? void 0 : _e.getSignature()) !== null && _f !== void 0 ? _f : ArkSignatureBuilder_1.ArkSignatureBuilder.buildFieldSignatureFromFieldName(fieldName);
587
+ baseLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getSignature(), arkInstance.getGenericsTypes()));
576
588
  }
577
589
  else {
578
- const fieldSignature = arkInstance.getSignature();
579
- const baseLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkInstance.getDeclaringArkClass().getSignature(), arkInstance.getDeclaringArkClass().getGenericsTypes()));
580
- opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
590
+ fieldSignature = arkInstance.getSignature();
591
+ const declaringClass = arkInstance.getDeclaringArkClass();
592
+ baseLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(declaringClass.getSignature(), declaringClass.getGenericsTypes()));
581
593
  }
594
+ opValue = new Ref_1.ArkInstanceFieldRef(baseLocal, fieldSignature);
582
595
  }
583
596
  else {
584
597
  const exprName = (0, StringUtils_1.cloneText)(exprNameNode.getText(sourceFile));
@@ -597,3 +610,24 @@ function buildTypeFromTypeQuery(typeQueryNode, sourceFile, arkInstance) {
597
610
  }
598
611
  return expr;
599
612
  }
613
+ /**
614
+ * 构建期同名载体统一:声明类型为 UnclearReferenceType(未解析标注,类别未知)且初始化器类型为
615
+ * 同名 ClassType(如 `new SharedArr()` 的 stub——new 语义保证类别是类)时,声明侧统一到初始化器
616
+ * 的 ClassType 实例。仅限纯名字标注(无泛型实参)——带实参的标注(如 `Set<string>`)有完整的
617
+ * 推断期名字解析路径(实参树全链解析),构建期统一反而引入实参形态中间态。统一后与 new 表达式/
618
+ * 构造器 invoke 共享同一 stub 的 temp class 行,目标类后续注册时可一次毕业全链收敛。ArrayType
619
+ * 按 dimension 一致做元素级递归;其余组合一律声明优先(零行为变化)。统一产物仍是 unclear
620
+ * (stub declaring 为 %unk),不影响后续推断路径。
621
+ */
622
+ function unifyDeclaredTypeWithInitializer(declared, initializer) {
623
+ if (declared instanceof Type_1.ArrayType && initializer instanceof Type_1.ArrayType && declared.getDimension() === initializer.getDimension()) {
624
+ const unified = unifyDeclaredTypeWithInitializer(declared.getBaseType(), initializer.getBaseType());
625
+ return unified !== declared.getBaseType() ? new Type_1.ArrayType(unified, declared.getDimension()) : declared;
626
+ }
627
+ if (initializer instanceof Type_1.ClassType && declared instanceof Type_1.UnclearReferenceType &&
628
+ declared.getGenericTypes().length === 0 && initializer.getClassSignature().getClassName() === declared.getName()) {
629
+ return initializer;
630
+ }
631
+ return declared;
632
+ }
633
+ exports.unifyDeclaredTypeWithInitializer = unifyDeclaredTypeWithInitializer;
@@ -1,5 +1,5 @@
1
1
  import { Language } from '../core/model/ArkFile';
2
- import { ModuleScene, Scene } from '../Scene';
2
+ import { Scene } from '../Scene';
3
3
  import { ArkFile } from '../core/model/ArkFile';
4
4
  import { ArkModule } from '../core/model/ArkModule';
5
5
  import { ModuleDepthLevel } from './common/ModuleDepth';
@@ -17,10 +17,6 @@ export interface FrontendParseResult {
17
17
  * vs the C++ builder.
18
18
  */
19
19
  export declare class FrontendBuilder {
20
- private static partitionFilePaths;
21
- private static collectFailedFilePaths;
22
- static buildFilesIntoArkFiles(scene: Scene, filePaths: string[]): void;
23
- static buildModuleFilesIntoArkFiles(moduleScene: ModuleScene, filePaths: string[]): void;
24
20
  /**
25
21
  * Builds a single project file into a pre-allocated {@link ArkFile} (the former `if (CXX) … else …` in `Scene`).
26
22
  */
@@ -94,12 +90,20 @@ export declare class FrontendBuilder {
94
90
  * context.
95
91
  */
96
92
  private static freeMethodBodyBuilder;
93
+ /**
94
+ * Build the body of every class's default method (%dflt) in the file and free its builder.
95
+ * %dflt methods hold the file-level (or namespace-level) top-level statements and their
96
+ * builder is mounted on a node that a re-parse cannot address by position (the file or
97
+ * namespace node itself), so they are built while the signature round's AST is still mounted.
98
+ * All other method builders are untouched.
99
+ */
100
+ static buildDefaultMethodBodies(arkFile: ArkFile): void;
97
101
  /**
98
102
  * Release the BodyBuilders mounted during signature building so the ArkFile retains only
99
103
  * signatures (no ArkBody/CFG) and does not retain AST/build context in memory. Mirrors the
100
104
  * release pattern in {@link Scene.parseAndRegisterSdkFile}.
101
105
  */
102
- private static freeBodyBuildersInFile;
106
+ static freeBodyBuildersInFile(arkFile: ArkFile): void;
103
107
  /**
104
108
  * Build method bodies (ArkBody/CFG/Stmt/Expr) for all ArkFiles in the given module, then
105
109
  * run default-constructor post-processing. This is the module-scoped equivalent of
@@ -1 +1 @@
1
- {"version":3,"file":"FrontendBuilder.d.ts","sourceRoot":"","sources":["../../src/frontend/FrontendBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAmB,MAAM,UAAU,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAOpD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,sBAAsB,CAAC;AAQ/E,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC,OAAO,CAAC,MAAM,CAAC,sBAAsB;WAOvB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;WAW/D,4BAA4B,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAe/F;;OAEG;WACW,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAQjG;;;;;;;;;;;OAWG;WACW,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAYrG;;;;;;;;;;;;OAYG;WACW,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,EAAE;IA+BhF;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC;;OAEG;WACW,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQtE;;;;;;;;;;;;;;;;;;;;;OAqBG;WACW,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAW5H;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IASpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;WACW,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IA8B5D;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAc5C"}
1
+ {"version":3,"file":"FrontendBuilder.d.ts","sourceRoot":"","sources":["../../src/frontend/FrontendBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAOpD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,sBAAsB,CAAC;AAQ/E,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,qBAAa,eAAe;IACxB;;OAEG;WACW,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAQjG;;;;;;;;;;;OAWG;WACW,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAYrG;;;;;;;;;;;;OAYG;WACW,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,EAAE;IA+BhF;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC;;OAEG;WACW,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQtE;;;;;;;;;;;;;;;;;;;;;OAqBG;WACW,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAW5H;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IASpC;;;;;;OAMG;WACW,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAW9D;;;;OAIG;WACW,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM5D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;WACW,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IA8B5D;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAc5C"}