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
@@ -73,15 +73,12 @@ function buildNormalArkClassFromArkMethod(clsNode, cls, sourceFile, declaring) {
73
73
  }
74
74
  exports.buildNormalArkClassFromArkMethod = buildNormalArkClassFromArkMethod;
75
75
  function buildNormalArkClassFromArkFile(clsNode, arkFile, cls, sourceFile, declaring) {
76
- cls.setDeclaringArkFile(arkFile);
77
76
  cls.setOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(clsNode, sourceFile));
78
77
  buildNormalArkClass(clsNode, cls, sourceFile, declaring);
79
78
  arkFile.addArkClass(cls);
80
79
  }
81
80
  exports.buildNormalArkClassFromArkFile = buildNormalArkClassFromArkFile;
82
81
  function buildNormalArkClassFromArkNamespace(clsNode, arkNamespace, cls, sourceFile, declaring) {
83
- cls.setDeclaringArkNamespace(arkNamespace);
84
- cls.setDeclaringArkFile(arkNamespace.getDeclaringArkFile());
85
82
  cls.setOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(clsNode, sourceFile));
86
83
  buildNormalArkClass(clsNode, cls, sourceFile, declaring);
87
84
  arkNamespace.addArkClass(cls);
@@ -115,9 +112,8 @@ function buildNormalArkClass(clsNode, cls, sourceFile, declaring) {
115
112
  }
116
113
  exports.buildNormalArkClass = buildNormalArkClass;
117
114
  function buildUnion2ArkClass(clsNode, cls, sourceFile, declaring) {
118
- var _a;
119
115
  const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
120
- const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
116
+ const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
121
117
  cls.setSignature(classSignature);
122
118
  cls.setCategory(ArkClass_1.ClassCategory.UNION);
123
119
  (0, ArkClassBuilder_1.init4InstanceInitMethod)(cls);
@@ -125,9 +121,8 @@ function buildUnion2ArkClass(clsNode, cls, sourceFile, declaring) {
125
121
  buildArkClassMembers(clsNode, cls, sourceFile);
126
122
  }
127
123
  function buildStruct2ArkClass(clsNode, cls, sourceFile, declaring) {
128
- var _a;
129
124
  const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
130
- const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
125
+ const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
131
126
  cls.setSignature(classSignature);
132
127
  if (clsNode.inner) {
133
128
  processCXXHeritage(clsNode, cls);
@@ -140,9 +135,8 @@ function buildStruct2ArkClass(clsNode, cls, sourceFile, declaring) {
140
135
  buildArkClassMembers(clsNode, cls, sourceFile);
141
136
  }
142
137
  function buildClass2ArkClass(clsNode, cls, sourceFile, declaring) {
143
- var _a;
144
138
  const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
145
- const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
139
+ const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
146
140
  cls.setSignature(classSignature);
147
141
  if (clsNode.inner) {
148
142
  processCXXHeritage(clsNode, cls);
@@ -159,9 +153,8 @@ function buildClass2ArkClass(clsNode, cls, sourceFile, declaring) {
159
153
  cls.setModifiers((0, builderUtils_1.buildModifiersForCxxClass)(cls));
160
154
  }
161
155
  function buildTemplateClass(clsNode, cls, sourceFile, declaring) {
162
- var _a;
163
156
  const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
164
- const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
157
+ const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
165
158
  cls.setSignature(classSignature);
166
159
  if (clsNode.inner) {
167
160
  processCXXHeritage(clsNode, cls);
@@ -205,9 +198,8 @@ function processCXXHeritage(clsNode, cls) {
205
198
  }
206
199
  }
207
200
  function buildEnum2ArkClass(clsNode, cls, sourceFile, declaring) {
208
- var _a;
209
201
  const className = genClassName(clsNode.name ? clsNode.name : '', cls, declaring);
210
- const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
202
+ const classSignature = new ArkSignature_1.ClassSignature(className, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
211
203
  cls.setSignature(classSignature);
212
204
  cls.setCategory(ArkClass_1.ClassCategory.ENUM);
213
205
  (0, ArkClassBuilder_1.init4StaticInitMethod)(cls);
@@ -216,15 +208,15 @@ function buildEnum2ArkClass(clsNode, cls, sourceFile, declaring) {
216
208
  function buildInitMethodsForClassTag(tag, cls, sourceFile, instanceInitStmts, staticInitStmts) {
217
209
  if (tag === ArkCxxAstNode_1.CxxTagUsed.Class) {
218
210
  const tu = sourceFile;
219
- const instanceIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getInstanceInitMethod());
220
- const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getStaticInitMethod());
221
- (0, ArkMethodBuilder_1.buildInitMethod)(cls.getInstanceInitMethod(), instanceInitStmts, instanceIRTransformer.getThisLocal());
222
- (0, ArkMethodBuilder_1.buildInitMethod)(cls.getStaticInitMethod(), staticInitStmts, staticIRTransformer.getThisLocal());
211
+ const instanceIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getInstanceInitMethodOrNull());
212
+ const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getStaticInitMethodOrNull());
213
+ (0, ArkMethodBuilder_1.buildInitMethod)(cls.getInstanceInitMethodOrNull(), instanceInitStmts, instanceIRTransformer.getThisLocal());
214
+ (0, ArkMethodBuilder_1.buildInitMethod)(cls.getStaticInitMethodOrNull(), staticInitStmts, staticIRTransformer.getThisLocal());
223
215
  }
224
216
  else if (tag === ArkCxxAstNode_1.CxxTagUsed.Enum) {
225
217
  const tu = sourceFile;
226
- const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getStaticInitMethod());
227
- (0, ArkMethodBuilder_1.buildInitMethod)(cls.getStaticInitMethod(), staticInitStmts, staticIRTransformer.getThisLocal());
218
+ const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(tu, cls.getStaticInitMethodOrNull());
219
+ (0, ArkMethodBuilder_1.buildInitMethod)(cls.getStaticInitMethodOrNull(), staticInitStmts, staticIRTransformer.getThisLocal());
228
220
  }
229
221
  }
230
222
  function buildArkClassMembers(clsNode, cls, sourceFile) {
@@ -242,7 +234,7 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
242
234
  const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
243
235
  // If the parameter inner is not empty, it means it contains initialization information
244
236
  if (member.inner.length > 0 && (0, cppUtils_1.hasNodeFlag)(member, ArkCxxAstNode_1.CxxNodeFlag.HasInClassInitializer)) {
245
- staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethod());
237
+ staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethodOrNull());
246
238
  getInitStmts(staticIRTransformer, arkField, member.inner[member.inner.length - 1]);
247
239
  }
248
240
  arkField.getInitializer().forEach(stmt => instanceInitStmts.push(stmt));
@@ -250,7 +242,7 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
250
242
  }
251
243
  case ArkCxxAstNode_1.AstKind.EnumConstantDecl: {
252
244
  const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
253
- staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethod());
245
+ staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethodOrNull());
254
246
  getInitStmts(staticIRTransformer, arkField, member.inner[0], enumFieldInfo);
255
247
  arkField.getInitializer().forEach(stmt => staticInitStmts.push(stmt));
256
248
  break;
@@ -280,8 +272,8 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
280
272
  buildInitMethodsForClassTag(tag, cls, sourceFile, instanceInitStmts, staticInitStmts);
281
273
  }
282
274
  function processClassDeclInClass(classDeclNode, cls, sourceFile) {
283
- const newCls = new ArkClass_1.ArkClass();
284
275
  const namespace = cls.getDeclaringArkNamespace();
276
+ const newCls = new ArkClass_1.ArkClass(cls.getDeclaringFileID(), namespace === null || namespace === void 0 ? void 0 : namespace.getNamespaceSigID());
285
277
  if (namespace) {
286
278
  buildNormalArkClassFromArkNamespace(classDeclNode, namespace, newCls, sourceFile, cls);
287
279
  }
@@ -312,7 +304,7 @@ function processUsingDeclInClass(usingDecl, cls) {
312
304
  function processTypeAliasDeclInClass(typeAliasDecl, cls, sourceFile, instanceInitStmts) {
313
305
  const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(typeAliasDecl, sourceFile, cls);
314
306
  // it's a type alias declaration
315
- const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethod());
307
+ const staticIRTransformer = new ArkIRTransformer_1.ArkCxxIRTransformer(sourceFile, cls.getStaticInitMethodOrNull());
316
308
  const stmts = staticIRTransformer.cxxNodeToStmts(typeAliasDecl);
317
309
  if (stmts.length === 0) {
318
310
  return;
@@ -329,25 +321,23 @@ function buildMethodsForClass(clsNode, cls, sourceFile) {
329
321
  member.kind === ArkCxxAstNode_1.AstKind.CXXConstructorDecl ||
330
322
  member.kind === ArkCxxAstNode_1.AstKind.CXXDestructorDecl ||
331
323
  member.kind === ArkCxxAstNode_1.AstKind.FriendDecl) {
332
- let method = new ArkMethod_1.ArkMethod();
324
+ let method = new ArkMethod_1.ArkMethod(cls.getClassSigID());
333
325
  (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(member, cls, method, sourceFile);
334
326
  }
335
327
  });
336
328
  }
337
329
  function buildDefaultArkClassFromArkFile(arkFile, defaultClass, astRoot) {
338
- defaultClass.setDeclaringArkFile(arkFile);
339
330
  defaultClass.setCategory(ArkClass_1.ClassCategory.CLASS);
340
331
  buildDefaultArkClass(defaultClass, astRoot);
341
332
  }
342
333
  exports.buildDefaultArkClassFromArkFile = buildDefaultArkClassFromArkFile;
343
334
  function buildDefaultArkClass(cls, sourceFile, node) {
344
- var _a;
345
- const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
335
+ const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
346
336
  cls.setSignature(defaultArkClassSignature);
347
337
  genDefaultArkMethod(cls, sourceFile, node);
348
338
  }
349
339
  function genDefaultArkMethod(cls, sourceFile, node) {
350
- let defaultMethod = new ArkMethod_1.ArkMethod();
340
+ let defaultMethod = new ArkMethod_1.ArkMethod(cls.getClassSigID());
351
341
  (0, ArkMethodBuilder_1.buildDefaultArkMethodFromArkClass)(cls, defaultMethod, sourceFile, node);
352
342
  cls.setDefaultArkMethod(defaultMethod);
353
343
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArkFieldBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFieldBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAQ3D,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAsB1G"}
1
+ {"version":3,"file":"ArkFieldBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFieldBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAiB,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAQ3D,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAqB1G"}
@@ -25,9 +25,8 @@ const IRUtils_1 = require("../../common/IRUtils");
25
25
  const builderUtils_2 = require("../../../../core/model/builder/builderUtils");
26
26
  const ArkCxxAstNode_1 = require("../../utils/ArkCxxAstNode");
27
27
  function buildProperty2ArkField(member, sourceFile, cls) {
28
- let field = new ArkField_1.ArkField();
28
+ let field = new ArkField_1.ArkField(cls.getClassSigID());
29
29
  field.setCategory(mapSyntaxKindToFieldOriginType(member.kind));
30
- field.setDeclaringArkClass(cls);
31
30
  field.setOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(member, sourceFile));
32
31
  let fieldName = member.name;
33
32
  field.addModifier((0, builderUtils_1.buildModifiers)(member));
@@ -39,7 +38,7 @@ function buildProperty2ArkField(member, sourceFile, cls) {
39
38
  field.addModifier(ArkBaseModel_1.ModifierType.STATIC);
40
39
  fieldType = new Type_1.ClassType(cls.getSignature());
41
40
  }
42
- field.setSignature(new ArkSignature_1.FieldSignature(fieldName, cls.getSignature(), fieldType, field.isStatic()));
41
+ field.setSignature(new ArkSignature_1.FieldSignature(fieldName, cls.getClassSigID(), fieldType, field.isStatic()));
43
42
  IRUtils_1.IRUtils.setComments(field, member, sourceFile, cls.getDeclaringArkFile().getScene().getOptions());
44
43
  cls.addField(field);
45
44
  return field;
@@ -1,5 +1,4 @@
1
1
  import { ArkFile } from '../../../../core/model/ArkFile';
2
- import { ArkClass } from '../../../../core/model/ArkClass';
3
2
  import type { CxxAstNode } from '../../utils/ArkCxxAstNode';
4
3
  import { Scene } from '../../../../Scene';
5
4
  import { FrontendParseFailure } from '../../../FrontendBuilder';
@@ -20,6 +19,7 @@ export declare function prepareArkFile(scene: Scene, absoluteFilePath: string, t
20
19
  * @param arkFile - Pre-allocated ArkFile to populate (must have scene and file path set).
21
20
  */
22
21
  export declare function buildImportExportInfoFromFile(arkFile: ArkFile): void;
23
- export declare const classMap: Map<string, ArkClass>;
22
+ export declare const classMap: Map<string, number>;
23
+ export declare function disposeClassMap(): void;
24
24
  export declare function buildArkClassFromCxxClass(classNode: CxxAstNode, arkFile: ArkFile, astRoot: CxxAstNode): void;
25
25
  //# sourceMappingURL=ArkFileBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArkFileBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFileBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAY,MAAM,gCAAgC,CAAC;AAMnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAS3D,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AAK5E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwFhE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,MAAM,EAAE,EAC7B,oBAAoB,GAAE,MAAU,EAChC,oBAAoB,GAAE,MAAU,EAChC,UAAU,GAAE,OAAe,GAC5B,oBAAoB,CAkCtB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CA0BhI;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BpE;AAED,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAA+B,CAAC;AAE3E,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAU5G"}
1
+ {"version":3,"file":"ArkFileBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkFileBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAY,MAAM,gCAAgC,CAAC;AAenE,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AAK5E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwFhE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,MAAM,EAAE,EAC7B,oBAAoB,GAAE,MAAU,EAChC,oBAAoB,GAAE,MAAU,EAChC,UAAU,GAAE,OAAe,GAC5B,oBAAoB,CAmCtB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CA0BhI;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BpE;AAED,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAA6B,CAAC;AAEvE,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAU5G"}
@@ -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.buildArkClassFromCxxClass = exports.classMap = exports.buildImportExportInfoFromFile = exports.prepareArkFile = exports.prepareArkFiles = void 0;
43
+ exports.buildArkClassFromCxxClass = exports.disposeClassMap = exports.classMap = exports.buildImportExportInfoFromFile = exports.prepareArkFile = exports.prepareArkFiles = void 0;
44
44
  const fs_1 = __importDefault(require("fs"));
45
45
  const path_1 = __importDefault(require("path"));
46
46
  const ArkFile_1 = require("../../../../core/model/ArkFile");
@@ -170,6 +170,7 @@ function prepareArkFiles(scene, absoluteSourceFiles, maxParallelProcesses = 1, m
170
170
  onSourceAst: (sourceFile, astRoot) => {
171
171
  const target = new ArkFile_1.ArkFile(ArkFile_1.Language.CXX);
172
172
  target.setScene(scene);
173
+ scene.setFile(target);
173
174
  try {
174
175
  applyArkFile(target, sourceFile, astRoot);
175
176
  arkFiles.push(target);
@@ -254,15 +255,19 @@ function buildImportExportInfoFromFile(arkFile) {
254
255
  }
255
256
  exports.buildImportExportInfoFromFile = buildImportExportInfoFromFile;
256
257
  exports.classMap = new Map();
258
+ function disposeClassMap() {
259
+ exports.classMap.clear();
260
+ }
261
+ exports.disposeClassMap = disposeClassMap;
257
262
  function buildArkClassFromCxxClass(classNode, arkFile, astRoot) {
258
- let cls = new ArkClass_1.ArkClass();
263
+ let cls = new ArkClass_1.ArkClass(arkFile.getFileSigID());
259
264
  if (classNode.kind === ArkCxxAstNode_1.AstKind.ClassTemplateDecl) {
260
265
  classNode.tagUsed = classNode.tagUsed ? classNode.tagUsed : ArkCxxAstNode_1.CxxTagUsed.Class;
261
266
  }
262
267
  (0, ArkClassBuilder_1.buildNormalArkClassFromArkFile)(classNode, arkFile, cls, astRoot);
263
268
  addExportInfoOnCondition(classNode, cls, arkFile, astRoot);
264
269
  if (classNode.id) {
265
- exports.classMap.set(classNode.id, cls);
270
+ exports.classMap.set(classNode.id, cls.getClassSigID());
266
271
  }
267
272
  }
268
273
  exports.buildArkClassFromCxxClass = buildArkClassFromCxxClass;
@@ -310,20 +315,14 @@ function addExportInfoOnCondition(currNode, arkInstance, arkFile, astRoot) {
310
315
  }
311
316
  }
312
317
  function buildArkMethodFromCxxMethod(mtdNode, arkFile, astRoot, arkClass) {
313
- let mtd = new ArkMethod_1.ArkMethod();
314
- (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(mtdNode, arkClass !== null && arkClass !== void 0 ? arkClass : arkFile.getDefaultClass(), mtd, astRoot);
318
+ const declaringClass = arkClass !== null && arkClass !== void 0 ? arkClass : arkFile.getDefaultClass();
319
+ let mtd = new ArkMethod_1.ArkMethod(declaringClass.getClassSigID());
320
+ (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(mtdNode, declaringClass, mtd, astRoot);
315
321
  addExportInfoOnCondition(mtdNode, mtd, arkFile, astRoot);
316
322
  }
317
- /**
318
- * Building ArkFile instance
319
- *
320
- * @param arkFile
321
- * @param astRoot
322
- * @returns
323
- */
324
- function buildArkFile(arkFile, astRoot) {
325
- var _a, _b;
326
- // handle header units
323
+ /** 头部单元的 include 指令 → ImportInfo。 */
324
+ function buildImportInfosFromHeaderUnits(arkFile, astRoot) {
325
+ var _a;
327
326
  (_a = astRoot.headerUnits) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
328
327
  var _a;
329
328
  if (!child.includes) {
@@ -337,8 +336,19 @@ function buildArkFile(arkFile, astRoot) {
337
336
  buildImportInfoFromInclude(includeInfo, child, astRoot, arkFile);
338
337
  }
339
338
  });
339
+ }
340
+ /**
341
+ * Building ArkFile instance
342
+ *
343
+ * @param arkFile
344
+ * @param astRoot
345
+ * @returns
346
+ */
347
+ function buildArkFile(arkFile, astRoot) {
348
+ var _a;
349
+ buildImportInfosFromHeaderUnits(arkFile, astRoot);
340
350
  // handle non-header unit
341
- const statements = (_b = astRoot.inner) !== null && _b !== void 0 ? _b : [];
351
+ const statements = (_a = astRoot.inner) !== null && _a !== void 0 ? _a : [];
342
352
  statements.forEach((child) => {
343
353
  let childKind = child.kind;
344
354
  switch (childKind) {
@@ -355,10 +365,8 @@ function buildArkFile(arkFile, astRoot) {
355
365
  buildArkMethodFromCxxMethod(child, arkFile, astRoot);
356
366
  break;
357
367
  case ArkCxxAstNode_1.AstKind.NamespaceDecl:
358
- let ns = new ArkNamespace_1.ArkNamespace();
359
- ns.setDeclaringArkFile(arkFile);
368
+ let ns = new ArkNamespace_1.ArkNamespace(arkFile.getFileSigID());
360
369
  (0, ArkNamespaceBuilder_1.buildArkNamespace)(child, arkFile, ns, astRoot);
361
- arkFile.addNamespace(ns);
362
370
  addExportInfoOnCondition(child, ns, arkFile, astRoot);
363
371
  break;
364
372
  case ArkCxxAstNode_1.AstKind.CXXMethodDecl:
@@ -395,10 +403,9 @@ function getDeclaringArkClassOfMethod(mtd, arkFile) {
395
403
  const className = (_a = mtd.mangledName) !== null && _a !== void 0 ? _a : '';
396
404
  let arkClass = arkFile.getClasses().find(arkClass => arkClass.getName() === className);
397
405
  if (!arkClass) {
398
- arkClass = new ArkClass_1.ArkClass();
399
- const classSignature = new ArkSignature_1.ClassSignature(className, arkFile.getFileSignature());
406
+ arkClass = new ArkClass_1.ArkClass(arkFile.getFileSigID());
407
+ const classSignature = new ArkSignature_1.ClassSignature(className, arkFile.getFileSigID());
400
408
  arkClass.setSignature(classSignature);
401
- arkClass.setDeclaringArkFile(arkFile);
402
409
  arkFile.addArkClass(arkClass);
403
410
  (0, ArkClassBuilder_3.init4InstanceInitMethod)(arkClass);
404
411
  (0, ArkClassBuilder_3.init4StaticInitMethod)(arkClass);
@@ -406,8 +413,8 @@ function getDeclaringArkClassOfMethod(mtd, arkFile) {
406
413
  return arkClass;
407
414
  }
408
415
  function genDefaultArkClass(arkFile, astRoot) {
409
- let defaultClass = new ArkClass_1.ArkClass();
416
+ let defaultClass = new ArkClass_1.ArkClass(arkFile.getFileSigID());
410
417
  (0, ArkClassBuilder_2.buildDefaultArkClassFromArkFile)(arkFile, defaultClass, astRoot);
411
- arkFile.setDefaultClass(defaultClass);
418
+ arkFile.setDefaultClassID(defaultClass.getClassSigID());
412
419
  arkFile.addArkClass(defaultClass);
413
420
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAa7D,OAAO,EAAkE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElH,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAepD,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAkChE,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAY3I;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CA0B/G;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAChE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CA8CpG;AAwHD,wBAAgB,wCAAwC,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAWjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAsDnE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAuB5G;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAmCjE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAkBhE"}
1
+ {"version":3,"file":"ArkMethodBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkMethodBuilder.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAO7D,OAAO,EAAkE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElH,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAepD,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AA+BhE,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAU3I;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAyB/G;AAED,wBAAgB,0BAA0B,CACtC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,QAAQ,EACxB,GAAG,EAAE,SAAS,EACd,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,SAAS,GAC5B,IAAI,CA6CN;AAwHD,wBAAgB,wCAAwC,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAWjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAoDnE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAuB5G;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAqCjE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAgBhE"}
@@ -74,9 +74,7 @@ function getSpecificNodes(methodNode, targetNode) {
74
74
  return [];
75
75
  }
76
76
  // Handle Cpp lambda functions
77
- if (methodNode.type && !((0, builderUtils_1.isCxxFunctionPointer)(methodNode.type.qualType)) &&
78
- !LAMBDA_WRAPPER_METHOD_KINDS.includes(methodNode.kind) &&
79
- methodNode.inner) {
77
+ if (methodNode.type && !(0, builderUtils_1.isCxxFunctionPointer)(methodNode.type.qualType) && !LAMBDA_WRAPPER_METHOD_KINDS.includes(methodNode.kind) && methodNode.inner) {
80
78
  return getSpecificNodes(methodNode.inner[0], targetNode);
81
79
  }
82
80
  let result = [];
@@ -88,9 +86,8 @@ function getSpecificNodes(methodNode, targetNode) {
88
86
  return result.length > 0 ? result : [];
89
87
  }
90
88
  function buildDefaultArkMethodFromArkClass(declaringClass, mtd, sourceFile, node) {
91
- mtd.setDeclaringArkClass(declaringClass);
92
89
  const methodSubSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildMethodSubSignatureFromMethodName(Const_1.DEFAULT_ARK_METHOD_NAME, true);
93
- const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getSignature(), methodSubSignature);
90
+ const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getClassSigID(), methodSubSignature);
94
91
  mtd.setImplementationSignature(methodSignature);
95
92
  mtd.setImplOriginFullPosition(new Position_1.FullPosition(0, 0, 0, 0));
96
93
  const defaultMethodNode = node ? node : sourceFile;
@@ -126,7 +123,6 @@ function handleFunctionTemplateDecl(methodNode, mtd, sourceFile) {
126
123
  }
127
124
  exports.handleFunctionTemplateDecl = handleFunctionTemplateDecl;
128
125
  function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile, declaringMethod) {
129
- mtd.setDeclaringArkClass(declaringClass);
130
126
  if (declaringMethod !== undefined) {
131
127
  mtd.setOuterMethod(declaringMethod);
132
128
  }
@@ -157,7 +153,7 @@ function buildArkMethodFromArkClass(methodNode, declaringClass, mtd, sourceFile,
157
153
  }
158
154
  reCheckModifiers(methodName, declaringClass, mtd, methodParameters);
159
155
  const methodSubSignature = new ArkSignature_1.MethodSubSignature(methodName, methodParameters, returnType, mtd.isStatic());
160
- const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getSignature(), methodSubSignature);
156
+ const methodSignature = new ArkSignature_1.MethodSignature(mtd.getDeclaringArkClass().getClassSigID(), methodSubSignature);
161
157
  if (isMethodImplementation(methodNode)) {
162
158
  mtd.setImplementationSignature(methodSignature);
163
159
  mtd.setImplOriginFullPosition(Position_1.FullPosition.cxxBuildFromNode(methodNode, sourceFile));
@@ -303,9 +299,6 @@ function buildDefaultConstructor(arkClass) {
303
299
  return false;
304
300
  }
305
301
  recursivelyCheckAndBuildSuperConstructor(arkClass);
306
- const defaultConstructor = new ArkMethod_1.ArkMethod();
307
- defaultConstructor.setDeclaringArkClass(arkClass);
308
- defaultConstructor.setIsGeneratedFlag(false);
309
302
  const thisLocal = new Local_1.Local(TSConst_1.THIS_NAME, new Type_1.ClassType(arkClass.getSignature()));
310
303
  const locals = new Set([thisLocal]);
311
304
  const basicBlock = new BasicBlock_1.BasicBlock();
@@ -326,12 +319,13 @@ function buildDefaultConstructor(arkClass) {
326
319
  basicBlock.addStmt(new Stmt_1.ArkAssignStmt(thisLocal, new Ref_1.ArkThisRef(new Type_1.ClassType(arkClass.getSignature()))));
327
320
  if (superConstructor) {
328
321
  const superMethodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.SUPER_NAME, parameters, superConstructor.getReturnType());
329
- const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getSignature(), superMethodSubSignature);
322
+ const superMethodSignature = new ArkSignature_1.MethodSignature(arkClass.getClassSigID(), superMethodSubSignature);
330
323
  const superInvokeExpr = new Expr_1.ArkStaticInvokeExpr(superMethodSignature, parameterArgs);
331
324
  basicBlock.addStmt(new Stmt_1.ArkInvokeStmt(superInvokeExpr));
332
325
  }
333
- const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, parameters, thisLocal.getType(), defaultConstructor.isStatic());
334
- defaultConstructor.setImplementationSignature(new ArkSignature_1.MethodSignature(arkClass.getSignature(), methodSubSignature));
326
+ const methodSubSignature = new ArkSignature_1.MethodSubSignature(TSConst_1.CONSTRUCTOR_NAME, parameters, thisLocal.getType());
327
+ const defaultConstructor = new ArkMethod_1.ArkMethod(arkClass.getClassSigID(), new ArkSignature_1.MethodSignature(arkClass.getClassSigID(), methodSubSignature));
328
+ defaultConstructor.setIsGeneratedFlag(false);
335
329
  basicBlock.addStmt(new Stmt_1.ArkReturnStmt(thisLocal));
336
330
  const cfg = new Cfg_1.Cfg();
337
331
  cfg.addBlock(basicBlock);
@@ -394,7 +388,7 @@ function addInitInConstructor(constructor) {
394
388
  }
395
389
  let initInvokeStmt;
396
390
  try {
397
- initInvokeStmt = new Stmt_1.ArkInvokeStmt(new Expr_1.ArkInstanceInvokeExpr(thisLocal, constructor.getDeclaringArkClass().getInstanceInitMethod().getSignature(), []));
391
+ initInvokeStmt = new Stmt_1.ArkInvokeStmt(new Expr_1.ArkInstanceInvokeExpr(thisLocal, constructor.getDeclaringArkClass().getInstanceInitMethodOrNull().getSignature(), []));
398
392
  }
399
393
  catch (e) {
400
394
  logger.warn('addInitInConstructor: failed to build initInvokeStmt due to exception: ', e);
@@ -410,7 +404,7 @@ function isMethodImplementation(node) {
410
404
  var _a;
411
405
  switch (node.kind) {
412
406
  case ArkCxxAstNode_1.AstKind.LambdaExpr:
413
- return (node.inner && node.inner.length > 0);
407
+ return node.inner && node.inner.length > 0;
414
408
  case ArkCxxAstNode_1.AstKind.CXXMethodDecl:
415
409
  case ArkCxxAstNode_1.AstKind.CXXConstructorDecl:
416
410
  case ArkCxxAstNode_1.AstKind.CXXDestructorDecl:
@@ -419,7 +413,7 @@ function isMethodImplementation(node) {
419
413
  case ArkCxxAstNode_1.AstKind.FriendDecl:
420
414
  // CXXConstructorDecl-CXXCtorInitializer: using Base::Base
421
415
  // ==> The constructor of the subclass has the same implementation as that of the parent class.
422
- return !!((_a = node.inner) === null || _a === void 0 ? void 0 : _a.find((inn) => (inn.kind === ArkCxxAstNode_1.AstKind.CompoundStmt || inn.kind === ArkCxxAstNode_1.AstKind.CXXCtorInitializer)));
416
+ return !!((_a = node.inner) === null || _a === void 0 ? void 0 : _a.find((inn) => inn.kind === ArkCxxAstNode_1.AstKind.CompoundStmt || inn.kind === ArkCxxAstNode_1.AstKind.CXXCtorInitializer));
423
417
  default:
424
418
  return false;
425
419
  }
@@ -1,8 +1,6 @@
1
1
  import { ArkFile } from '../../../../core/model/ArkFile';
2
2
  import { ArkNamespace } from '../../../../core/model/ArkNamespace';
3
- import { ArkClass } from '../../../../core/model/ArkClass';
4
3
  import { CxxAstNode } from '../../utils/ArkCxxAstNode';
5
- export declare function buildDefaultArkClassFromArkNamespace(arkNamespace: ArkNamespace, defaultClass: ArkClass, nsNode: CxxAstNode, sourceFile: CxxAstNode): void;
6
4
  export declare function genDefaultArkClass(ns: ArkNamespace, node: CxxAstNode, sourceFile: CxxAstNode): void;
7
5
  export declare function buildArkNamespace(node: CxxAstNode, declaringInstance: ArkFile | ArkNamespace, ns: ArkNamespace, sourceFile: CxxAstNode): void;
8
6
  //# sourceMappingURL=ArkNamespaceBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAwBhE,wBAAgB,oCAAoC,CAChD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,QAAQ,EACtB,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,UAAU,GACvB,IAAI,CAIN;AAGD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAMnG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CA+B7I"}
1
+ {"version":3,"file":"ArkNamespaceBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAMnE,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAoBhE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAKnG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAqB7I"}
@@ -37,9 +37,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
37
37
  return result;
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.buildArkNamespace = exports.genDefaultArkClass = exports.buildDefaultArkClassFromArkNamespace = void 0;
40
+ exports.buildArkNamespace = exports.genDefaultArkClass = void 0;
41
41
  const ArkClassBuilder_1 = require("./ArkClassBuilder");
42
- const ArkFile_1 = require("../../../../core/model/ArkFile");
43
42
  const ArkMethodBuilder_1 = require("./ArkMethodBuilder");
44
43
  const ArkNamespace_1 = require("../../../../core/model/ArkNamespace");
45
44
  const builderUtils_1 = require("./builderUtils");
@@ -53,25 +52,18 @@ const Const_1 = require("../../../../core/common/Const");
53
52
  const ArkMethodBuilder_2 = require("./ArkMethodBuilder");
54
53
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'ArkNamespaceBuilder');
55
54
  function buildDefaultArkClass(cls, sourceFile, node) {
56
- var _a;
57
- const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringArkFile().getFileSignature(), ((_a = cls.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
55
+ const defaultArkClassSignature = new ArkSignature_1.ClassSignature(Const_1.DEFAULT_ARK_CLASS_NAME, cls.getDeclaringFileID(), cls.getDeclaringArkNamespaceID());
58
56
  cls.setSignature(defaultArkClassSignature);
59
57
  genDefaultArkMethod(cls, sourceFile, node);
60
58
  }
61
59
  function genDefaultArkMethod(cls, sourceFile, node) {
62
- let defaultMethod = new ArkMethod_1.ArkMethod();
60
+ let defaultMethod = new ArkMethod_1.ArkMethod(cls.getClassSigID());
63
61
  (0, ArkMethodBuilder_2.buildDefaultArkMethodFromArkClass)(cls, defaultMethod, sourceFile, node);
64
62
  cls.setDefaultArkMethod(defaultMethod);
65
63
  }
66
- function buildDefaultArkClassFromArkNamespace(arkNamespace, defaultClass, nsNode, sourceFile) {
67
- defaultClass.setDeclaringArkNamespace(arkNamespace);
68
- defaultClass.setDeclaringArkFile(arkNamespace.getDeclaringArkFile());
69
- buildDefaultArkClass(defaultClass, sourceFile, nsNode);
70
- }
71
- exports.buildDefaultArkClassFromArkNamespace = buildDefaultArkClassFromArkNamespace;
72
64
  function genDefaultArkClass(ns, node, sourceFile) {
73
- let defaultClass = new ArkClass_1.ArkClass();
74
- buildDefaultArkClassFromArkNamespace(ns, defaultClass, node, sourceFile);
65
+ let defaultClass = new ArkClass_1.ArkClass(ns.getDeclaringFileID(), ns.getNamespaceSigID());
66
+ buildDefaultArkClass(defaultClass, sourceFile, node);
75
67
  ns.setDefaultClass(defaultClass);
76
68
  ns.addArkClass(defaultClass);
77
69
  }
@@ -81,16 +73,8 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
81
73
  // modifierFlags from wire + AstParser access merge
82
74
  ns.setModifiers((0, builderUtils_1.buildModifiers)(node));
83
75
  ns.setDecorators((0, builderUtils_1.buildDecorators)(node, sourceFile));
84
- if (declaringInstance instanceof ArkFile_1.ArkFile) {
85
- ns.setDeclaringArkFile(declaringInstance);
86
- }
87
- else {
88
- ns.setDeclaringArkNamespace(declaringInstance);
89
- ns.setDeclaringArkFile(declaringInstance.getDeclaringArkFile());
90
- }
91
- ns.setDeclaringInstance(declaringInstance);
92
76
  const namespaceName = genNamespaceName(node.name ? node.name : '', declaringInstance);
93
- const namespaceSignature = new ArkSignature_1.NamespaceSignature(namespaceName, ns.getDeclaringArkFile().getFileSignature(), ((_a = ns.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
77
+ const namespaceSignature = new ArkSignature_1.NamespaceSignature(namespaceName, ns.getDeclaringFileID(), (_a = ns.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getNamespaceSigID());
94
78
  ns.setSignature(namespaceSignature);
95
79
  // set line and column
96
80
  ns.setOriginFullPositions([Position_1.FullPosition.cxxBuildFromNode(node, sourceFile)]);
@@ -102,6 +86,7 @@ function buildArkNamespace(node, declaringInstance, ns, sourceFile) {
102
86
  else {
103
87
  logger.warn('JSDocNamespaceDeclaration found.');
104
88
  }
89
+ declaringInstance.addNamespace(ns);
105
90
  }
106
91
  exports.buildArkNamespace = buildArkNamespace;
107
92
  function genNamespaceName(name, declaringInstance) {
@@ -132,16 +117,13 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
132
117
  statements.forEach((child) => {
133
118
  switch (child.kind) {
134
119
  case ArkCxxAstNode_1.AstKind.NamespaceDecl: {
135
- let childNs = new ArkNamespace_1.ArkNamespace();
136
- childNs.setDeclaringArkNamespace(namespace);
137
- childNs.setDeclaringArkFile(namespace.getDeclaringArkFile());
120
+ let childNs = new ArkNamespace_1.ArkNamespace(namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
138
121
  buildArkNamespace(child, namespace, childNs, sourceFile);
139
- namespace.addNamespace(childNs);
140
122
  return;
141
123
  }
142
124
  case ArkCxxAstNode_1.AstKind.CXXRecordDecl:
143
125
  case ArkCxxAstNode_1.AstKind.ClassTemplateDecl: {
144
- let cls = new ArkClass_1.ArkClass();
126
+ let cls = new ArkClass_1.ArkClass(namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
145
127
  (0, ArkClassBuilder_1.buildNormalArkClassFromArkNamespace)(child, namespace, cls, sourceFile);
146
128
  return;
147
129
  }
@@ -154,8 +136,9 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
154
136
  case ArkCxxAstNode_1.AstKind.FunctionTemplateDecl:
155
137
  case ArkCxxAstNode_1.AstKind.FunctionDecl:
156
138
  case ArkCxxAstNode_1.AstKind.FriendDecl: {
157
- let mthd = new ArkMethod_1.ArkMethod();
158
- (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, namespace.getDefaultClass(), mthd, sourceFile);
139
+ const defaultClass = namespace.getDefaultClass();
140
+ let mthd = new ArkMethod_1.ArkMethod(defaultClass.getClassSigID());
141
+ (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(child, defaultClass, mthd, sourceFile);
159
142
  return;
160
143
  }
161
144
  case ArkCxxAstNode_1.AstKind.UsingDecl:
@@ -169,21 +152,20 @@ function buildNamespaceMembers(node, namespace, sourceFile) {
169
152
  });
170
153
  }
171
154
  function buildArkMethodForClassMethodInNamespace(methodNode, namespace, sourceFile) {
172
- var _a;
173
155
  let className = methodNode.mangledName;
174
156
  if (!className) {
175
157
  logger.trace('Declaration class not found', methodNode);
176
158
  return;
177
159
  }
178
- let arkClass = namespace.getClassWithName(className);
160
+ // 签名 get-or-create:拼归属签名直查(对齐 ArkFileBuilder file 级精确匹配先例),
161
+ // 消除原按名搜索查 'Foo' 误命中 'Foo$Bar' 的前缀错配
162
+ const classSignature = new ArkSignature_1.ClassSignature(className, namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
163
+ let arkClass = namespace.getClass(classSignature);
179
164
  if (!arkClass) {
180
- arkClass = new ArkClass_1.ArkClass();
181
- arkClass.setDeclaringArkNamespace(namespace);
182
- arkClass.setDeclaringArkFile(namespace.getDeclaringArkFile());
183
- const classSignature = new ArkSignature_1.ClassSignature(className, arkClass.getDeclaringArkFile().getFileSignature(), ((_a = arkClass.getDeclaringArkNamespace()) === null || _a === void 0 ? void 0 : _a.getSignature()) || null);
165
+ arkClass = new ArkClass_1.ArkClass(namespace.getDeclaringFileID(), namespace.getNamespaceSigID());
184
166
  arkClass.setSignature(classSignature);
185
- namespace.addArkClass(arkClass, className);
167
+ namespace.addArkClass(arkClass);
186
168
  }
187
- let mtd = new ArkMethod_1.ArkMethod();
169
+ let mtd = new ArkMethod_1.ArkMethod(arkClass.getClassSigID());
188
170
  (0, ArkMethodBuilder_1.buildArkMethodFromArkClass)(methodNode, arkClass, mtd, sourceFile);
189
171
  }
@@ -46,6 +46,7 @@ export declare class CxxBodyBuilder {
46
46
  private inferTypesDefineInOuter;
47
47
  private updateNestedMethodUsedInOuter;
48
48
  private updateNestedMethodWithClosures;
49
+ private syncChildrenOuterMethodSigID;
49
50
  private updateOuterMethodWithClosures;
50
51
  private getOriginalNestedMethodName;
51
52
  private updateGlobalInfoWithClosures;
@@ -1 +1 @@
1
- {"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAkB,eAAe,EAA8C,MAAM,qCAAqC,CAAC;AAClI,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAsC,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI1F,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAYhE,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAyB;gBAE7B,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;IAIpH,KAAK,IAAI,OAAO,GAAG,IAAI;IAcvB,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;IAIxD;;;;;;;;OAQG;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;IAyBnC,OAAO,CAAC,oCAAoC;IA+B5C,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qCAAqC;IA8B7C,OAAO,CAAC,2BAA2B;IAuDnC,OAAO,CAAC,kCAAkC;CAkB7C"}
1
+ {"version":3,"file":"BodyBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/BodyBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAkB,eAAe,EAA8C,MAAM,qCAAqC,CAAC;AAClI,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAsC,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI1F,OAAO,EAAE,UAAU,EAAW,MAAM,2BAA2B,CAAC;AAahE,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAyB;gBAE7B,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;IAIpH,KAAK,IAAI,OAAO,GAAG,IAAI;IAcvB,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;IAIxD;;;;;;;;OAQG;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;IAkCtC,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,2BAA2B;IAyBnC,OAAO,CAAC,oCAAoC;IA+B5C,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qCAAqC;IA8B7C,OAAO,CAAC,2BAA2B;IAuDnC,OAAO,CAAC,kCAAkC;CAkB7C"}