arkanalyzer 1.0.85 → 1.0.87

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 (400) hide show
  1. package/README.en.md +69 -65
  2. package/README.md +56 -70
  3. package/config/arkanalyzer.json +7 -2
  4. package/docs/cppFrontend/ArkAnalyzer-cpp_usage_guide.md +245 -0
  5. package/docs/cppFrontend/cpp_frontend_build_guide.md +126 -0
  6. package/docs/cppFrontend/cpp_frontend_user_guide.md +175 -0
  7. package/docs/cppFrontend/img.png +0 -0
  8. package/docs/cppFrontend/img_1.png +0 -0
  9. package/docs/cppFrontend/img_10.png +0 -0
  10. package/docs/cppFrontend/img_11.png +0 -0
  11. package/docs/cppFrontend/img_12.png +0 -0
  12. package/docs/cppFrontend/img_13.png +0 -0
  13. package/docs/cppFrontend/img_14.png +0 -0
  14. package/docs/cppFrontend/img_15.png +0 -0
  15. package/docs/cppFrontend/img_16.png +0 -0
  16. package/docs/cppFrontend/img_17.png +0 -0
  17. package/docs/cppFrontend/img_18.png +0 -0
  18. package/docs/cppFrontend/img_19.png +0 -0
  19. package/docs/cppFrontend/img_2.png +0 -0
  20. package/docs/cppFrontend/img_20.png +0 -0
  21. package/docs/cppFrontend/img_21.png +0 -0
  22. package/docs/cppFrontend/img_22.png +0 -0
  23. package/docs/cppFrontend/img_23.png +0 -0
  24. package/docs/cppFrontend/img_3.png +0 -0
  25. package/docs/cppFrontend/img_4.png +0 -0
  26. package/docs/cppFrontend/img_5.png +0 -0
  27. package/docs/cppFrontend/img_6.png +0 -0
  28. package/docs/cppFrontend/img_7.png +0 -0
  29. package/docs/cppFrontend/img_8.png +0 -0
  30. package/docs/cppFrontend/img_9.png +0 -0
  31. package/docs/sig_programanalysis.en.md +66 -0
  32. package/docs/sig_programanalysis.md +73 -0
  33. package/lib/Config.d.ts +32 -1
  34. package/lib/Config.d.ts.map +1 -1
  35. package/lib/Config.js +76 -2
  36. package/lib/Scene.d.ts +25 -2
  37. package/lib/Scene.d.ts.map +1 -1
  38. package/lib/Scene.js +148 -40
  39. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +4 -3
  40. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  41. package/lib/callgraph/algorithm/AbstractAnalysis.js +17 -17
  42. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +6 -1
  43. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  44. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +117 -14
  45. package/lib/callgraph/common/Statistics.d.ts +4 -2
  46. package/lib/callgraph/common/Statistics.d.ts.map +1 -1
  47. package/lib/callgraph/common/Statistics.js +14 -2
  48. package/lib/callgraph/model/CallGraph.d.ts +12 -8
  49. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  50. package/lib/callgraph/model/CallGraph.js +53 -29
  51. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +1 -0
  52. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
  53. package/lib/callgraph/model/builder/CallGraphBuilder.js +5 -1
  54. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  55. package/lib/callgraph/pointerAnalysis/Pag.js +3 -0
  56. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +4 -2
  57. package/lib/cli/cli.d.ts +3 -0
  58. package/lib/cli/cli.d.ts.map +1 -0
  59. package/lib/cli/cli.js +82 -0
  60. package/lib/cli/commands/cg.d.ts +32 -0
  61. package/lib/cli/commands/cg.d.ts.map +1 -0
  62. package/lib/cli/commands/cg.js +401 -0
  63. package/lib/cli/commands/index.d.ts +6 -0
  64. package/lib/cli/commands/index.d.ts.map +1 -0
  65. package/lib/cli/commands/index.js +64 -0
  66. package/lib/cli/commands/ir.d.ts +26 -0
  67. package/lib/cli/commands/ir.d.ts.map +1 -0
  68. package/lib/cli/commands/ir.js +94 -0
  69. package/lib/core/base/Constant.d.ts +1 -1
  70. package/lib/core/base/Constant.d.ts.map +1 -1
  71. package/lib/core/base/Constant.js +1 -1
  72. package/lib/core/base/Expr.d.ts +29 -5
  73. package/lib/core/base/Expr.d.ts.map +1 -1
  74. package/lib/core/base/Expr.js +144 -22
  75. package/lib/core/base/Position.d.ts +14 -0
  76. package/lib/core/base/Position.d.ts.map +1 -1
  77. package/lib/core/base/Position.js +27 -0
  78. package/lib/core/base/Ref.d.ts +1 -0
  79. package/lib/core/base/Ref.d.ts.map +1 -1
  80. package/lib/core/base/Ref.js +4 -1
  81. package/lib/core/base/Type.d.ts +64 -24
  82. package/lib/core/base/Type.d.ts.map +1 -1
  83. package/lib/core/base/Type.js +144 -49
  84. package/lib/core/common/ArkError.d.ts +26 -2
  85. package/lib/core/common/ArkError.d.ts.map +1 -1
  86. package/lib/core/common/ArkError.js +56 -2
  87. package/lib/core/common/ArkIRTransformer.d.ts +11 -10
  88. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  89. package/lib/core/common/ArkIRTransformer.js +1 -1
  90. package/lib/core/common/ArkValueTransformer.d.ts +14 -12
  91. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  92. package/lib/core/common/ArkValueTransformer.js +1 -5
  93. package/lib/core/common/Const.d.ts +3 -0
  94. package/lib/core/common/Const.d.ts.map +1 -1
  95. package/lib/core/common/Const.js +4 -1
  96. package/lib/core/common/DummyMainCreater.d.ts +23 -13
  97. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  98. package/lib/core/common/DummyMainCreater.js +66 -43
  99. package/lib/core/common/EtsConst.d.ts +11 -0
  100. package/lib/core/common/EtsConst.d.ts.map +1 -1
  101. package/lib/core/common/EtsConst.js +12 -1
  102. package/lib/core/common/IRInference.d.ts.map +1 -1
  103. package/lib/core/common/IRInference.js +5 -1
  104. package/lib/core/common/ModelUtils.d.ts +4 -7
  105. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  106. package/lib/core/common/ModelUtils.js +77 -110
  107. package/lib/core/common/SdkUtils.d.ts +1 -1
  108. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  109. package/lib/core/common/SdkUtils.js +14 -5
  110. package/lib/core/common/TypeInference.d.ts.map +1 -1
  111. package/lib/core/common/TypeInference.js +9 -3
  112. package/lib/core/graph/BaseExplicitGraph.d.ts +4 -4
  113. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  114. package/lib/core/graph/BaseExplicitGraph.js +15 -8
  115. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  116. package/lib/core/graph/Scc.d.ts.map +1 -1
  117. package/lib/core/graph/Scc.js +7 -2
  118. package/lib/core/graph/builder/CfgBuilder.d.ts +10 -7
  119. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  120. package/lib/core/graph/builder/CfgBuilder.js +12 -5
  121. package/lib/core/inference/Inference.d.ts.map +1 -1
  122. package/lib/core/inference/Inference.js +7 -0
  123. package/lib/core/inference/ModelInference.d.ts +1 -1
  124. package/lib/core/inference/ModelInference.d.ts.map +1 -1
  125. package/lib/core/inference/ValueInference.d.ts +3 -2
  126. package/lib/core/inference/ValueInference.d.ts.map +1 -1
  127. package/lib/core/inference/ValueInference.js +64 -12
  128. package/lib/core/inference/abc/AbcInference.d.ts +28 -2
  129. package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
  130. package/lib/core/inference/abc/AbcInference.js +105 -4
  131. package/lib/core/model/ArkBaseModel.d.ts +14 -1
  132. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  133. package/lib/core/model/ArkBaseModel.js +61 -2
  134. package/lib/core/model/ArkBody.d.ts.map +1 -1
  135. package/lib/core/model/ArkBody.js +1 -3
  136. package/lib/core/model/ArkClass.d.ts +22 -2
  137. package/lib/core/model/ArkClass.d.ts.map +1 -1
  138. package/lib/core/model/ArkClass.js +59 -28
  139. package/lib/core/model/ArkField.d.ts.map +1 -1
  140. package/lib/core/model/ArkField.js +3 -1
  141. package/lib/core/model/ArkFile.d.ts +4 -1
  142. package/lib/core/model/ArkFile.d.ts.map +1 -1
  143. package/lib/core/model/ArkFile.js +44 -3
  144. package/lib/core/model/ArkImport.d.ts.map +1 -1
  145. package/lib/core/model/ArkImport.js +9 -1
  146. package/lib/core/model/ArkMethod.d.ts +5 -0
  147. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  148. package/lib/core/model/ArkMethod.js +33 -1
  149. package/lib/core/model/ArkNamespace.d.ts +2 -0
  150. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  151. package/lib/core/model/ArkNamespace.js +11 -0
  152. package/lib/core/model/ArkSignature.d.ts +3 -3
  153. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  154. package/lib/core/model/ArkSignature.js +14 -9
  155. package/lib/core/model/builder/ArkClassBuilder.d.ts +2 -0
  156. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  157. package/lib/core/model/builder/ArkClassBuilder.js +3 -3
  158. package/lib/core/model/builder/ArkMethodBuilder.d.ts +4 -1
  159. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  160. package/lib/core/model/builder/ArkMethodBuilder.js +19 -6
  161. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +1 -0
  162. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  163. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -1
  164. package/lib/core/model/builder/BodyBuilder.d.ts +4 -0
  165. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
  166. package/lib/core/model/builder/builderUtils.d.ts +1 -0
  167. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  168. package/lib/core/model/builder/builderUtils.js +7 -3
  169. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts +296 -0
  170. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts.map +1 -0
  171. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.js +145 -0
  172. package/lib/frontend/cppFrontend/ast/astUtils.d.ts +51 -0
  173. package/lib/frontend/cppFrontend/ast/astUtils.d.ts.map +1 -0
  174. package/lib/frontend/cppFrontend/ast/astUtils.js +470 -0
  175. package/lib/frontend/cppFrontend/ast/const.d.ts +30 -0
  176. package/lib/frontend/cppFrontend/ast/const.d.ts.map +1 -0
  177. package/lib/frontend/cppFrontend/ast/const.js +134 -0
  178. package/lib/frontend/cppFrontend/base/Constant.d.ts +9 -0
  179. package/lib/frontend/cppFrontend/base/Constant.d.ts.map +1 -0
  180. package/lib/frontend/cppFrontend/base/Constant.js +33 -0
  181. package/lib/frontend/cppFrontend/base/Expr.d.ts +174 -0
  182. package/lib/frontend/cppFrontend/base/Expr.d.ts.map +1 -0
  183. package/lib/frontend/cppFrontend/base/Expr.js +530 -0
  184. package/lib/frontend/cppFrontend/base/Ref.d.ts +25 -0
  185. package/lib/frontend/cppFrontend/base/Ref.d.ts.map +1 -0
  186. package/lib/frontend/cppFrontend/base/Ref.js +53 -0
  187. package/lib/frontend/cppFrontend/base/Trap.d.ts +8 -0
  188. package/lib/frontend/cppFrontend/base/Trap.d.ts.map +1 -0
  189. package/lib/frontend/cppFrontend/base/Trap.js +28 -0
  190. package/lib/frontend/cppFrontend/base/Type.d.ts +264 -0
  191. package/lib/frontend/cppFrontend/base/Type.d.ts.map +1 -0
  192. package/lib/frontend/cppFrontend/base/Type.js +600 -0
  193. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts +109 -0
  194. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -0
  195. package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +925 -0
  196. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +477 -0
  197. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -0
  198. package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +2746 -0
  199. package/lib/frontend/cppFrontend/common/Builtin.d.ts +57 -0
  200. package/lib/frontend/cppFrontend/common/Builtin.d.ts.map +1 -0
  201. package/lib/frontend/cppFrontend/common/Builtin.js +106 -0
  202. package/lib/frontend/cppFrontend/common/IRInference.d.ts +94 -0
  203. package/lib/frontend/cppFrontend/common/IRInference.d.ts.map +1 -0
  204. package/lib/frontend/cppFrontend/common/IRInference.js +1087 -0
  205. package/lib/frontend/cppFrontend/common/IRUtils.d.ts +23 -0
  206. package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -0
  207. package/lib/frontend/cppFrontend/common/IRUtils.js +168 -0
  208. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts +44 -0
  209. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts.map +1 -0
  210. package/lib/frontend/cppFrontend/common/ModelUtils.js +567 -0
  211. package/lib/frontend/cppFrontend/common/TypeInference.d.ts +278 -0
  212. package/lib/frontend/cppFrontend/common/TypeInference.d.ts.map +1 -0
  213. package/lib/frontend/cppFrontend/common/TypeInference.js +1354 -0
  214. package/lib/frontend/cppFrontend/common/ValueUtil.d.ts +16 -0
  215. package/lib/frontend/cppFrontend/common/ValueUtil.d.ts.map +1 -0
  216. package/lib/frontend/cppFrontend/common/ValueUtil.js +61 -0
  217. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts +182 -0
  218. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -0
  219. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +1435 -0
  220. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts +21 -0
  221. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts.map +1 -0
  222. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.js +303 -0
  223. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts +15 -0
  224. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts.map +1 -0
  225. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.js +161 -0
  226. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts +21 -0
  227. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts.map +1 -0
  228. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.js +261 -0
  229. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts +12 -0
  230. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts.map +1 -0
  231. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.js +155 -0
  232. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts +29 -0
  233. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts.map +1 -0
  234. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.js +302 -0
  235. package/lib/frontend/cppFrontend/inference/CxxInference.d.ts +10 -0
  236. package/lib/frontend/cppFrontend/inference/CxxInference.d.ts.map +1 -0
  237. package/lib/frontend/cppFrontend/inference/CxxInference.js +41 -0
  238. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts +28 -0
  239. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts.map +1 -0
  240. package/lib/frontend/cppFrontend/inference/CxxModelInference.js +98 -0
  241. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts +20 -0
  242. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts.map +1 -0
  243. package/lib/frontend/cppFrontend/inference/CxxValueInference.js +128 -0
  244. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts +11 -0
  245. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -0
  246. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +413 -0
  247. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts +5 -0
  248. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -0
  249. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.js +61 -0
  250. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +17 -0
  251. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -0
  252. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +285 -0
  253. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts +6 -0
  254. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts.map +1 -0
  255. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.js +57 -0
  256. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts +14 -0
  257. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -0
  258. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +422 -0
  259. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +8 -0
  260. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -0
  261. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +194 -0
  262. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +59 -0
  263. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -0
  264. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.js +605 -0
  265. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts +46 -0
  266. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -0
  267. package/lib/frontend/cppFrontend/model/builder/builderUtils.js +499 -0
  268. package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts +44 -0
  269. package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts.map +1 -0
  270. package/lib/frontend/cppFrontend/utils/cmakeUtils.js +240 -0
  271. package/lib/index.d.ts +1 -0
  272. package/lib/index.d.ts.map +1 -1
  273. package/lib/index.js +7 -1
  274. package/lib/node_modules/ohos-typescript/.ohos-typescript-version +1 -0
  275. package/{node_modules → lib/node_modules}/ohos-typescript/package.json +2 -1
  276. package/lib/save/CGJsonPrinter.d.ts +8 -0
  277. package/lib/save/CGJsonPrinter.d.ts.map +1 -0
  278. package/lib/save/CGJsonPrinter.js +41 -0
  279. package/lib/save/GraphPrinter.js +2 -2
  280. package/lib/save/json/JsonDto.d.ts +86 -2
  281. package/lib/save/json/JsonDto.d.ts.map +1 -1
  282. package/lib/save/json/JsonSerialization.d.ts +1 -1
  283. package/lib/save/json/JsonSerialization.d.ts.map +1 -1
  284. package/lib/save/json/JsonSerialization.js +235 -145
  285. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  286. package/lib/save/source/SourceTransformer.js +0 -3
  287. package/lib/utils/CxxSceneUtils.d.ts +11 -0
  288. package/lib/utils/CxxSceneUtils.d.ts.map +1 -0
  289. package/lib/utils/CxxSceneUtils.js +178 -0
  290. package/lib/utils/FileUtils.d.ts +7 -8
  291. package/lib/utils/FileUtils.d.ts.map +1 -1
  292. package/lib/utils/FileUtils.js +27 -45
  293. package/lib/utils/LRUCacheDecorator.d.ts +20 -0
  294. package/lib/utils/LRUCacheDecorator.d.ts.map +1 -0
  295. package/lib/utils/LRUCacheDecorator.js +89 -0
  296. package/lib/utils/ModuleUtils.d.ts +39 -0
  297. package/lib/utils/ModuleUtils.d.ts.map +1 -0
  298. package/lib/utils/ModuleUtils.js +261 -0
  299. package/package.json +15 -12
  300. /package/{node_modules → lib/node_modules}/ohos-typescript/LICENSE +0 -0
  301. /package/{node_modules → lib/node_modules}/ohos-typescript/README.OpenSource +0 -0
  302. /package/{node_modules → lib/node_modules}/ohos-typescript/README.md +0 -0
  303. /package/{node_modules → lib/node_modules}/ohos-typescript/SECURITY.md +0 -0
  304. /package/{node_modules → lib/node_modules}/ohos-typescript/ThirdPartyNoticeText.txt +0 -0
  305. /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsc +0 -0
  306. /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsserver +0 -0
  307. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/README.md +0 -0
  308. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cancellationToken.js +0 -0
  309. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cs/diagnosticMessages.generated.json +0 -0
  310. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/de/diagnosticMessages.generated.json +0 -0
  311. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/es/diagnosticMessages.generated.json +0 -0
  312. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/fr/diagnosticMessages.generated.json +0 -0
  313. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/it/diagnosticMessages.generated.json +0 -0
  314. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ja/diagnosticMessages.generated.json +0 -0
  315. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ko/diagnosticMessages.generated.json +0 -0
  316. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.d.ts +0 -0
  317. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.d.ts +0 -0
  318. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.iterable.d.ts +0 -0
  319. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.collection.d.ts +0 -0
  320. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.core.d.ts +0 -0
  321. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.d.ts +0 -0
  322. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.generator.d.ts +0 -0
  323. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.iterable.d.ts +0 -0
  324. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.promise.d.ts +0 -0
  325. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.proxy.d.ts +0 -0
  326. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.reflect.d.ts +0 -0
  327. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.d.ts +0 -0
  328. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -0
  329. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.array.include.d.ts +0 -0
  330. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.d.ts +0 -0
  331. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.full.d.ts +0 -0
  332. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.d.ts +0 -0
  333. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.full.d.ts +0 -0
  334. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.intl.d.ts +0 -0
  335. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.object.d.ts +0 -0
  336. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.sharedmemory.d.ts +0 -0
  337. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.string.d.ts +0 -0
  338. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.typedarrays.d.ts +0 -0
  339. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -0
  340. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asynciterable.d.ts +0 -0
  341. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.d.ts +0 -0
  342. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.full.d.ts +0 -0
  343. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.intl.d.ts +0 -0
  344. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.promise.d.ts +0 -0
  345. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.regexp.d.ts +0 -0
  346. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.array.d.ts +0 -0
  347. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.d.ts +0 -0
  348. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.full.d.ts +0 -0
  349. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.intl.d.ts +0 -0
  350. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.object.d.ts +0 -0
  351. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.string.d.ts +0 -0
  352. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.symbol.d.ts +0 -0
  353. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.bigint.d.ts +0 -0
  354. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.d.ts +0 -0
  355. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.date.d.ts +0 -0
  356. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.full.d.ts +0 -0
  357. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.intl.d.ts +0 -0
  358. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.number.d.ts +0 -0
  359. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.promise.d.ts +0 -0
  360. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.sharedmemory.d.ts +0 -0
  361. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.string.d.ts +0 -0
  362. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -0
  363. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.d.ts +0 -0
  364. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.full.d.ts +0 -0
  365. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.intl.d.ts +0 -0
  366. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.promise.d.ts +0 -0
  367. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.string.d.ts +0 -0
  368. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.weakref.d.ts +0 -0
  369. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.array.d.ts +0 -0
  370. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.d.ts +0 -0
  371. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.error.d.ts +0 -0
  372. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.full.d.ts +0 -0
  373. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.intl.d.ts +0 -0
  374. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.object.d.ts +0 -0
  375. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.sharedmemory.d.ts +0 -0
  376. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.string.d.ts +0 -0
  377. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es5.d.ts +0 -0
  378. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es6.d.ts +0 -0
  379. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.d.ts +0 -0
  380. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.full.d.ts +0 -0
  381. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.intl.d.ts +0 -0
  382. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.scripthost.d.ts +0 -0
  383. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.d.ts +0 -0
  384. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.importscripts.d.ts +0 -0
  385. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.iterable.d.ts +0 -0
  386. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pl/diagnosticMessages.generated.json +0 -0
  387. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pt-br/diagnosticMessages.generated.json +0 -0
  388. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ru/diagnosticMessages.generated.json +0 -0
  389. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tr/diagnosticMessages.generated.json +0 -0
  390. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsc.js +0 -0
  391. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserver.js +0 -0
  392. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.d.ts +0 -0
  393. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.js +0 -0
  394. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typesMap.json +0 -0
  395. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.d.ts +0 -0
  396. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.js +0 -0
  397. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typingsInstaller.js +0 -0
  398. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/watchGuard.js +0 -0
  399. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -0
  400. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -0
@@ -0,0 +1,530 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ArkDesignatedInitExpr = exports.ArkAggregateExpr = exports.ArkAllocExpr = exports.ArkCxxNormalBinOpExpr = exports.ArkCxxFolderExpr = exports.ArkNoExpectExpr = exports.ArkTypeIdExpr = exports.ArkArrayTypeTraitExpr = exports.ArkCxxCastExpr = exports.ArkCxxUnaryExpr = exports.Operator = exports.ArkCxxInitArrayExpr = exports.ArkCxxNewArrayExpr = exports.ArkCxxDeleteArrayExpr = void 0;
18
+ const Expr_1 = require("../../../core/base/Expr");
19
+ const Type_1 = require("../../../core/base/Type");
20
+ const Ref_1 = require("../../../core/base/Ref");
21
+ const Type_2 = require("./Type");
22
+ const TypeInference_1 = require("../../../core/common/TypeInference");
23
+ const Const_1 = require("../../../core/common/Const");
24
+ const ModelUtils_1 = require("../../../core/common/ModelUtils");
25
+ const Local_1 = require("../../../core/base/Local");
26
+ const ArkClass_1 = require("../../../core/model/ArkClass");
27
+ /**
28
+ * delete[] expression in C++
29
+ * 1. c++: delete[] a / delete[] a.b / delete[] a->b
30
+ */
31
+ class ArkCxxDeleteArrayExpr extends Expr_1.AbstractExpr {
32
+ constructor(field) {
33
+ super();
34
+ this.field = field;
35
+ }
36
+ getField() {
37
+ return this.field;
38
+ }
39
+ setField(newField) {
40
+ this.field = newField;
41
+ }
42
+ getType() {
43
+ return Type_1.BooleanType.getInstance();
44
+ }
45
+ getUses() {
46
+ const uses = [];
47
+ uses.push(this.field);
48
+ uses.push(...this.field.getUses());
49
+ return uses;
50
+ }
51
+ toString() {
52
+ return 'delete[] ' + this.field;
53
+ }
54
+ }
55
+ exports.ArkCxxDeleteArrayExpr = ArkCxxDeleteArrayExpr;
56
+ // Expression when creating a new array
57
+ class ArkCxxNewArrayExpr extends Expr_1.AbstractExpr {
58
+ constructor(baseType, size, fromLiteral = false, elementsNumber) {
59
+ super();
60
+ this.elementsNumber = 0; // The total number of elements contained in the array
61
+ this.baseType = baseType;
62
+ this.size = size;
63
+ this.fromLiteral = fromLiteral;
64
+ if (elementsNumber) {
65
+ this.elementsNumber = elementsNumber;
66
+ }
67
+ }
68
+ getElementsNumber() {
69
+ return this.elementsNumber;
70
+ }
71
+ setElementsNumber(elementsNumber) {
72
+ this.elementsNumber = elementsNumber;
73
+ }
74
+ getSize() {
75
+ return this.size;
76
+ }
77
+ setSize(newSize) {
78
+ this.size = newSize;
79
+ }
80
+ getType() {
81
+ return new Type_1.ArrayType(this.baseType, 1);
82
+ }
83
+ getBaseType() {
84
+ return this.baseType;
85
+ }
86
+ setBaseType(newType) {
87
+ this.baseType = newType;
88
+ }
89
+ isFromLiteral() {
90
+ return this.fromLiteral;
91
+ }
92
+ inferType(arkMethod) {
93
+ const type = TypeInference_1.TypeInference.inferUnclearedType(this.baseType, arkMethod.getDeclaringArkClass());
94
+ if (type) {
95
+ this.baseType = type;
96
+ }
97
+ return this;
98
+ }
99
+ getUses() {
100
+ let uses = [this.size];
101
+ uses.push(...this.size.getUses());
102
+ return uses;
103
+ }
104
+ toString() {
105
+ return 'newarray (' + this.baseType + ')';
106
+ }
107
+ }
108
+ exports.ArkCxxNewArrayExpr = ArkCxxNewArrayExpr;
109
+ // Array 0 initialization expression
110
+ class ArkCxxInitArrayExpr extends Expr_1.AbstractExpr {
111
+ constructor(op) {
112
+ super();
113
+ this.op = op;
114
+ }
115
+ getOp() {
116
+ return this.op;
117
+ }
118
+ setOp(newOp) {
119
+ this.op = newOp;
120
+ }
121
+ getUses() {
122
+ let uses = [];
123
+ uses.push(this.op);
124
+ uses.push(...this.op.getUses());
125
+ return uses;
126
+ }
127
+ getType() {
128
+ return this.op.getType();
129
+ }
130
+ toString() {
131
+ return 'initArrayWith(' + this.op + ')';
132
+ }
133
+ inferType(arkMethod) {
134
+ if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
135
+ this.op.inferType(arkMethod);
136
+ }
137
+ return this;
138
+ }
139
+ }
140
+ exports.ArkCxxInitArrayExpr = ArkCxxInitArrayExpr;
141
+ var Operator;
142
+ (function (Operator) {
143
+ Operator["sizeof"] = "sizeof";
144
+ Operator["alignof"] = "alignof";
145
+ Operator["Unknown"] = "Unknown";
146
+ })(Operator = exports.Operator || (exports.Operator = {}));
147
+ // expression with either a type or (unevaluated) expression operand.
148
+ // Used for sizeof/alignof (C99 6.5.3.4) and vec_step (OpenCL 1.1 6.11.12).
149
+ class ArkCxxUnaryExpr extends Expr_1.AbstractExpr {
150
+ constructor(operator, op) {
151
+ super();
152
+ this.operator = operator;
153
+ this.op = op;
154
+ }
155
+ getOp() {
156
+ return this.op;
157
+ }
158
+ setOp(newOp) {
159
+ this.op = newOp;
160
+ }
161
+ getOperator() {
162
+ return this.operator;
163
+ }
164
+ getUses() {
165
+ let uses = [];
166
+ if (!(this.op instanceof Type_1.Type)) {
167
+ uses.push(this.op);
168
+ uses.push(...this.op.getUses());
169
+ }
170
+ return uses;
171
+ }
172
+ getOpType() {
173
+ if (this.op instanceof Type_1.Type) {
174
+ return this.op;
175
+ }
176
+ return this.op.getType();
177
+ }
178
+ getType() {
179
+ return Type_2.CxxSizeTType.getInstance(Type_2.CxxTypeSigned.UNSIGNED, Type_2.CxxTypeBitWidth.UNKNOWN, Type_2.CxxStdTypeName.SIZE_T);
180
+ }
181
+ toString() {
182
+ return this.operator + '(' + this.op + ')';
183
+ }
184
+ inferType(arkMethod) {
185
+ if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
186
+ this.op.inferType(arkMethod);
187
+ }
188
+ return this;
189
+ }
190
+ }
191
+ exports.ArkCxxUnaryExpr = ArkCxxUnaryExpr;
192
+ // Type conversion expression
193
+ class ArkCxxCastExpr extends Expr_1.ArkCastExpr {
194
+ constructor(op, type, cxxCastType) {
195
+ super(op, type);
196
+ this.cxxCastType = cxxCastType;
197
+ }
198
+ getCxxCastType() {
199
+ return this.cxxCastType;
200
+ }
201
+ toString() {
202
+ return `<${this.cxxCastType}: ${this.getType()}>${this.getOp()}`;
203
+ }
204
+ inferType(arkMethod) {
205
+ let op = this.getOp();
206
+ if (op instanceof Ref_1.AbstractRef || op instanceof Expr_1.AbstractExpr) {
207
+ op.inferType(arkMethod);
208
+ }
209
+ return this;
210
+ }
211
+ }
212
+ exports.ArkCxxCastExpr = ArkCxxCastExpr;
213
+ // __array_extent expression,the inner of node is DeclRefExpr or several IntegerLiteral
214
+ class ArkArrayTypeTraitExpr extends Expr_1.AbstractExpr {
215
+ constructor(dimensionSizes = [], op) {
216
+ super();
217
+ this.op = op || null;
218
+ this.dimensionSizes = dimensionSizes;
219
+ }
220
+ getOp() {
221
+ return this.op;
222
+ }
223
+ setOp(newOp) {
224
+ this.op = newOp;
225
+ }
226
+ getUses() {
227
+ let uses = [];
228
+ if (this.op) {
229
+ uses.push(this.op);
230
+ uses.push(...this.op.getUses());
231
+ }
232
+ return uses;
233
+ }
234
+ getDimensionOrder() {
235
+ return this.dimensionSizes;
236
+ }
237
+ setDimensionOrder(dimensionOrder) {
238
+ this.dimensionSizes = dimensionOrder;
239
+ }
240
+ getOpType() {
241
+ if (this.op) {
242
+ return this.op.getType();
243
+ }
244
+ return null;
245
+ }
246
+ getType() {
247
+ return Type_2.CxxSizeTType.getInstance(Type_2.CxxTypeSigned.UNSIGNED, Type_2.CxxTypeBitWidth.UNKNOWN, Type_2.CxxStdTypeName.SIZE_T);
248
+ }
249
+ toString() {
250
+ if (this.op) {
251
+ return 'ArrayTypeTrait(' + this.op + this.dimensionSizes + ')';
252
+ }
253
+ return 'ArrayTypeTrait(' + this.dimensionSizes + ')';
254
+ }
255
+ inferType(arkMethod) {
256
+ if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
257
+ this.op.inferType(arkMethod);
258
+ }
259
+ return this;
260
+ }
261
+ }
262
+ exports.ArkArrayTypeTraitExpr = ArkArrayTypeTraitExpr;
263
+ // typeid expression
264
+ class ArkTypeIdExpr extends Expr_1.AbstractExpr {
265
+ constructor(op) {
266
+ super();
267
+ this.op = op;
268
+ }
269
+ getOp() {
270
+ return this.op;
271
+ }
272
+ setOp(newOp) {
273
+ this.op = newOp;
274
+ }
275
+ getUses() {
276
+ let uses = [];
277
+ uses.push(this.op);
278
+ uses.push(...this.op.getUses());
279
+ return uses;
280
+ }
281
+ getType() {
282
+ return new Type_2.TypeInfo('type_info', this.op.getType());
283
+ }
284
+ toString() {
285
+ return 'typeid(' + this.op + ')';
286
+ }
287
+ inferType(arkMethod) {
288
+ if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
289
+ this.op.inferType(arkMethod);
290
+ }
291
+ return this;
292
+ }
293
+ }
294
+ exports.ArkTypeIdExpr = ArkTypeIdExpr;
295
+ // noexcept expression
296
+ class ArkNoExpectExpr extends Expr_1.AbstractExpr {
297
+ constructor(op) {
298
+ super();
299
+ this.op = op;
300
+ }
301
+ getOp() {
302
+ return this.op;
303
+ }
304
+ setOp(newOp) {
305
+ this.op = newOp;
306
+ }
307
+ getUses() {
308
+ let uses = [];
309
+ uses.push(this.op);
310
+ uses.push(...this.op.getUses());
311
+ return uses;
312
+ }
313
+ getOpType() {
314
+ return this.op.getType();
315
+ }
316
+ getType() {
317
+ return Type_1.BooleanType.getInstance();
318
+ }
319
+ toString() {
320
+ return 'noexcept(' + this.op + ')';
321
+ }
322
+ inferType(arkMethod) {
323
+ if (this.op instanceof Ref_1.AbstractRef || this.op instanceof Expr_1.AbstractExpr) {
324
+ this.op.inferType(arkMethod);
325
+ }
326
+ return this;
327
+ }
328
+ }
329
+ exports.ArkNoExpectExpr = ArkNoExpectExpr;
330
+ // cxx folder expression
331
+ class ArkCxxFolderExpr extends Expr_1.AbstractExpr {
332
+ constructor(arg, op) {
333
+ super();
334
+ this.arg = arg;
335
+ this.op = op;
336
+ }
337
+ getArg() {
338
+ return this.arg;
339
+ }
340
+ setArg(newArg) {
341
+ this.arg = newArg;
342
+ }
343
+ getUses() {
344
+ let uses = [];
345
+ uses.push(this.arg);
346
+ uses.push(...this.arg.getUses());
347
+ return uses;
348
+ }
349
+ getType() {
350
+ return this.arg.getType();
351
+ }
352
+ getOp() {
353
+ return this.op;
354
+ }
355
+ toString() {
356
+ return `CxxFolderExpr(` + this.arg + this.op + `...)`;
357
+ }
358
+ inferType(arkMethod) {
359
+ let arg = this.getArg();
360
+ if (arg instanceof Ref_1.AbstractRef || arg instanceof Expr_1.AbstractExpr) {
361
+ arg.inferType(arkMethod);
362
+ }
363
+ return this;
364
+ }
365
+ }
366
+ exports.ArkCxxFolderExpr = ArkCxxFolderExpr;
367
+ class ArkCxxNormalBinOpExpr extends Expr_1.AbstractBinopExpr {
368
+ constructor(op1, op2, operator) {
369
+ super(op1, op2, operator);
370
+ }
371
+ getType() {
372
+ if (!this.type) {
373
+ this.setType();
374
+ }
375
+ return this.type;
376
+ }
377
+ setCxxType(type) {
378
+ this.type = type;
379
+ }
380
+ }
381
+ exports.ArkCxxNormalBinOpExpr = ArkCxxNormalBinOpExpr;
382
+ // Declare class objects on the stack
383
+ class ArkAllocExpr extends Expr_1.AbstractExpr {
384
+ constructor(classType) {
385
+ super();
386
+ this.classType = classType;
387
+ }
388
+ getClassType() {
389
+ return this.classType;
390
+ }
391
+ getUses() {
392
+ return [];
393
+ }
394
+ getType() {
395
+ return this.classType;
396
+ }
397
+ toString() {
398
+ return 'alloc ' + this.classType;
399
+ }
400
+ /**
401
+ *Inference type method
402
+ *@ param arkMethod - Ark method object, the context used for type inference
403
+ *@ returns the ArkNewExpr instance of the current object
404
+ */
405
+ inferType(arkMethod) {
406
+ var _a, _b;
407
+ const classSignature = this.classType.getClassSignature();
408
+ if (classSignature.getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
409
+ const className = classSignature.getClassName();
410
+ let type = (_a = ModelUtils_1.ModelUtils.findDeclaredLocal(new Local_1.Local(className), arkMethod, 1)) === null || _a === void 0 ? void 0 : _a.getType();
411
+ if (TypeInference_1.TypeInference.isUnclearType(type)) {
412
+ type = TypeInference_1.TypeInference.inferUnclearRefName(className, arkMethod.getDeclaringArkClass());
413
+ }
414
+ // If the type is an alias type, replace with the original type
415
+ if (type instanceof Type_1.AliasType) {
416
+ const originalType = TypeInference_1.TypeInference.replaceAliasType(type);
417
+ if (originalType instanceof Type_1.FunctionType) {
418
+ type = originalType.getMethodSignature().getMethodSubSignature().getReturnType();
419
+ }
420
+ else {
421
+ type = originalType;
422
+ }
423
+ }
424
+ if (type && type instanceof Type_1.ClassType) {
425
+ const instanceType = (_b = this.constructorSignature(type, arkMethod)) !== null && _b !== void 0 ? _b : type;
426
+ this.classType.setClassSignature(instanceType.getClassSignature());
427
+ TypeInference_1.TypeInference.inferRealGenericTypes(this.classType.getRealGenericTypes(), arkMethod.getDeclaringArkClass());
428
+ }
429
+ }
430
+ return this;
431
+ }
432
+ constructorSignature(type, arkMethod) {
433
+ var _a;
434
+ const classConstructor = arkMethod.getDeclaringArkFile().getScene().getClass(type.getClassSignature());
435
+ if ((classConstructor === null || classConstructor === void 0 ? void 0 : classConstructor.getCategory()) === ArkClass_1.ClassCategory.INTERFACE) {
436
+ const type = (_a = classConstructor.getMethodWithName('construct-signature')) === null || _a === void 0 ? void 0 : _a.getReturnType();
437
+ if (type) {
438
+ const returnType = TypeInference_1.TypeInference.replaceAliasType(type);
439
+ return returnType instanceof Type_1.ClassType ? returnType : undefined;
440
+ }
441
+ }
442
+ return undefined;
443
+ }
444
+ }
445
+ exports.ArkAllocExpr = ArkAllocExpr;
446
+ /**
447
+ * Aggregate expression to represent such cases :
448
+ * struct Point q = (struct Point){.x = 5, .y = 8, .name = 'c'};
449
+ * int* arr = (int[5]){1, 2, 3, 4, 5};
450
+ * the right value is {},its kind is CompoundLiteralExpr or InitListExpr
451
+ */
452
+ class ArkAggregateExpr extends Expr_1.AbstractExpr {
453
+ constructor(elements, type) {
454
+ super();
455
+ this.elements = elements;
456
+ this.type = type;
457
+ }
458
+ getElements() {
459
+ return this.elements;
460
+ }
461
+ setType(type) {
462
+ this.type = type;
463
+ }
464
+ getUses() {
465
+ let uses = [];
466
+ for (const element of this.elements) {
467
+ uses.push(element);
468
+ uses.push(...element.getUses());
469
+ }
470
+ return uses;
471
+ }
472
+ getType() {
473
+ return this.type;
474
+ }
475
+ inferType(arkMethod) {
476
+ const trueType = TypeInference_1.TypeInference.inferUnclearedType(this.type, arkMethod.getDeclaringArkClass());
477
+ if (trueType) {
478
+ this.type = trueType;
479
+ }
480
+ return this;
481
+ }
482
+ toString() {
483
+ return `AggregateExpr(${this.elements})`;
484
+ }
485
+ }
486
+ exports.ArkAggregateExpr = ArkAggregateExpr;
487
+ /**
488
+ * ArkDesignatedInitExpr is used to represent designated initializers in aggregate initialization expressions.
489
+ * It consists of an initializer value and a designator, which specifies the field or element to be initialized.
490
+ * For example:
491
+ * struct Point q = (struct Point){.x = 5, .y = 8, .name = 'c'};
492
+ * its kind is DesignatedInitExpr
493
+ */
494
+ class ArkDesignatedInitExpr extends Expr_1.AbstractExpr {
495
+ constructor(init, designator) {
496
+ super();
497
+ this.init = init;
498
+ this.designator = designator;
499
+ }
500
+ getInit() {
501
+ return this.init;
502
+ }
503
+ getDesignator() {
504
+ return this.designator;
505
+ }
506
+ inferType(arkMethod) {
507
+ if (this.init instanceof Ref_1.AbstractRef || this.init instanceof Expr_1.AbstractExpr) {
508
+ this.init.inferType(arkMethod);
509
+ }
510
+ if (this.designator instanceof Ref_1.AbstractRef || this.designator instanceof Expr_1.AbstractExpr) {
511
+ this.designator.inferType(arkMethod);
512
+ }
513
+ return this;
514
+ }
515
+ getUses() {
516
+ let uses = [];
517
+ uses.push(this.init);
518
+ uses.push(this.designator);
519
+ uses.push(...this.init.getUses());
520
+ uses.push(...this.designator.getUses());
521
+ return uses;
522
+ }
523
+ getType() {
524
+ return this.init.getType();
525
+ }
526
+ toString() {
527
+ return this.init + ' = ' + this.designator;
528
+ }
529
+ }
530
+ exports.ArkDesignatedInitExpr = ArkDesignatedInitExpr;
@@ -0,0 +1,25 @@
1
+ import { ArkInstanceFieldRef, ClosureFieldRef } from '../../../core/base/Ref';
2
+ import { Local } from '../../../core/base/Local';
3
+ import { FieldSignature } from '../../../core/model/ArkSignature';
4
+ import { Type } from '../../../core/base/Type';
5
+ /**
6
+ * C++ member access implementation, designed as a derived class because it needs to distinguish between p.f
7
+ * and p->f without intrusive modification to the original arkIR
8
+ */
9
+ export declare class ArkCxxInstanceFieldRef extends ArkInstanceFieldRef {
10
+ private isArrow;
11
+ constructor(base: Local, isArrow: boolean, fieldSignature: FieldSignature);
12
+ isArrowAccess(): boolean;
13
+ toString(): string;
14
+ getType(): Type;
15
+ }
16
+ export declare enum CxxClosureCaptureType {
17
+ BY_VALUE = 0,
18
+ BY_REF = 1
19
+ }
20
+ export declare class CxxClosureFieldRef extends ClosureFieldRef {
21
+ private captureType;
22
+ constructor(base: Local, fieldName: string, type: Type, captureType: CxxClosureCaptureType);
23
+ getCaptureType(): CxxClosureCaptureType;
24
+ }
25
+ //# sourceMappingURL=Ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/base/Ref.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,OAAO,CAAU;gBAEb,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc;IAKlE,aAAa,IAAI,OAAO;IAIxB,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,IAAI;CAGzB;AAED,oBAAY,qBAAqB;IAC7B,QAAQ,IAAI;IACZ,MAAM,IAAI;CACb;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,OAAO,CAAC,WAAW,CAAwB;gBAE/B,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB;IAKnF,cAAc,IAAI,qBAAqB;CAGjD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CxxClosureFieldRef = exports.CxxClosureCaptureType = exports.ArkCxxInstanceFieldRef = void 0;
18
+ const Ref_1 = require("../../../core/base/Ref");
19
+ /**
20
+ * C++ member access implementation, designed as a derived class because it needs to distinguish between p.f
21
+ * and p->f without intrusive modification to the original arkIR
22
+ */
23
+ class ArkCxxInstanceFieldRef extends Ref_1.ArkInstanceFieldRef {
24
+ constructor(base, isArrow, fieldSignature) {
25
+ super(base, fieldSignature);
26
+ this.isArrow = isArrow;
27
+ }
28
+ isArrowAccess() {
29
+ return this.isArrow;
30
+ }
31
+ toString() {
32
+ return this.getBase().toString() + (this.isArrow ? '->' : '.') + '<' + this.getFieldSignature() + '>';
33
+ }
34
+ getType() {
35
+ return this.getFieldSignature().getType();
36
+ }
37
+ }
38
+ exports.ArkCxxInstanceFieldRef = ArkCxxInstanceFieldRef;
39
+ var CxxClosureCaptureType;
40
+ (function (CxxClosureCaptureType) {
41
+ CxxClosureCaptureType[CxxClosureCaptureType["BY_VALUE"] = 0] = "BY_VALUE";
42
+ CxxClosureCaptureType[CxxClosureCaptureType["BY_REF"] = 1] = "BY_REF";
43
+ })(CxxClosureCaptureType = exports.CxxClosureCaptureType || (exports.CxxClosureCaptureType = {}));
44
+ class CxxClosureFieldRef extends Ref_1.ClosureFieldRef {
45
+ constructor(base, fieldName, type, captureType) {
46
+ super(base, fieldName, type);
47
+ this.captureType = captureType;
48
+ }
49
+ getCaptureType() {
50
+ return this.captureType;
51
+ }
52
+ }
53
+ exports.CxxClosureFieldRef = CxxClosureFieldRef;
@@ -0,0 +1,8 @@
1
+ import { BasicBlock } from '../../../core/graph/BasicBlock';
2
+ import { Trap } from '../../../core/base/Trap';
3
+ export declare class CxxTrap extends Trap {
4
+ private readonly cxxCatchBlocks;
5
+ constructor(tryBlocks: BasicBlock[], catchBlocks: BasicBlock[][]);
6
+ getCxxCatchBlocks(): BasicBlock[][];
7
+ }
8
+ //# sourceMappingURL=Trap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Trap.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/base/Trap.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,qBAAa,OAAQ,SAAQ,IAAI;IAG7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAEpC,SAAS,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAMzD,iBAAiB,IAAI,UAAU,EAAE,EAAE;CAG7C"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CxxTrap = void 0;
18
+ const Trap_1 = require("../../../core/base/Trap");
19
+ class CxxTrap extends Trap_1.Trap {
20
+ constructor(tryBlocks, catchBlocks) {
21
+ super(tryBlocks, []);
22
+ this.cxxCatchBlocks = catchBlocks;
23
+ }
24
+ getCxxCatchBlocks() {
25
+ return this.cxxCatchBlocks;
26
+ }
27
+ }
28
+ exports.CxxTrap = CxxTrap;