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
@@ -42,6 +42,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
43
  exports.CxxModelUtils = exports.setTs2CxxFuncMapOfClass = exports.shouldAddCxxHeaderImport = exports.findExportInfo = exports.getArkFile = void 0;
44
44
  const ArkFile_1 = require("../../../core/model/ArkFile");
45
+ const SdkUtils_1 = require("../../../core/common/SdkUtils");
45
46
  const ArkSignature_1 = require("../../../core/model/ArkSignature");
46
47
  const ArkExport_1 = require("../../../core/model/ArkExport");
47
48
  const logger_1 = __importStar(require("../../../utils/logger"));
@@ -56,6 +57,7 @@ const Const_1 = require("../../../core/common/Const");
56
57
  const Type_1 = require("../../../core/base/Type");
57
58
  const ArkNamespace_1 = require("../../../core/model/ArkNamespace");
58
59
  const ModelUtils_1 = require("../../../core/common/ModelUtils");
60
+ const Const_2 = require("../../../core/common/Const");
59
61
  const TypeInference_1 = require("../../../core/common/TypeInference");
60
62
  const Type_2 = require("../base/Type");
61
63
  // Common C++standard library header files (excluding the .h suffix)
@@ -424,7 +426,7 @@ class CxxModelUtils {
424
426
  const clsDeclareSignature = arkClass.getDeclareSignature();
425
427
  let declClass;
426
428
  if (clsDeclareSignature) {
427
- declClass = (_e = arkClass.getDeclaringArkFile().getScene().getFile(clsDeclareSignature.getDeclaringFileSignature())) === null || _e === void 0 ? void 0 : _e.getClass(clsDeclareSignature);
429
+ declClass = (_e = arkClass.getDeclaringArkFile().getScene().getFile(clsDeclareSignature.getDeclaringFileSigID())) === null || _e === void 0 ? void 0 : _e.getClass(clsDeclareSignature);
428
430
  }
429
431
  const heritageClasses = arkClass.getAllHeritageClasses();
430
432
  if (declClass) {
@@ -440,7 +442,7 @@ class CxxModelUtils {
440
442
  return property;
441
443
  }
442
444
  }
443
- const objectClass = arkClass.getDeclaringArkFile().getScene().getSdkGlobal('Object');
445
+ const objectClass = SdkUtils_1.SdkUtils.getSdkGlobal('Object');
444
446
  if (objectClass instanceof ArkClass_1.ArkClass && arkClass !== objectClass) {
445
447
  return this.findPropertyInClass(name, objectClass);
446
448
  }
@@ -459,7 +461,7 @@ class CxxModelUtils {
459
461
  static getStaticMethodWithName(methodName, thisClass) {
460
462
  const thisNamespace = thisClass.getDeclaringArkNamespace();
461
463
  if (thisNamespace) {
462
- const defaultClass = thisNamespace.getClassWithName(Const_1.DEFAULT_ARK_CLASS_NAME);
464
+ const defaultClass = thisNamespace.getDefaultClass();
463
465
  if (defaultClass) {
464
466
  const method = defaultClass.getMethodWithName(methodName);
465
467
  if (method) {
@@ -507,6 +509,79 @@ class CxxModelUtils {
507
509
  }
508
510
  return undefined;
509
511
  }
512
+ /**
513
+ * Resolve a nested class / local class referenced by its short (unqualified) name.
514
+ *
515
+ * C++ name lookup makes nested classes visible by their bare name inside the
516
+ * enclosing class, but the analyzer stores them under a composed top-level name
517
+ * (`Inner$Outer`, multi-level chains like `I$I2$Outer`, method-local classes as
518
+ * `L$Cls.m`). Instead of fuzzy prefix matching on the container's class list,
519
+ * this walks the enclosing-name chain of the context class and resolves each
520
+ * candidate by an exact ClassSignature lookup (O(1) per candidate).
521
+ *
522
+ * Candidate order follows C++ scoping (innermost first), so a same-name nested
523
+ * class correctly shadows an outer/top-level class.
524
+ * @param shortName - the bare source name of the nested class
525
+ * @param ctxClass - the class where the reference occurs (scope context)
526
+ * @param ctxMethod - optional; the method where the reference occurs. When present,
527
+ * classes declared inside the method body (`L$Cls.m`) are also considered.
528
+ * @returns The matching ArkClass, or null when no candidate resolves.
529
+ */
530
+ static findClassByShortName(shortName, ctxClass, ctxMethod) {
531
+ if (!shortName || shortName.includes(Const_1.NAME_DELIMITER)) {
532
+ return null;
533
+ }
534
+ // Enclosing-name chain: 'I2$Outer' -> ['I2$Outer', 'Outer']; top-level 'Outer' -> ['Outer']. `%dflt`(file 级函数的容器)放行——cpp 方法局部类
535
+ // 挂载约定为 `short$%dflt.method`,排除它会使顶层函数上下文的局部类候选链恒空(structBinding Person %unk 实证)。其余 % 前缀合成名
536
+ // (%AC0 匿名类等)仍排除;%dflt 无 $ 分隔符,下钻循环自然终止。
537
+ const enclosingChain = [];
538
+ let scopeName = ctxClass.getName();
539
+ while (scopeName && scopeName.length > 0 && (!scopeName.startsWith('%') || scopeName === Const_2.DEFAULT_ARK_CLASS_NAME)) {
540
+ enclosingChain.push(scopeName);
541
+ const idx = scopeName.indexOf(Const_1.NAME_DELIMITER);
542
+ if (idx <= 0) {
543
+ break;
544
+ }
545
+ scopeName = scopeName.substring(idx + 1);
546
+ }
547
+ if (enclosingChain.length === 0) {
548
+ return null;
549
+ }
550
+ const file = ctxClass.getDeclaringArkFile();
551
+ const ns = ctxClass.getDeclaringArkNamespace();
552
+ const fileID = ns ? ns.getDeclaringFileID() : file.getFileSigID();
553
+ const nsSigID = ns ? ns.getNamespaceSigID() : undefined;
554
+ const tryCandidates = (candidates) => {
555
+ for (const candidate of candidates) {
556
+ const cls = ns ? ns.getClass(new ArkSignature_1.ClassSignature(candidate, fileID, nsSigID)) : file.getClass(new ArkSignature_1.ClassSignature(candidate, fileID));
557
+ if (cls) {
558
+ return cls;
559
+ }
560
+ }
561
+ return null;
562
+ };
563
+ // 1. Nested classes inside the enclosing chain (innermost scope first).
564
+ const nestedCandidates = [];
565
+ for (const enclosing of enclosingChain) {
566
+ nestedCandidates.push(shortName + Const_1.NAME_DELIMITER + enclosing);
567
+ }
568
+ const nested = tryCandidates(nestedCandidates);
569
+ if (nested) {
570
+ return nested;
571
+ }
572
+ // 2. Method-local classes (composed with '.' as the method separator).
573
+ if (ctxMethod) {
574
+ const methodLocalCandidates = [];
575
+ for (const enclosing of enclosingChain) {
576
+ methodLocalCandidates.push(shortName + Const_1.NAME_DELIMITER + enclosing + '.' + ctxMethod.getName());
577
+ }
578
+ const local = tryCandidates(methodLocalCandidates);
579
+ if (local) {
580
+ return local;
581
+ }
582
+ }
583
+ return null;
584
+ }
510
585
  static findSymbolInFileWithName(symbolName, arkClass, onlyType = false) {
511
586
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
512
587
  // find symbol from enum value
@@ -516,6 +591,12 @@ class CxxModelUtils {
516
591
  return new Local_1.Local(symbolName, (_a = TypeInference_1.TypeInference.getEnumValueType(field)) !== null && _a !== void 0 ? _a : field.getType());
517
592
  }
518
593
  }
594
+ // Nested classes are visible by their bare name inside the enclosing class scope;
595
+ // resolve them first (inner scope shadows outer) before the container-level search.
596
+ const nestedByShortName = this.findClassByShortName(symbolName, arkClass);
597
+ if (nestedByShortName) {
598
+ return nestedByShortName;
599
+ }
519
600
  // look up symbol from inner to outer
520
601
  let currNamespace = arkClass.getDeclaringArkNamespace();
521
602
  let result;
@@ -1 +1 @@
1
- {"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/TypeInference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/TypeInference.ts"],"names":[],"mappings":"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"}
@@ -65,7 +65,9 @@ const Builtin_2 = require("./Builtin");
65
65
  const ModelUtils_2 = require("./ModelUtils");
66
66
  const ArkFile_1 = require("../../../core/model/ArkFile");
67
67
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'TypeInference');
68
- const unknownFileName = [Const_1.UNKNOWN_FILE_NAME, Builtin_1.Builtin.DUMMY_FILE_NAME];
68
+ // Builtin stub signatures carry FileSignature.DEFAULT whose fileName is UNKNOWN_FILE_NAME,
69
+ // so a single entry covers both unresolved references and builtin stubs.
70
+ const unknownFileName = [Const_1.UNKNOWN_FILE_NAME];
69
71
  class TypeInference {
70
72
  static inferTypeInArkField(arkField) {
71
73
  var _a, _b;
@@ -96,11 +98,12 @@ class TypeInference {
96
98
  }
97
99
  if (fieldType) {
98
100
  arkField.getSignature().setType(fieldType);
99
- fieldRef === null || fieldRef === void 0 ? void 0 : fieldRef.setFieldSignature(arkField.getSignature());
101
+ // A2 快路径:定义点 canonical 回写(ID 直读,graduateToFormal)。
102
+ fieldRef === null || fieldRef === void 0 ? void 0 : fieldRef.graduateToFormal(arkField.getFieldSigID());
100
103
  }
101
104
  else if (rightType && this.isUnclearType(beforeType) && !this.isUnclearType(rightType)) {
102
105
  arkField.getSignature().setType(rightType);
103
- fieldRef === null || fieldRef === void 0 ? void 0 : fieldRef.setFieldSignature(arkField.getSignature());
106
+ fieldRef === null || fieldRef === void 0 ? void 0 : fieldRef.graduateToFormal(arkField.getFieldSigID());
104
107
  }
105
108
  }
106
109
  /**
@@ -177,7 +180,10 @@ class TypeInference {
177
180
  }
178
181
  }
179
182
  else if (leftOpType instanceof Type_1.AliasType) {
180
- const defArkClass = (_a = declaringArkClass.getDeclaringArkFile().getScene().getMethod(leftOpType.getSignature().getDeclaringMethodSignature())) === null || _a === void 0 ? void 0 : _a.getDeclaringArkClass();
183
+ const defArkClass = (_a = declaringArkClass
184
+ .getDeclaringArkFile()
185
+ .getScene()
186
+ .getMethod(leftOpType.getSignature().getDeclaringMethodSignature())) === null || _a === void 0 ? void 0 : _a.getDeclaringArkClass();
181
187
  let baseType = this.inferUnclearedType(leftOpType.getOriginalType(), defArkClass !== null && defArkClass !== void 0 ? defArkClass : declaringArkClass, visited);
182
188
  if (baseType) {
183
189
  leftOpType.setOriginalType(baseType);
@@ -191,7 +197,7 @@ class TypeInference {
191
197
  * @param arkMethod Ark method object for type inference
192
198
  */
193
199
  static inferTypeInMethod(arkMethod) {
194
- var _a, _b;
200
+ var _a;
195
201
  const arkClass = arkMethod.getDeclaringArkClass();
196
202
  this.inferGenericType(arkMethod.getGenericTypes(), arkClass);
197
203
  const signatures = [];
@@ -212,15 +218,24 @@ class TypeInference {
212
218
  signatures.forEach(s => this.inferSignatureReturnType(s, arkMethod));
213
219
  return;
214
220
  }
215
- (_b = body.getUsedGlobals()) === null || _b === void 0 ? void 0 : _b.forEach((value, key) => {
216
- if (value instanceof Ref_1.GlobalRef && !value.getRef()) {
221
+ const usedGlobals = body.getUsedGlobals();
222
+ if (usedGlobals !== undefined) {
223
+ for (const key of usedGlobals.keys()) {
224
+ const value = usedGlobals.get(key);
225
+ if (!(value instanceof Ref_1.GlobalRef) || value.getRef()) {
226
+ continue;
227
+ }
217
228
  const arkExport = ModelUtils_1.ModelUtils.findGlobalRef(key, arkMethod);
218
- if (arkExport instanceof Local_1.Local) {
219
- arkExport.getUsedStmts().push(...value.getUsedStmts());
220
- value.setRef(arkExport);
229
+ if (!(arkExport instanceof Local_1.Local)) {
230
+ continue;
221
231
  }
232
+ const usedStmts = value.getUsedStmts();
233
+ for (let i = 0; i < usedStmts.length; i++) {
234
+ arkExport.addUsedStmt(usedStmts[i]);
235
+ }
236
+ value.setRef(arkExport);
222
237
  }
223
- });
238
+ }
224
239
  const cfg = body.getCfg();
225
240
  for (const block of cfg.getBlocks()) {
226
241
  for (const stmt of block.getStmts()) {
@@ -517,7 +532,8 @@ class TypeInference {
517
532
  leftType = rightType;
518
533
  }
519
534
  }
520
- else if (baseType instanceof Type_1.FunctionType && !this.isUnclearType(rightType) &&
535
+ else if (baseType instanceof Type_1.FunctionType &&
536
+ !this.isUnclearType(rightType) &&
521
537
  baseType.getMethodSignature().getMethodSubSignature().getMethodName().startsWith(Const_1.ANONYMOUS_METHOD_PREFIX)) {
522
538
  leftType = rightType;
523
539
  }
@@ -546,40 +562,10 @@ class TypeInference {
546
562
  * @returns true if the type is unclear, otherwise false
547
563
  */
548
564
  static isUnclearType(type) {
549
- var _a;
550
- // TODO: For UnionType, IntersectionType and TupleType, it should recurse check every item of them.
551
- if (!type ||
552
- type instanceof Type_1.UnknownType ||
553
- type instanceof Type_1.UnclearReferenceType ||
554
- type instanceof Type_1.NullType ||
555
- type instanceof Type_1.UndefinedType ||
556
- type instanceof Type_1.GenericType) {
557
- return true;
558
- }
559
- else if (type instanceof Type_1.ClassType &&
560
- (type.getClassSignature().getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME ||
561
- (type.getClassSignature().getClassName() === TSConst_1.PROMISE && !type.getRealGenericTypes()) ||
562
- (type.getClassSignature().getDeclaringFileSignature().getFileName() === Builtin_1.Builtin.DUMMY_FILE_NAME &&
563
- ((_a = type.getRealGenericTypes()) === null || _a === void 0 ? void 0 : _a.find(t => t instanceof Type_1.GenericType))))) {
564
- return true;
565
- }
566
- else if (type instanceof Type_1.UnionType || type instanceof Type_1.IntersectionType || type instanceof Type_1.TupleType) {
567
- return !!type.getTypes().find(t => this.checkType(t, e => e instanceof Type_1.UnclearReferenceType || e instanceof Type_1.GenericType));
568
- }
569
- else if (type instanceof Type_1.ArrayType) {
570
- const baseType = type.getBaseType();
571
- return this.checkType(baseType, t => t instanceof Type_1.UnclearReferenceType || baseType instanceof Type_1.GenericType);
572
- }
573
- else if (type instanceof Type_1.AliasType) {
574
- return this.isUnclearType(type.getOriginalType());
575
- }
576
- else if (type instanceof TypeExpr_1.KeyofTypeExpr) {
577
- return this.isUnclearType(type.getOpType());
578
- }
579
- else if (type instanceof TypeExpr_1.TypeQueryExpr) {
580
- return this.isUnclearType(type.getType());
581
- }
582
- return false;
565
+ // Thin delegate to the polymorphic Type.isUnclear() — the cpp-specific instanceof chain (including the PointerType/ReferenceType recursion,
566
+ // now owned by those classes) has converged with the core semantics. The unified implementation checks TypeQueryExpr.generateTypes
567
+ // (intentional convergence with core semantics).
568
+ return type === null || type === undefined ? true : type.isUnclear();
583
569
  }
584
570
  /**
585
571
  * This is the temporal function to check Type recursively and can be removed after typeInfer supports multiple candidate types.
@@ -870,7 +856,7 @@ class TypeInference {
870
856
  const types = Array.from(typeMap.values());
871
857
  let returnType = types.length === 1 ? types[0] : new Type_1.UnionType(types);
872
858
  if (arkMethod.containsModifier(ArkBaseModel_1.ModifierType.ASYNC)) {
873
- const promise = arkMethod.getDeclaringArkFile().getScene().getSdkGlobal(TSConst_1.PROMISE);
859
+ const promise = SdkUtils_1.SdkUtils.getSdkGlobal(TSConst_1.PROMISE);
874
860
  if (promise instanceof ArkClass_1.ArkClass) {
875
861
  returnType = new Type_1.ClassType(promise.getSignature(), [returnType]);
876
862
  }
@@ -990,7 +976,8 @@ class TypeInference {
990
976
  }
991
977
  if (typeWithoutPtrOrRef instanceof Type_1.ClassType) {
992
978
  if (fieldName === Builtin_1.Builtin.ITERATOR_RESULT_VALUE &&
993
- typeWithoutPtrOrRef.getClassSignature().getDeclaringFileSignature().getProjectName() === Builtin_1.Builtin.DUMMY_PROJECT_NAME) {
979
+ typeWithoutPtrOrRef.getClassSigID() === -1 &&
980
+ typeWithoutPtrOrRef.getClassSignature().getClassName() === Builtin_2.BuiltinCxx.ITERATOR_RESULT) {
994
981
  const types = typeWithoutPtrOrRef.getRealGenericTypes();
995
982
  if (types && types.length > 0) {
996
983
  return [null, types[0]];
@@ -1072,7 +1059,7 @@ class TypeInference {
1072
1059
  return enumValueType;
1073
1060
  }
1074
1061
  static inferArrayFieldType(declareClass, fieldName) {
1075
- const arrayClass = declareClass.getDeclaringArkFile().getScene().getSdkGlobal(Builtin_1.Builtin.ARRAY);
1062
+ const arrayClass = SdkUtils_1.SdkUtils.getSdkGlobal(Builtin_1.Builtin.ARRAY);
1076
1063
  if (arrayClass instanceof ArkClass_1.ArkClass) {
1077
1064
  const property = ModelUtils_2.CxxModelUtils.findPropertyInClass(fieldName, arrayClass);
1078
1065
  if (property instanceof ArkField_1.ArkField) {
@@ -1098,7 +1085,7 @@ class TypeInference {
1098
1085
  }
1099
1086
  let arkExport = (_b = ModelUtils_2.CxxModelUtils.findSymbolInFileWithName(baseName, arkClass)) !== null && _b !== void 0 ? _b : ModelUtils_2.CxxModelUtils.getArkExportInImportInfoWithName(baseName, arkClass.getDeclaringArkFile(), arkClass);
1100
1087
  if (!arkExport && !arkClass.getDeclaringArkFile().getImportInfoBy(baseName)) {
1101
- arkExport = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(baseName);
1088
+ arkExport = SdkUtils_1.SdkUtils.getSdkGlobal(baseName);
1102
1089
  }
1103
1090
  return this.parseArkExport2Type(arkExport);
1104
1091
  }
@@ -1116,7 +1103,7 @@ class TypeInference {
1116
1103
  //if not found or local in built-in then look up global in sdks
1117
1104
  if ((!arkExport || (arkExport instanceof Local_1.Local && declaredArkFile.getProjectName() === SdkUtils_1.SdkUtils.BUILT_IN_NAME)) &&
1118
1105
  !declaredArkFile.getImportInfoBy(typeName)) {
1119
- const globalVal = arkClass.getDeclaringArkFile().getScene().getSdkGlobal(typeName);
1106
+ const globalVal = SdkUtils_1.SdkUtils.getSdkGlobal(typeName);
1120
1107
  if (globalVal) {
1121
1108
  arkExport = globalVal;
1122
1109
  }
@@ -1332,14 +1319,17 @@ class TypeInference {
1332
1319
  return null;
1333
1320
  }
1334
1321
  static inferNestedClassType(declareClass, baseType, fieldName) {
1335
- var _a;
1336
1322
  const arkClass = declareClass.getDeclaringArkFile().getScene().getClass(baseType.getClassSignature());
1337
1323
  if (!arkClass) {
1338
1324
  return null;
1339
1325
  }
1340
- const declScope = (_a = arkClass.getDeclaringArkNamespace()) !== null && _a !== void 0 ? _a : arkClass.getDeclaringArkFile();
1326
+ // 嵌套类以完整存储名 'field$Outer' 挂在 baseType 类的声明作用域顶层,
1327
+ // 拼归属签名直查(查询名含 $,原前缀模糊匹配本就不可命中,精确等价)
1341
1328
  const nestedClassName = fieldName + Const_1.NAME_DELIMITER + baseType.getClassSignature().getClassName();
1342
- const nestedClass = declScope.getClassWithName(nestedClassName);
1329
+ const declNamespace = arkClass.getDeclaringArkNamespace();
1330
+ const nestedClass = declNamespace
1331
+ ? declNamespace.getClass(new ArkSignature_1.ClassSignature(nestedClassName, declNamespace.getDeclaringFileID(), declNamespace.getNamespaceSigID()))
1332
+ : arkClass.getDeclaringArkFile().getClass(new ArkSignature_1.ClassSignature(nestedClassName, arkClass.getDeclaringArkFile().getFileSigID()));
1343
1333
  if (!nestedClass) {
1344
1334
  return null;
1345
1335
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.CfgBuilder = exports.TryStatementBuilder = exports.SwitchStatementBuilder = exports.StatementBuilder = exports.Case = exports.BlockBuilder = void 0;
18
18
  const Local_1 = require("../../../../core/base/Local");
19
+ const SdkUtils_1 = require("../../../../core/common/SdkUtils");
19
20
  const Stmt_1 = require("../../../../core/base/Stmt");
20
21
  const BasicBlock_1 = require("../../../../core/graph/BasicBlock");
21
22
  const Cfg_1 = require("../../../../core/graph/Cfg");
@@ -1406,7 +1407,7 @@ class CfgBuilder {
1406
1407
  }
1407
1408
  if (this.declaringMethod.getSubSignature().getReturnType() instanceof Type_1.UnknownType && !this.declaringMethod.getAsteriskToken()) {
1408
1409
  if (this.declaringMethod.containsModifier(ArkBaseModel_1.ModifierType.ASYNC)) {
1409
- const promise = this.declaringMethod.getDeclaringArkFile().getScene().getSdkGlobal(TSConst_1.PROMISE);
1410
+ const promise = SdkUtils_1.SdkUtils.getSdkGlobal(TSConst_1.PROMISE);
1410
1411
  if (promise instanceof ArkClass_1.ArkClass) {
1411
1412
  this.declaringMethod.getSubSignature().setReturnType(new Type_1.ClassType(promise.getSignature()));
1412
1413
  }
@@ -23,6 +23,6 @@ export declare class CxxMethodInference extends MethodInference {
23
23
  }
24
24
  export declare class CxxStmtInference extends StmtInference {
25
25
  constructor(valueInferences: ValueInference<Value>[]);
26
- typeSpread(stmt: Stmt, method: ArkMethod): Set<Stmt>;
26
+ typeSpread(stmt: Stmt, method: ArkMethod): Stmt[] | undefined;
27
27
  }
28
28
  //# sourceMappingURL=CxxModelInference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CxxModelInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/inference/CxxModelInference.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5I,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAA0B,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEvE,qBAAa,gBAAiB,SAAQ,aAAa;IAC/C,OAAO,CAAC,uBAAuB,CAAc;IAEtC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;CASvC;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB;IAChD,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAIpC,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;CAGxD;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IAC1C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAY5C;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAiB9C;AAED,qBAAa,gBAAiB,SAAQ,aAAa;gBACnC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE;IAI7C,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;CAS9D"}
1
+ {"version":3,"file":"CxxModelInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/inference/CxxModelInference.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5I,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAA0B,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEvE,qBAAa,gBAAiB,SAAQ,aAAa;IAC/C,OAAO,CAAC,uBAAuB,CAAc;IAEtC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;CASvC;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB;IAChD,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAIpC,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;CAGxD;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IAC1C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAY5C;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAiB9C;AAED,qBAAa,gBAAiB,SAAQ,aAAa;gBACnC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE;IAI7C,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,SAAS;CASvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"CxxValueInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/inference/CxxValueInference.ts"],"names":[],"mappings":"AAeA,OAAO,EAAuB,UAAU,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAWxH,qBAAa,oBAAqB,SAAQ,iBAAiB;IAChD,YAAY,IAAI,MAAM;IAItB,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS;CAY1E;AAED,qBAAa,8BAA+B,SAAQ,2BAA2B;IACpE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;IAO5D,KAAK,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS;CAwB5E;AAED,qBAAa,sBAAuB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAC3D,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAIpC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS;CA4BjE;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAM/D"}
1
+ {"version":3,"file":"CxxValueInference.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/inference/CxxValueInference.ts"],"names":[],"mappings":"AAeA,OAAO,EAAuB,UAAU,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAaxH,qBAAa,oBAAqB,SAAQ,iBAAiB;IAChD,YAAY,IAAI,MAAM;IAItB,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS;CA4C1E;AAED,qBAAa,8BAA+B,SAAQ,2BAA2B;IACpE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;IAO5D,KAAK,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS;CAwB5E;AAED,qBAAa,sBAAuB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAC3D,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAIpC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS;CA4BjE;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAM/D"}
@@ -24,6 +24,8 @@ const IRInference_1 = require("../../../core/common/IRInference");
24
24
  const ModelUtils_1 = require("../../../core/common/ModelUtils");
25
25
  const TypeInference_1 = require("../../../core/common/TypeInference");
26
26
  const Local_1 = require("../../../core/base/Local");
27
+ const ArkSignature_1 = require("../../../core/model/ArkSignature");
28
+ const SignatureCanonicalizerRegistry_1 = require("../../../core/common/SignatureCanonicalizerRegistry");
27
29
  const TypeInference_2 = require("../common/TypeInference");
28
30
  const IRInference_2 = require("../common/IRInference");
29
31
  const ModelUtils_2 = require("../common/ModelUtils");
@@ -33,13 +35,47 @@ class CxxFieldRefInference extends ValueInference_1.FieldRefInference {
33
35
  return 'ArkCxxInstanceFieldRef';
34
36
  }
35
37
  infer(value, stmt) {
38
+ var _a;
36
39
  const baseType = TypeInference_2.TypeInference.replaceAliasType(value.getBase().getType());
37
40
  const arkMethod = stmt.getCfg().getDeclaringMethod();
38
- const newFieldSignature = IRInference_2.IRInference.generateNewFieldSignature(value, arkMethod.getDeclaringArkClass(), baseType);
39
- if (newFieldSignature) {
40
- value.setFieldSignature(newFieldSignature);
41
- if (newFieldSignature.isStatic()) {
42
- return new Ref_1.ArkStaticFieldRef(newFieldSignature);
41
+ // 判别联合消费——保持原语义顺序(先更新 value 再判 static)。
42
+ const resolution = IRInference_2.IRInference.generateNewFieldSignature(value, arkMethod.getDeclaringArkClass(), baseType);
43
+ if (resolution === null) {
44
+ return undefined;
45
+ }
46
+ if (resolution.kind === 'formal') {
47
+ const formalId = (_a = resolution.formalId) !== null && _a !== void 0 ? _a : 0;
48
+ if (formalId > 0) {
49
+ value.graduateToFormal(formalId);
50
+ if (resolution.staticFlag) {
51
+ // 替换埋葬:graduateToFormal 已 retire(formal 分支本就正确)——此处返回的 static ref 产物为 canonical。
52
+ const canonical = SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance().fieldSigCanonicalizer.get(formalId);
53
+ return new Ref_1.ArkStaticFieldRef(canonical);
54
+ }
55
+ }
56
+ return undefined;
57
+ }
58
+ const params = resolution;
59
+ value.updateFieldSignature(params.fieldName, params.declaringOrID, params.type, params.staticFlag, params.namespaceDeclared);
60
+ if (params.staticFlag) {
61
+ let staticSig;
62
+ if (typeof params.declaringOrID === 'number') {
63
+ staticSig = params.namespaceDeclared
64
+ ? new ArkSignature_1.FieldSignature(params.fieldName, params.declaringOrID, params.type, params.staticFlag, true)
65
+ : new ArkSignature_1.FieldSignature(params.fieldName, params.declaringOrID, params.type, params.staticFlag);
66
+ }
67
+ else {
68
+ staticSig = new ArkSignature_1.FieldSignature(params.fieldName, params.declaringOrID, params.type, params.staticFlag);
69
+ }
70
+ // probe:miss 时 params 携带值空间成员(ns 导出的 class/enum 等,字段
71
+ // 空间无 formal 归宿)——转换会走 clear+miss error 路由并多占一个
72
+ // slot;miss 保持 update 就地演进后的 value(不 retire、不转换)。
73
+ if (SignatureCanonicalizerRegistry_1.SignatureCanonicalizerRegistry.getInstance().fieldSigCanonicalizer.getExistingId(staticSig) !== -1) {
74
+ // 替换埋葬:static params 形态——value 的 temp 行已被 update
75
+ // (就地演进保持),但 value 即将被返回的 static ref 替换(IR 层
76
+ // 替换)——纯 retire(params 值非 formal,无归宿记录)。
77
+ value.retireTemp();
78
+ return new Ref_1.ArkStaticFieldRef(staticSig);
43
79
  }
44
80
  }
45
81
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ArkClassBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkClassBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAwC,MAAM,iCAAiC,CAAC;AAUjG,OAAO,EACH,UAAU,EAOb,MAAM,2BAA2B,CAAC;AAenC,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAOnJ;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EACpD,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAK7G;AAED,wBAAgB,mCAAmC,CAC/C,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GACjC,IAAI,CAMN;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAwBtI;AA+PD,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAInH"}
1
+ {"version":3,"file":"ArkClassBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/frontend/cppFrontend/model/builder/ArkClassBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAwC,MAAM,iCAAiC,CAAC;AAUjG,OAAO,EAAE,UAAU,EAAgF,MAAM,2BAA2B,CAAC;AAerI,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAOnJ;AAED,wBAAgB,8BAA8B,CAC1C,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GACjC,IAAI,CAIN;AAED,wBAAgB,mCAAmC,CAC/C,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GACjC,IAAI,CAIN;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAwBtI;AAkPD,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAGnH"}