arkanalyzer 1.0.87 → 1.0.89

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 (143) hide show
  1. package/config/arkanalyzer.json +11 -0
  2. package/lib/Config.d.ts +27 -2
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Config.js +65 -2
  5. package/lib/Scene.d.ts +5 -2
  6. package/lib/Scene.d.ts.map +1 -1
  7. package/lib/Scene.js +34 -67
  8. package/lib/callgraph/pointerAnalysis/context/Context.d.ts.map +1 -1
  9. package/lib/callgraph/pointerAnalysis/context/Context.js +10 -12
  10. package/lib/callgraph/pointerAnalysis/plugins/WorkerPlugin.js +1 -1
  11. package/lib/cli/commands/cg.d.ts +27 -6
  12. package/lib/cli/commands/cg.d.ts.map +1 -1
  13. package/lib/cli/commands/cg.js +9 -6
  14. package/lib/core/base/Expr.js +3 -3
  15. package/lib/core/base/Position.d.ts +1 -1
  16. package/lib/core/base/Position.d.ts.map +1 -1
  17. package/lib/core/base/Position.js +2 -2
  18. package/lib/core/base/Type.d.ts.map +1 -1
  19. package/lib/core/base/Type.js +1 -2
  20. package/lib/core/common/Const.d.ts +1 -0
  21. package/lib/core/common/Const.d.ts.map +1 -1
  22. package/lib/core/common/Const.js +2 -1
  23. package/lib/core/common/IRInference.d.ts.map +1 -1
  24. package/lib/core/common/IRInference.js +1 -1
  25. package/lib/core/common/IRUtils.d.ts.map +1 -1
  26. package/lib/core/common/IRUtils.js +3 -33
  27. package/lib/core/common/ModelUtils.d.ts +6 -0
  28. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  29. package/lib/core/common/ModelUtils.js +30 -0
  30. package/lib/core/common/SdkUtils.js +1 -1
  31. package/lib/core/common/TypeInference.d.ts +13 -0
  32. package/lib/core/common/TypeInference.d.ts.map +1 -1
  33. package/lib/core/common/TypeInference.js +44 -0
  34. package/lib/core/common/ValueUtil.d.ts +1 -1
  35. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  36. package/lib/core/common/ValueUtil.js +28 -12
  37. package/lib/core/graph/Cfg.d.ts.map +1 -1
  38. package/lib/core/graph/Cfg.js +0 -2
  39. package/lib/core/graph/DominanceFinder.d.ts +3 -0
  40. package/lib/core/graph/DominanceFinder.d.ts.map +1 -1
  41. package/lib/core/graph/DominanceFinder.js +42 -36
  42. package/lib/core/graph/DominanceTree.d.ts.map +1 -1
  43. package/lib/core/graph/DominanceTree.js +0 -4
  44. package/lib/core/inference/ValueInference.d.ts.map +1 -1
  45. package/lib/core/inference/ValueInference.js +3 -2
  46. package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
  47. package/lib/core/inference/abc/AbcInference.js +2 -1
  48. package/lib/core/inference/arkts/ArkTsInference.d.ts.map +1 -1
  49. package/lib/core/inference/arkts/ArkTsInference.js +3 -2
  50. package/lib/core/model/ArkClass.d.ts +3 -0
  51. package/lib/core/model/ArkClass.d.ts.map +1 -1
  52. package/lib/core/model/ArkClass.js +32 -6
  53. package/lib/core/model/ArkFile.d.ts.map +1 -1
  54. package/lib/core/model/ArkFile.js +0 -1
  55. package/lib/core/model/ArkMetadata.d.ts +32 -1
  56. package/lib/core/model/ArkMetadata.d.ts.map +1 -1
  57. package/lib/core/model/ArkMetadata.js +28 -3
  58. package/lib/core/model/builder/ArkMetadataBuilder.d.ts +21 -0
  59. package/lib/core/model/builder/ArkMetadataBuilder.d.ts.map +1 -0
  60. package/lib/core/model/builder/ArkMetadataBuilder.js +160 -0
  61. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  62. package/lib/core/model/builder/ArkMethodBuilder.js +32 -26
  63. package/lib/frontend/FrontendBuilder.d.ts +26 -0
  64. package/lib/frontend/FrontendBuilder.d.ts.map +1 -0
  65. package/lib/frontend/FrontendBuilder.js +108 -0
  66. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts +16 -0
  67. package/lib/frontend/arktsFrontend/ArktsFrontend.d.ts.map +1 -0
  68. package/lib/frontend/arktsFrontend/ArktsFrontend.js +52 -0
  69. package/lib/frontend/cppFrontend/CppFrontend.d.ts +13 -0
  70. package/lib/frontend/cppFrontend/CppFrontend.d.ts.map +1 -0
  71. package/lib/frontend/cppFrontend/CppFrontend.js +85 -0
  72. package/lib/frontend/cppFrontend/ast/index.d.ts +5 -0
  73. package/lib/frontend/cppFrontend/ast/index.d.ts.map +1 -0
  74. package/lib/frontend/cppFrontend/ast/index.js +31 -0
  75. package/lib/frontend/cppFrontend/ast/ts/ArkCxxAstNode.d.ts.map +1 -0
  76. package/lib/frontend/cppFrontend/ast/ts/astParser.d.ts +25 -0
  77. package/lib/frontend/cppFrontend/ast/ts/astParser.d.ts.map +1 -0
  78. package/lib/frontend/cppFrontend/ast/ts/astParser.js +280 -0
  79. package/lib/frontend/cppFrontend/ast/ts/astUtils.d.ts +18 -0
  80. package/lib/frontend/cppFrontend/ast/ts/astUtils.d.ts.map +1 -0
  81. package/lib/frontend/cppFrontend/ast/ts/astUtils.js +158 -0
  82. package/lib/frontend/cppFrontend/ast/{const.d.ts → ts/const.d.ts} +0 -13
  83. package/lib/frontend/cppFrontend/ast/ts/const.d.ts.map +1 -0
  84. package/lib/frontend/cppFrontend/ast/ts/const.js +58 -0
  85. package/lib/frontend/cppFrontend/ast/ts/napi/napiApi.d.ts +8 -0
  86. package/lib/frontend/cppFrontend/ast/ts/napi/napiApi.d.ts.map +1 -0
  87. package/lib/frontend/cppFrontend/ast/ts/napi/napiApi.js +90 -0
  88. package/lib/frontend/cppFrontend/ast/ts/napi/napiRunner.d.ts +8 -0
  89. package/lib/frontend/cppFrontend/ast/ts/napi/napiRunner.d.ts.map +1 -0
  90. package/lib/frontend/cppFrontend/ast/ts/napi/napiRunner.js +180 -0
  91. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts +1 -1
  92. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -1
  93. package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +55 -55
  94. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +1 -1
  95. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -1
  96. package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +151 -151
  97. package/lib/frontend/cppFrontend/common/IRInference.js +2 -2
  98. package/lib/frontend/cppFrontend/common/IRUtils.d.ts +1 -1
  99. package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -1
  100. package/lib/frontend/cppFrontend/common/IRUtils.js +2 -2
  101. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts +1 -1
  102. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -1
  103. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +74 -74
  104. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts +1 -1
  105. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -1
  106. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +3 -3
  107. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts +1 -1
  108. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  109. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +1 -1
  110. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -1
  111. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +16 -17
  112. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts +1 -1
  113. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts.map +1 -1
  114. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts +1 -1
  115. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  116. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +2 -2
  117. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +1 -1
  118. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  119. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +2 -2
  120. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +1 -1
  121. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -1
  122. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts +1 -1
  123. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -1
  124. package/lib/frontend/cppFrontend/model/builder/builderUtils.js +3 -3
  125. package/lib/index.d.ts +5 -2
  126. package/lib/index.d.ts.map +1 -1
  127. package/lib/index.js +14 -6
  128. package/lib/pass/Dispatcher.d.ts.map +1 -1
  129. package/lib/pass/Dispatcher.js +0 -4
  130. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  131. package/lib/save/source/SourceStmt.js +3 -1
  132. package/lib/utils/FileUtils.d.ts +1 -0
  133. package/lib/utils/FileUtils.d.ts.map +1 -1
  134. package/lib/utils/FileUtils.js +11 -3
  135. package/package.json +9 -4
  136. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts.map +0 -1
  137. package/lib/frontend/cppFrontend/ast/astUtils.d.ts +0 -51
  138. package/lib/frontend/cppFrontend/ast/astUtils.d.ts.map +0 -1
  139. package/lib/frontend/cppFrontend/ast/astUtils.js +0 -470
  140. package/lib/frontend/cppFrontend/ast/const.d.ts.map +0 -1
  141. package/lib/frontend/cppFrontend/ast/const.js +0 -134
  142. /package/lib/frontend/cppFrontend/ast/{ArkCxxAstNode.d.ts → ts/ArkCxxAstNode.d.ts} +0 -0
  143. /package/lib/frontend/cppFrontend/ast/{ArkCxxAstNode.js → ts/ArkCxxAstNode.js} +0 -0
@@ -64,7 +64,7 @@ const ModelUtils_1 = require("../../../core/common/ModelUtils");
64
64
  const TSConst_1 = require("../../../core/common/TSConst");
65
65
  const TypeInference_1 = require("./TypeInference");
66
66
  const ModelUtils_2 = require("./ModelUtils");
67
- const ArkCxxAstNode_1 = require("../ast/ArkCxxAstNode");
67
+ const ast_1 = require("../ast");
68
68
  const ArkIRTransformer_2 = require("../../../core/common/ArkIRTransformer");
69
69
  const Builtin_2 = require("./Builtin");
70
70
  const ArkClass_1 = require("../../../core/model/ArkClass");
@@ -94,11 +94,11 @@ function nodeInnerNode(node) {
94
94
  if (Array.isArray(node === null || node === void 0 ? void 0 : node.inner) && node.inner.length > 0) {
95
95
  const last = node.inner[node.inner.length - 1];
96
96
  // Return InitListExpr first
97
- if ((last === null || last === void 0 ? void 0 : last.kind) === ArkCxxAstNode_1.astKind.InitListExpr) {
97
+ if ((last === null || last === void 0 ? void 0 : last.kind) === ast_1.astKind.InitListExpr) {
98
98
  return last;
99
99
  }
100
100
  // Arrays containing only one TypeRef node do not return
101
- if (!(node.inner.length === 1 && ((_a = node.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ArkCxxAstNode_1.astKind.TypeRef) && !(0, builderUtils_1.isCxxFunctionPointer)(node.type.qualType)) {
101
+ if (!(node.inner.length === 1 && ((_a = node.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ast_1.astKind.TypeRef) && !(0, builderUtils_1.isCxxFunctionPointer)(node.type.qualType)) {
102
102
  return last;
103
103
  }
104
104
  }
@@ -111,65 +111,65 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
111
111
  super(arkIRTransformer, sourceFile, declaringMethod);
112
112
  // An object that records the corresponding processing functions of CXX ast nodes.
113
113
  this.nodeTransformerFuncMap = {
114
- [ArkCxxAstNode_1.astKind.ArraySubscriptExpr]: this.cxxElementAccessExpressionToValueAndStmts,
115
- [ArkCxxAstNode_1.astKind.ArrayTypeTraitExpr]: this.arrayTypeTraitExprToValueAndStmts,
116
- [ArkCxxAstNode_1.astKind.AtomicCallExpr]: this.cxxCallExpressionToValueAndStmts,
117
- [ArkCxxAstNode_1.astKind.BinaryConditionalOperator]: this.cxxConditionalExpressionToValueAndStmts,
118
- [ArkCxxAstNode_1.astKind.CXXRewrittenBinaryOperator]: this.cxxBinaryExpressionToValueAndStmts,
119
- [ArkCxxAstNode_1.astKind.BinaryOperator]: this.cxxBinaryExpressionToValueAndStmts,
120
- [ArkCxxAstNode_1.astKind.BindingDecl]: this.bindingNodeToValueAndStmts,
121
- [ArkCxxAstNode_1.astKind.CallExpr]: this.cxxCallExpressionToValueAndStmts,
122
- [ArkCxxAstNode_1.astKind.CharacterLiteral]: this.cxxLiteralNodeToValueAndStmts,
123
- [ArkCxxAstNode_1.astKind.CompoundAssignOperator]: this.cxxCompoundAssignmentToValueAndStmts,
124
- [ArkCxxAstNode_1.astKind.CompoundLiteralExpr]: this.cxxAggregateToValueAndStmts,
125
- [ArkCxxAstNode_1.astKind.ConditionalOperator]: this.cxxConditionalExpressionToValueAndStmts,
126
- [ArkCxxAstNode_1.astKind.ConstantExpr]: this.processInnerNodeToValueAndStmts,
127
- [ArkCxxAstNode_1.astKind.CXXBindTemporaryExpr]: this.processInnerNodeToValueAndStmts,
128
- [ArkCxxAstNode_1.astKind.CXXBoolLiteralExpr]: this.cxxLiteralNodeToValueAndStmts,
129
- [ArkCxxAstNode_1.astKind.CXXConstCastExpr]: this.castExpressionToValueAndStmts,
130
- [ArkCxxAstNode_1.astKind.CXXConstructExpr]: this.cxxConstructExprToValueAndStmts,
131
- [ArkCxxAstNode_1.astKind.CXXCtorInitializer]: this.cxxCtorInitializerToValueAndStmts,
132
- [ArkCxxAstNode_1.astKind.CXXDeleteExpr]: this.cxxDeleteExpressionToValueAndStmts,
133
- [ArkCxxAstNode_1.astKind.CXXDynamicCastExpr]: this.castExpressionToValueAndStmts,
134
- [ArkCxxAstNode_1.astKind.CXXFoldExpr]: this.cxxFoldExprToValueAndStmts,
135
- [ArkCxxAstNode_1.astKind.CXXFunctionalCastExpr]: this.castExpressionToValueAndStmts,
136
- [ArkCxxAstNode_1.astKind.CXXMemberCallExpr]: this.cxxMemberCallExpressionToValueAndStmts,
137
- [ArkCxxAstNode_1.astKind.CXXNewExpr]: this.cxxNewExpressionToValueAndStmts,
138
- [ArkCxxAstNode_1.astKind.CXXNoexceptExpr]: this.cxxNoexceptExprToValueAndStmts,
139
- [ArkCxxAstNode_1.astKind.CXXNullPtrLiteralExpr]: this.cxxLiteralNodeToValueAndStmts,
140
- [ArkCxxAstNode_1.astKind.CXXOperatorCallExpr]: this.cxxOperatorExpressionToValueAndStmts,
141
- [ArkCxxAstNode_1.astKind.CXXReinterpretCastExpr]: this.castExpressionToValueAndStmts,
142
- [ArkCxxAstNode_1.astKind.CXXScalarValueInitExpr]: this.cxxScalarValueInitToValueAndStmts,
143
- [ArkCxxAstNode_1.astKind.CXXStdInitializerListExpr]: this.processInnerNodeToValueAndStmts,
144
- [ArkCxxAstNode_1.astKind.CXXStaticCastExpr]: this.castExpressionToValueAndStmts,
145
- [ArkCxxAstNode_1.astKind.CXXThisExpr]: this.cxxThisExpressionToValueAndStmts,
146
- [ArkCxxAstNode_1.astKind.CXXTypeidExpr]: this.cxxTypeidExprToValueAndStmts,
147
- [ArkCxxAstNode_1.astKind.CStyleCastExpr]: this.castExpressionToValueAndStmts,
148
- [ArkCxxAstNode_1.astKind.CXXTemporaryObjectExpr]: this.cxxTemporaryObjectExprToValueAndStmts,
149
- [ArkCxxAstNode_1.astKind.DeclRefExpr]: this.declAndTypeRefToValueAndStmts,
150
- [ArkCxxAstNode_1.astKind.DeclStmt]: this.declStmtToValueAndStmts,
151
- [ArkCxxAstNode_1.astKind.DecompositionDecl]: this.bindingNodeToValueAndStmts,
152
- [ArkCxxAstNode_1.astKind.ExprWithCleanups]: this.processInnerNodeToValueAndStmts,
153
- [ArkCxxAstNode_1.astKind.FloatingLiteral]: this.cxxLiteralNodeToValueAndStmts,
154
- [ArkCxxAstNode_1.astKind.ImplicitCastExpr]: this.implicitCastExprToValueAndStmts,
155
- [ArkCxxAstNode_1.astKind.InitListExpr]: this.initListExprToValueAndStmts,
156
- [ArkCxxAstNode_1.astKind.IntegerLiteral]: this.cxxLiteralNodeToValueAndStmts,
157
- [ArkCxxAstNode_1.astKind.LambdaExpr]: this.cxxCallableNodeToValueAndStmts,
158
- [ArkCxxAstNode_1.astKind.MaterializeTemporaryExpr]: this.materializeTemporaryExprToValueAndStmts,
159
- [ArkCxxAstNode_1.astKind.MemberExpr]: this.memberExpressionToValueAndStmts,
160
- [ArkCxxAstNode_1.astKind.MemberRef]: this.memberExpressionToValueAndStmts,
161
- [ArkCxxAstNode_1.astKind.NamespaceRef]: this.cxxNamespaceRefToValueAndStmts,
162
- [ArkCxxAstNode_1.astKind.ParenExpr]: this.processInnerNodeToValueAndStmts,
163
- [ArkCxxAstNode_1.astKind.ParenListExpr]: this.processInnerNodeToValueAndStmts,
164
- [ArkCxxAstNode_1.astKind.RecoveryExpr]: this.RecoverExpressionToValueAndStmts,
165
- [ArkCxxAstNode_1.astKind.StringLiteral]: this.cxxLiteralNodeToValueAndStmts,
166
- [ArkCxxAstNode_1.astKind.TypeRef]: this.declAndTypeRefToValueAndStmts,
167
- [ArkCxxAstNode_1.astKind.UnaryExprOrTypeTraitExpr]: this.unaryExprToValueAndStmts,
168
- [ArkCxxAstNode_1.astKind.UnaryOperator]: this.unaryOperatorToValueAndStmts,
169
- [ArkCxxAstNode_1.astKind.UnexposedExpr]: this.processInnerNodeToValueAndStmts,
170
- [ArkCxxAstNode_1.astKind.UnresolvedLookupExpr]: this.declAndTypeRefToValueAndStmts,
171
- [ArkCxxAstNode_1.astKind.UserDefinedLiteral]: this.userDefinedLiteralToValueAndStmts,
172
- [ArkCxxAstNode_1.astKind.VarDecl]: this.cxxVariableDeclarationToValueAndStmts,
114
+ [ast_1.astKind.ArraySubscriptExpr]: this.cxxElementAccessExpressionToValueAndStmts,
115
+ [ast_1.astKind.ArrayTypeTraitExpr]: this.arrayTypeTraitExprToValueAndStmts,
116
+ [ast_1.astKind.AtomicCallExpr]: this.cxxCallExpressionToValueAndStmts,
117
+ [ast_1.astKind.BinaryConditionalOperator]: this.cxxConditionalExpressionToValueAndStmts,
118
+ [ast_1.astKind.CXXRewrittenBinaryOperator]: this.cxxBinaryExpressionToValueAndStmts,
119
+ [ast_1.astKind.BinaryOperator]: this.cxxBinaryExpressionToValueAndStmts,
120
+ [ast_1.astKind.BindingDecl]: this.bindingNodeToValueAndStmts,
121
+ [ast_1.astKind.CallExpr]: this.cxxCallExpressionToValueAndStmts,
122
+ [ast_1.astKind.CharacterLiteral]: this.cxxLiteralNodeToValueAndStmts,
123
+ [ast_1.astKind.CompoundAssignOperator]: this.cxxCompoundAssignmentToValueAndStmts,
124
+ [ast_1.astKind.CompoundLiteralExpr]: this.cxxAggregateToValueAndStmts,
125
+ [ast_1.astKind.ConditionalOperator]: this.cxxConditionalExpressionToValueAndStmts,
126
+ [ast_1.astKind.ConstantExpr]: this.processInnerNodeToValueAndStmts,
127
+ [ast_1.astKind.CXXBindTemporaryExpr]: this.processInnerNodeToValueAndStmts,
128
+ [ast_1.astKind.CXXBoolLiteralExpr]: this.cxxLiteralNodeToValueAndStmts,
129
+ [ast_1.astKind.CXXConstCastExpr]: this.castExpressionToValueAndStmts,
130
+ [ast_1.astKind.CXXConstructExpr]: this.cxxConstructExprToValueAndStmts,
131
+ [ast_1.astKind.CXXCtorInitializer]: this.cxxCtorInitializerToValueAndStmts,
132
+ [ast_1.astKind.CXXDeleteExpr]: this.cxxDeleteExpressionToValueAndStmts,
133
+ [ast_1.astKind.CXXDynamicCastExpr]: this.castExpressionToValueAndStmts,
134
+ [ast_1.astKind.CXXFoldExpr]: this.cxxFoldExprToValueAndStmts,
135
+ [ast_1.astKind.CXXFunctionalCastExpr]: this.castExpressionToValueAndStmts,
136
+ [ast_1.astKind.CXXMemberCallExpr]: this.cxxMemberCallExpressionToValueAndStmts,
137
+ [ast_1.astKind.CXXNewExpr]: this.cxxNewExpressionToValueAndStmts,
138
+ [ast_1.astKind.CXXNoexceptExpr]: this.cxxNoexceptExprToValueAndStmts,
139
+ [ast_1.astKind.CXXNullPtrLiteralExpr]: this.cxxLiteralNodeToValueAndStmts,
140
+ [ast_1.astKind.CXXOperatorCallExpr]: this.cxxOperatorExpressionToValueAndStmts,
141
+ [ast_1.astKind.CXXReinterpretCastExpr]: this.castExpressionToValueAndStmts,
142
+ [ast_1.astKind.CXXScalarValueInitExpr]: this.cxxScalarValueInitToValueAndStmts,
143
+ [ast_1.astKind.CXXStdInitializerListExpr]: this.processInnerNodeToValueAndStmts,
144
+ [ast_1.astKind.CXXStaticCastExpr]: this.castExpressionToValueAndStmts,
145
+ [ast_1.astKind.CXXThisExpr]: this.cxxThisExpressionToValueAndStmts,
146
+ [ast_1.astKind.CXXTypeidExpr]: this.cxxTypeidExprToValueAndStmts,
147
+ [ast_1.astKind.CStyleCastExpr]: this.castExpressionToValueAndStmts,
148
+ [ast_1.astKind.CXXTemporaryObjectExpr]: this.cxxTemporaryObjectExprToValueAndStmts,
149
+ [ast_1.astKind.DeclRefExpr]: this.declAndTypeRefToValueAndStmts,
150
+ [ast_1.astKind.DeclStmt]: this.declStmtToValueAndStmts,
151
+ [ast_1.astKind.DecompositionDecl]: this.bindingNodeToValueAndStmts,
152
+ [ast_1.astKind.ExprWithCleanups]: this.processInnerNodeToValueAndStmts,
153
+ [ast_1.astKind.FloatingLiteral]: this.cxxLiteralNodeToValueAndStmts,
154
+ [ast_1.astKind.ImplicitCastExpr]: this.implicitCastExprToValueAndStmts,
155
+ [ast_1.astKind.InitListExpr]: this.initListExprToValueAndStmts,
156
+ [ast_1.astKind.IntegerLiteral]: this.cxxLiteralNodeToValueAndStmts,
157
+ [ast_1.astKind.LambdaExpr]: this.cxxCallableNodeToValueAndStmts,
158
+ [ast_1.astKind.MaterializeTemporaryExpr]: this.materializeTemporaryExprToValueAndStmts,
159
+ [ast_1.astKind.MemberExpr]: this.memberExpressionToValueAndStmts,
160
+ [ast_1.astKind.MemberRef]: this.memberExpressionToValueAndStmts,
161
+ [ast_1.astKind.NamespaceRef]: this.cxxNamespaceRefToValueAndStmts,
162
+ [ast_1.astKind.ParenExpr]: this.processInnerNodeToValueAndStmts,
163
+ [ast_1.astKind.ParenListExpr]: this.processInnerNodeToValueAndStmts,
164
+ [ast_1.astKind.RecoveryExpr]: this.RecoverExpressionToValueAndStmts,
165
+ [ast_1.astKind.StringLiteral]: this.cxxLiteralNodeToValueAndStmts,
166
+ [ast_1.astKind.TypeRef]: this.declAndTypeRefToValueAndStmts,
167
+ [ast_1.astKind.UnaryExprOrTypeTraitExpr]: this.unaryExprToValueAndStmts,
168
+ [ast_1.astKind.UnaryOperator]: this.unaryOperatorToValueAndStmts,
169
+ [ast_1.astKind.UnexposedExpr]: this.processInnerNodeToValueAndStmts,
170
+ [ast_1.astKind.UnresolvedLookupExpr]: this.declAndTypeRefToValueAndStmts,
171
+ [ast_1.astKind.UserDefinedLiteral]: this.userDefinedLiteralToValueAndStmts,
172
+ [ast_1.astKind.VarDecl]: this.cxxVariableDeclarationToValueAndStmts,
173
173
  };
174
174
  this.ArkCxxIRTransformer = arkIRTransformer;
175
175
  this.cxxSourceFile = sourceFile;
@@ -214,16 +214,16 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
214
214
  else {
215
215
  classSignature = type.getClassSignature();
216
216
  }
217
- const list = aggregate.kind === ArkCxxAstNode_1.astKind.InitListExpr ? aggregate : aggregate.inner[aggregate.inner.length - 1];
217
+ const list = aggregate.kind === ast_1.astKind.InitListExpr ? aggregate : aggregate.inner[aggregate.inner.length - 1];
218
218
  let elements = [];
219
- if (list.kind !== ArkCxxAstNode_1.astKind.InitListExpr) {
219
+ if (list.kind !== ast_1.astKind.InitListExpr) {
220
220
  return this.unprocessedNodeToValueAndStmts(aggregate);
221
221
  }
222
222
  const aggregateExpr = new Expr_2.ArkAggregateExpr(elements, type);
223
223
  const fullPosition = [Position_1.FullPosition.cxxBuildFromNode(aggregate, this.cxxSourceFile)];
224
224
  let { value: temp, valueOriginalPositions: tempPositions, stmts: exprStmts, } = this.ArkCxxIRTransformer.generateAssignStmtForValue(aggregateExpr, fullPosition);
225
225
  for (let i = 0; i < list.inner.length; i++) {
226
- if (list.inner[i].kind === ArkCxxAstNode_1.astKind.DesignatedInitExpr) {
226
+ if (list.inner[i].kind === ast_1.astKind.DesignatedInitExpr) {
227
227
  // Because the syntax tree does not have fields representing field information,
228
228
  // regular matching is used to preserve the information.
229
229
  // If there are any changes to the syntax tree, optimization can be made here
@@ -265,25 +265,25 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
265
265
  // Judge whether the current node is related to the lambda function of CPP
266
266
  isNodeRelatedToCXXLambdaFunc(node) {
267
267
  var _a, _b, _c, _d;
268
- return ((_b = (_a = node.type) === null || _a === void 0 ? void 0 : _a.qualType) === null || _b === void 0 ? void 0 : _b.startsWith('(lambda at')) || ((_d = (_c = node.inner) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.kind) === ArkCxxAstNode_1.astKind.LambdaExpr;
268
+ return ((_b = (_a = node.type) === null || _a === void 0 ? void 0 : _a.qualType) === null || _b === void 0 ? void 0 : _b.startsWith('(lambda at')) || ((_d = (_c = node.inner) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.kind) === ast_1.astKind.LambdaExpr;
269
269
  }
270
270
  isNodeRelatedToImplicitNode(node) {
271
271
  var _a, _b;
272
272
  if (node.inner) {
273
- return (((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.ImplicitCastExpr && (node.name === '__tree_const_iterator'));
273
+ return (((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.ImplicitCastExpr && (node.name === '__tree_const_iterator'));
274
274
  }
275
275
  return false;
276
276
  }
277
277
  // Judge whether the child nodes of the current node are materializing temporary variables
278
278
  isNodeRelatedToMaterializeTemporaryExpr(node) {
279
279
  var _a, _b;
280
- return ((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.MaterializeTemporaryExpr;
280
+ return ((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.MaterializeTemporaryExpr;
281
281
  }
282
282
  // Check if the child nodes of the current node are member function calls
283
283
  isNodeRelatedToCXXMember(node) {
284
284
  var _a, _b;
285
- return ((((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.CXXMemberCallExpr) ||
286
- (node.inner[0].kind === ArkCxxAstNode_1.astKind.ImplicitCastExpr && node.inner[0].inner[0] && node.inner[0].inner[0].kind === ArkCxxAstNode_1.astKind.CXXMemberCallExpr));
285
+ return ((((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.CXXMemberCallExpr) ||
286
+ (node.inner[0].kind === ast_1.astKind.ImplicitCastExpr && node.inner[0].inner[0] && node.inner[0].inner[0].kind === ast_1.astKind.CXXMemberCallExpr));
287
287
  }
288
288
  // Construction of std::pair type
289
289
  isPairConstructExpr(node) {
@@ -292,7 +292,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
292
292
  // Multi-layer std::pair construction
293
293
  isNodeRelatedToTemporary(node) {
294
294
  var _a, _b;
295
- return ((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.CXXBindTemporaryExpr && node.code === node.inner[0].code;
295
+ return ((_b = (_a = node.inner) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.CXXBindTemporaryExpr && node.code === node.inner[0].code;
296
296
  }
297
297
  // Expressions that are not new statements (excluding constructors as parameters)
298
298
  isNotNewExpression(newExpression) {
@@ -301,14 +301,14 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
301
301
  return false;
302
302
  }
303
303
  const targetKinds = [
304
- ArkCxxAstNode_1.astKind.IntegerLiteral,
305
- ArkCxxAstNode_1.astKind.InitListExpr,
306
- ArkCxxAstNode_1.astKind.CompoundLiteralExpr,
307
- ArkCxxAstNode_1.astKind.CXXOperatorCallExpr,
308
- ArkCxxAstNode_1.astKind.BinaryOperator
304
+ ast_1.astKind.IntegerLiteral,
305
+ ast_1.astKind.InitListExpr,
306
+ ast_1.astKind.CompoundLiteralExpr,
307
+ ast_1.astKind.CXXOperatorCallExpr,
308
+ ast_1.astKind.BinaryOperator
309
309
  ];
310
310
  return (targetKinds.includes(firstChildKind) ||
311
- (firstChildKind === ArkCxxAstNode_1.astKind.ImplicitCastExpr && !newExpression.inner[0].code.includes('(')));
311
+ (firstChildKind === ast_1.astKind.ImplicitCastExpr && !newExpression.inner[0].code.includes('(')));
312
312
  }
313
313
  isNodeRelatedToCXXFuncCast(node) {
314
314
  var _a;
@@ -344,10 +344,10 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
344
344
  // instead, the object is directly constructed at the return value location. Therefore, it is processed here as a ConstructExpr.
345
345
  const parentNode = (_a = node.getParent) === null || _a === void 0 ? void 0 : _a.call(node, false);
346
346
  // case: Vector{1,2,3} Implicit call to destructor
347
- if (((_b = parentNode === null || parentNode === void 0 ? void 0 : parentNode.dtor) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.CXXDestructorDecl && node.inner.length > 0) {
347
+ if (((_b = parentNode === null || parentNode === void 0 ? void 0 : parentNode.dtor) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.CXXDestructorDecl && node.inner.length > 0) {
348
348
  return this.cxxConstructExprToValueAndStmts(node.inner[0]);
349
349
  }
350
- if (!parentNode || parentNode.kind !== ArkCxxAstNode_1.astKind.ExprWithCleanups && parentNode.kind !== ArkCxxAstNode_1.astKind.ReturnStmt) {
350
+ if (!parentNode || parentNode.kind !== ast_1.astKind.ExprWithCleanups && parentNode.kind !== ast_1.astKind.ReturnStmt) {
351
351
  return this.unprocessedNodeToValueAndStmts(node);
352
352
  }
353
353
  return this.cxxConstructExprToValueAndStmts(node);
@@ -397,7 +397,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
397
397
  stmts.push(...innerStmts);
398
398
  let index = 0;
399
399
  for (let i = 0; i < length; i++) {
400
- if (node.inner[i].kind !== ArkCxxAstNode_1.astKind.BindingDecl) {
400
+ if (node.inner[i].kind !== ast_1.astKind.BindingDecl) {
401
401
  continue;
402
402
  }
403
403
  const leftValueAndStmts = this.cxxIdentifierToValueAndStmts(node.inner[i]);
@@ -446,7 +446,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
446
446
  return this.cxxNodeToValueAndStmts(node.inner[0]);
447
447
  }
448
448
  // Handle the scenario: using Color::RED; Color c = RED;
449
- if (((_b = node.referencedDecl) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.EnumConstantDecl && node.inner.length === 0) {
449
+ if (((_b = node.referencedDecl) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.EnumConstantDecl && node.inner.length === 0) {
450
450
  const typeRefNode = {
451
451
  kind: 'TypeRef',
452
452
  name: node.referencedDecl.name,
@@ -458,7 +458,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
458
458
  return this.staticMemberExprToValueAndStmts(node);
459
459
  }
460
460
  // when node.referencedDecl?.kind === astKind.NonTypeTemplateParmDecl ,this value is a const expr
461
- if (((_c = node.referencedDecl) === null || _c === void 0 ? void 0 : _c.kind) === ArkCxxAstNode_1.astKind.NonTypeTemplateParmDecl) {
461
+ if (((_c = node.referencedDecl) === null || _c === void 0 ? void 0 : _c.kind) === ast_1.astKind.NonTypeTemplateParmDecl) {
462
462
  return {
463
463
  value: ValueUtil_1.CxxValueUtil.createCompileConst(node.name, (0, builderUtils_1.cxxNode2Type)(node, this.declaringMethod)),
464
464
  valueOriginalPositions: [],
@@ -467,13 +467,13 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
467
467
  }
468
468
  // Handle the invocation of static members of a class, such as A::a
469
469
  if (((_d = node.code) === null || _d === void 0 ? void 0 : _d.includes('::')) && node.inner.length > 0 &&
470
- (((_e = node.inner[0]) === null || _e === void 0 ? void 0 : _e.kind) === ArkCxxAstNode_1.astKind.TypeRef || ((_f = node.inner[0]) === null || _f === void 0 ? void 0 : _f.kind) === ArkCxxAstNode_1.astKind.NamespaceRef && ((_g = node.inner[0]) === null || _g === void 0 ? void 0 : _g.name) !== Builtin_2.BuiltinCxx.CXXSTD)) {
470
+ (((_e = node.inner[0]) === null || _e === void 0 ? void 0 : _e.kind) === ast_1.astKind.TypeRef || ((_f = node.inner[0]) === null || _f === void 0 ? void 0 : _f.kind) === ast_1.astKind.NamespaceRef && ((_g = node.inner[0]) === null || _g === void 0 ? void 0 : _g.name) !== Builtin_2.BuiltinCxx.CXXSTD)) {
471
471
  return this.staticMemberExprToValueAndStmts(node);
472
472
  }
473
473
  return this.cxxIdentifierToValueAndStmts(node);
474
474
  }
475
475
  staticMemberExprToValueAndStmts(declRefExpr) {
476
- declRefExpr.kind = ArkCxxAstNode_1.astKind.MemberExpr; // Replace the type with "member invocation"
476
+ declRefExpr.kind = ast_1.astKind.MemberExpr; // Replace the type with "member invocation"
477
477
  return this.memberExpressionToValueAndStmts(declRefExpr);
478
478
  }
479
479
  materializeTemporaryExprToValueAndStmts(node) {
@@ -498,7 +498,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
498
498
  }
499
499
  let pNode = (_e = ((_c = node.parent) !== null && _c !== void 0 ? _c : (_d = node.getParent) === null || _d === void 0 ? void 0 : _d.call(node, true))) !== null && _e !== void 0 ? _e : null;
500
500
  if (pNode && ((_f = pNode === null || pNode === void 0 ? void 0 : pNode.inner) === null || _f === void 0 ? void 0 : _f.length) > 0 &&
501
- (((_g = pNode.inner[0]) === null || _g === void 0 ? void 0 : _g.kind) === ArkCxxAstNode_1.astKind.TypeRef || !node.type.qualType.includes('[') || (0, builderUtils_1.cxxNode2Type)(node, this.declaringMethod) instanceof Type_1.ClassType)) {
501
+ (((_g = pNode.inner[0]) === null || _g === void 0 ? void 0 : _g.kind) === ast_1.astKind.TypeRef || !node.type.qualType.includes('[') || (0, builderUtils_1.cxxNode2Type)(node, this.declaringMethod) instanceof Type_1.ClassType)) {
502
502
  try {
503
503
  return this.cxxAggregateToValueAndStmts(node);
504
504
  }
@@ -593,18 +593,18 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
593
593
  return this.unprocessedNodeToValueAndStmts(cxxCtorInitializer);
594
594
  }
595
595
  const firstInnerNode = cxxCtorInitializer.inner[0];
596
- if (firstInnerNode.kind === ArkCxxAstNode_1.astKind.CXXInheritedCtorInitExpr) {
596
+ if (firstInnerNode.kind === ast_1.astKind.CXXInheritedCtorInitExpr) {
597
597
  // Processing of using parent:: parent
598
598
  return this.cxxInheritedCtorInitExprToValueAndStmts(firstInnerNode);
599
599
  }
600
- else if (firstInnerNode.kind === ArkCxxAstNode_1.astKind.CXXConstructExpr && cxxCtorInitializer.baseInit) {
600
+ else if (firstInnerNode.kind === ast_1.astKind.CXXConstructExpr && cxxCtorInitializer.baseInit) {
601
601
  // Processing of case: Left(const char& name) : Base(name) // call base class constructor
602
602
  return this.cxxSuperExpressionToValueAndStmts(firstInnerNode);
603
603
  }
604
604
  // If the kind of firstNode is CXXConstructExpr and firstNode does not correspond to a parent class initialization call,
605
605
  // it is equivalent to directly assigning a value to the class member.
606
606
  // For example, the constructor of class Circle in file 'tests/cppResources/exports/crossFileCase/include/myHeader.h'.
607
- const assignRight = (firstInnerNode.kind === ArkCxxAstNode_1.astKind.CXXConstructExpr && firstInnerNode.inner.length > 0) ? firstInnerNode.inner[0] : firstInnerNode;
607
+ const assignRight = (firstInnerNode.kind === ast_1.astKind.CXXConstructExpr && firstInnerNode.inner.length > 0) ? firstInnerNode.inner[0] : firstInnerNode;
608
608
  const CtorInit2ThisMemberExpr = {
609
609
  kind: 'MemberExpr',
610
610
  name: (_b = (_a = cxxCtorInitializer.anyInit) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
@@ -708,10 +708,10 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
708
708
  let dimensionSizes = [];
709
709
  let op = null;
710
710
  for (let i = 0; i < ArrayTypeTraitExpr.inner.length; i++) {
711
- if (ArrayTypeTraitExpr.inner[i].kind === ArkCxxAstNode_1.astKind.IntegerLiteral) {
711
+ if (ArrayTypeTraitExpr.inner[i].kind === ast_1.astKind.IntegerLiteral) {
712
712
  dimensionSizes.push(Number(ArrayTypeTraitExpr.inner[i].value));
713
713
  }
714
- else if (ArrayTypeTraitExpr.inner[i].kind === ArkCxxAstNode_1.astKind.DeclRefExpr) {
714
+ else if (ArrayTypeTraitExpr.inner[i].kind === ast_1.astKind.DeclRefExpr) {
715
715
  const innerValueAndStmts = this.cxxNodeToValueAndStmts(ArrayTypeTraitExpr.inner[i]);
716
716
  op = innerValueAndStmts.value;
717
717
  stmts.push(...innerValueAndStmts.stmts);
@@ -860,7 +860,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
860
860
  const stmts = [];
861
861
  const currConditionalOperatorIndex = this.conditionalOperatorNo++;
862
862
  // Peel off 'ImplicitCastExpr'
863
- const conditionNode = conditionalExpression.inner[InnerIdx].kind === ArkCxxAstNode_1.astKind.ImplicitCastExpr ?
863
+ const conditionNode = conditionalExpression.inner[InnerIdx].kind === ast_1.astKind.ImplicitCastExpr ?
864
864
  conditionalExpression.inner[InnerIdx].inner[0] : conditionalExpression.inner[InnerIdx];
865
865
  let conditionExpr;
866
866
  const context = { conditionExpr: conditionExpr };
@@ -871,7 +871,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
871
871
  // inner[1] is a value whose expression is true
872
872
  InnerIdx++;
873
873
  let whenTrueValueAndStmts;
874
- if (conditionalExpression.kind === ArkCxxAstNode_1.astKind.ConditionalOperator) {
874
+ if (conditionalExpression.kind === ast_1.astKind.ConditionalOperator) {
875
875
  whenTrueValueAndStmts = this.cxxNodeToValueAndStmts(conditionalExpression.inner[InnerIdx]);
876
876
  // else kind is BinaryConditionalOperator,No need to parse the node again, the result of the judgment is its value
877
877
  }
@@ -927,16 +927,16 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
927
927
  }
928
928
  // Several callable kinds
929
929
  const CALLABLE_KINDS = new Set([
930
- ArkCxxAstNode_1.astKind.DeclRefExpr,
931
- ArkCxxAstNode_1.astKind.MemberExpr,
932
- ArkCxxAstNode_1.astKind.OverloadedDeclRef,
933
- ArkCxxAstNode_1.astKind.ArraySubscriptExpr,
934
- ArkCxxAstNode_1.astKind.CXXOperatorCallExpr,
935
- ArkCxxAstNode_1.astKind.UnresolvedLookupExpr,
930
+ ast_1.astKind.DeclRefExpr,
931
+ ast_1.astKind.MemberExpr,
932
+ ast_1.astKind.OverloadedDeclRef,
933
+ ast_1.astKind.ArraySubscriptExpr,
934
+ ast_1.astKind.CXXOperatorCallExpr,
935
+ ast_1.astKind.UnresolvedLookupExpr,
936
936
  ]);
937
937
  function unwrapImplicit(n) {
938
938
  var _a;
939
- while (n && n.kind === ArkCxxAstNode_1.astKind.ImplicitCastExpr) {
939
+ while (n && n.kind === ast_1.astKind.ImplicitCastExpr) {
940
940
  n = (_a = n.inner) === null || _a === void 0 ? void 0 : _a[0];
941
941
  }
942
942
  return n;
@@ -965,7 +965,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
965
965
  getDeclRef(astNode) {
966
966
  let n = astNode;
967
967
  while (n) {
968
- if (n.kind === ArkCxxAstNode_1.astKind.DeclRefExpr) {
968
+ if (n.kind === ast_1.astKind.DeclRefExpr) {
969
969
  return n;
970
970
  }
971
971
  // No child node or empty child node, end
@@ -1043,7 +1043,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1043
1043
  else {
1044
1044
  varNode = identifier;
1045
1045
  }
1046
- let varName = varNode.kind === ArkCxxAstNode_1.astKind.TypeRef ? varNode.code : varNode.name;
1046
+ let varName = varNode.kind === ast_1.astKind.TypeRef ? varNode.code : varNode.name;
1047
1047
  const varType = (0, builderUtils_1.cxxNode2Type)(identifier, this.declaringMethod);
1048
1048
  if (varName === Type_1.UndefinedType.getInstance().getName()) {
1049
1049
  identifierValue = ValueUtil_1.CxxValueUtil.getUndefinedConst();
@@ -1076,7 +1076,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1076
1076
  const stmts = [];
1077
1077
  // [Scenario 1] Process this ->field or this ->method calls in C++code
1078
1078
  // If it's a class member reference (MemberExpr/MemberRef) but has no inner[0], it means implicit this, need to supplement this node
1079
- if ((memberExpression.kind === ArkCxxAstNode_1.astKind.MemberExpr || memberExpression.kind === ArkCxxAstNode_1.astKind.MemberRef) && memberExpression.inner[0] === undefined) {
1079
+ if ((memberExpression.kind === ast_1.astKind.MemberExpr || memberExpression.kind === ast_1.astKind.MemberRef) && memberExpression.inner[0] === undefined) {
1080
1080
  memberExpression.inner[0] = {
1081
1081
  kind: 'CXXThisExpr',
1082
1082
  name: memberExpression.name,
@@ -1090,7 +1090,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1090
1090
  let { value: baseValue, valueOriginalPositions: basePositions, stmts: baseStmts, } = this.cxxNodeToValueAndStmts(memberExpression.inner[0]);
1091
1091
  // [Scenario 3] Processing chained member access, such as a.b.c or (* ptr). field
1092
1092
  // If the base is a member access, generate an assignment statement to ensure the validity of SSA
1093
- if (((_a = memberExpression.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ArkCxxAstNode_1.astKind.MemberExpr || memberExpression.kind === ArkCxxAstNode_1.astKind.MemberRef) {
1093
+ if (((_a = memberExpression.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ast_1.astKind.MemberExpr || memberExpression.kind === ast_1.astKind.MemberRef) {
1094
1094
  ({ value: baseValue, valueOriginalPositions: basePositions, stmts: baseStmts } =
1095
1095
  this.ArkCxxIRTransformer.generateAssignStmtForValue(baseValue, basePositions));
1096
1096
  }
@@ -1106,7 +1106,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1106
1106
  const fieldSignature = this.buildFieldSignatureFromMemberExpr(baseValue, memberExpression);
1107
1107
  // [Scenario 6] Generate the field reference object of IR layer (such as testMap. insert)
1108
1108
  let fieldRef;
1109
- if (((_b = memberExpression.referencedDecl) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.EnumConstantDecl) {
1109
+ if (((_b = memberExpression.referencedDecl) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.EnumConstantDecl) {
1110
1110
  fieldRef = new Ref_1.ArkStaticFieldRef(fieldSignature);
1111
1111
  }
1112
1112
  else {
@@ -1124,7 +1124,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1124
1124
  let fieldSignature;
1125
1125
  const memberName = ((_a = memberExpression.referencedDecl) === null || _a === void 0 ? void 0 : _a.name) || memberExpression.name || memberExpression.code;
1126
1126
  // ==Scenarios for Special Handling of Enum Members==
1127
- if (((_b = memberExpression.referencedDecl) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.EnumConstantDecl) {
1127
+ if (((_b = memberExpression.referencedDecl) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.EnumConstantDecl) {
1128
1128
  const enumClassName = memberExpression.type.qualType.replace('enum', '').trim();
1129
1129
  const enumArkClass = ModelUtils_2.CxxModelUtils.findSymbolInFileWithName(enumClassName, this.declaringMethod.getDeclaringArkClass());
1130
1130
  const enumSignature = (enumArkClass instanceof ArkClass_1.ArkClass) ?
@@ -1212,14 +1212,14 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1212
1212
  }
1213
1213
  cxxCallExpressionToValueAndStmts(callExpression) {
1214
1214
  var _a, _b, _c, _d, _e, _f;
1215
- if (callExpression.kind === ArkCxxAstNode_1.astKind.CallExpr && ((_a = callExpression.inner) === null || _a === void 0 ? void 0 : _a.length) > 0) {
1215
+ if (callExpression.kind === ast_1.astKind.CallExpr && ((_a = callExpression.inner) === null || _a === void 0 ? void 0 : _a.length) > 0) {
1216
1216
  if (((_e = (_d = ((_b = callExpression.parent) !== null && _b !== void 0 ? _b : (_c = callExpression.getParent) === null || _c === void 0 ? void 0 : _c.call(callExpression, true))) === null || _d === void 0 ? void 0 : _d.type) === null || _e === void 0 ? void 0 : _e.qualType) === 'std::thread') {
1217
1217
  return this.cxxNewExpressionToValueAndStmts(callExpression);
1218
1218
  }
1219
- else if (callExpression.inner[0].kind === ArkCxxAstNode_1.astKind.CXXPseudoDestructorExpression) {
1219
+ else if (callExpression.inner[0].kind === ast_1.astKind.CXXPseudoDestructorExpression) {
1220
1220
  return this.cxxCallExpressionToValueAndStmts(callExpression.inner[0]);
1221
1221
  }
1222
- else if (callExpression.name === 'basic_string' || callExpression.inner[0].kind === ArkCxxAstNode_1.astKind.MaterializeTemporaryExpr) {
1222
+ else if (callExpression.name === 'basic_string' || callExpression.inner[0].kind === ast_1.astKind.MaterializeTemporaryExpr) {
1223
1223
  return this.cxxNodeToValueAndStmts(callExpression.inner[0]);
1224
1224
  }
1225
1225
  }
@@ -1265,7 +1265,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1265
1265
  !callExpression.code.startsWith(innerNode.code)) {
1266
1266
  callArgus.push(innerNode);
1267
1267
  }
1268
- if (innerNode.kind === ArkCxxAstNode_1.astKind.CXXOperatorCallExpr) {
1268
+ if (innerNode.kind === ast_1.astKind.CXXOperatorCallExpr) {
1269
1269
  // Recursive call processing CXXOperatorCallExpr
1270
1270
  if (innerNode.type.qualType !== 'std::ostream') {
1271
1271
  return this.streamOrLambdaExprToValueAndStmts(innerNode, callArgus);
@@ -1273,16 +1273,16 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1273
1273
  // When the type is std:: ostream, it indicates an overloaded stream operator and records the overloaded node of the stream operator
1274
1274
  callArgus.push(innerNode);
1275
1275
  // Recursive call to process CXXOperatorCallExpr nested in the inner of CXXOperatorCallExpr
1276
- if (innerNode.inner[1].kind === ArkCxxAstNode_1.astKind.CXXOperatorCallExpr) {
1276
+ if (innerNode.inner[1].kind === ast_1.astKind.CXXOperatorCallExpr) {
1277
1277
  return this.streamOrLambdaExprToValueAndStmts(innerNode.inner[1], callArgus);
1278
1278
  }
1279
1279
  // If there is no nested CXXOperatorCallExpr, the ValueAndStmts of overloaded stream operators will be built directly
1280
1280
  return this.buildValueAndStmtsForStreamOrLambdaCall(innerNode.inner[1], callArgus.reverse(), stmts, callExpression);
1281
1281
  }
1282
- while (innerNode.kind === ArkCxxAstNode_1.astKind.ImplicitCastExpr && innerNode.valueCategory === 'lvalue' && innerNode.inner.length > 0) {
1282
+ while (innerNode.kind === ast_1.astKind.ImplicitCastExpr && innerNode.valueCategory === 'lvalue' && innerNode.inner.length > 0) {
1283
1283
  innerNode = innerNode.inner[0];
1284
1284
  }
1285
- if (innerNode.kind === ArkCxxAstNode_1.astKind.DeclRefExpr &&
1285
+ if (innerNode.kind === ast_1.astKind.DeclRefExpr &&
1286
1286
  (innerNode.type.qualType.includes('iostream') ||
1287
1287
  innerNode.type.qualType.includes('ostream') ||
1288
1288
  innerNode.type.qualType.includes('istream') ||
@@ -1311,7 +1311,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1311
1311
  };
1312
1312
  for (let i = 0; i < args.length; i += 1) {
1313
1313
  let arg = args[i];
1314
- if (arg.kind === ArkCxxAstNode_1.astKind.CXXOperatorCallExpr) {
1314
+ if (arg.kind === ast_1.astKind.CXXOperatorCallExpr) {
1315
1315
  // Standard stream operator+overloaded stream operator
1316
1316
  // 1. Object of standard stream operator, call std:: stream function
1317
1317
  this.buildValueAndStmtsForStdStreamOrLambdaCall(streamNode, nonOverloadedArgs, streamExpr, currValueAndStmts);
@@ -1446,25 +1446,25 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1446
1446
  return overloadedOpToValueAndStmts;
1447
1447
  }
1448
1448
  // operator<< / operator>> and lambda cout scenario
1449
- if ((((_a = callExpression.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ArkCxxAstNode_1.astKind.ImplicitCastExpr && ((_b = callExpression.inner[0]) === null || _b === void 0 ? void 0 : _b.name) === 'operator>>') ||
1449
+ if ((((_a = callExpression.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ast_1.astKind.ImplicitCastExpr && ((_b = callExpression.inner[0]) === null || _b === void 0 ? void 0 : _b.name) === 'operator>>') ||
1450
1450
  callExpression.name === 'operator<<' ||
1451
1451
  ((_c = callExpression.inner[0]) === null || _c === void 0 ? void 0 : _c.name) === 'operator<<' ||
1452
1452
  ((_d = callExpression.inner[1]) === null || _d === void 0 ? void 0 : _d.type.qualType.toString().includes('(lambda at'))) {
1453
1453
  return this.streamOrLambdaExprToValueAndStmts(callExpression, []);
1454
1454
  }
1455
1455
  // Relational binary operator or assignment operator
1456
- if (((_e = callExpression.inner[0]) === null || _e === void 0 ? void 0 : _e.kind) === ArkCxxAstNode_1.astKind.ImplicitCastExpr &&
1456
+ if (((_e = callExpression.inner[0]) === null || _e === void 0 ? void 0 : _e.kind) === ast_1.astKind.ImplicitCastExpr &&
1457
1457
  (ArkCxxValueTransformer.isRelationalBinaryOperator((_f = callExpression.inner[0]) === null || _f === void 0 ? void 0 : _f.code) ||
1458
1458
  this.getOverloadOpName(callExpression) === 'operator=')) {
1459
1459
  return this.CXXOperatorExpressionToBinaryOperator(callExpression);
1460
1460
  }
1461
1461
  // Unary operators (++ / --)
1462
- if (((_g = callExpression.inner[0]) === null || _g === void 0 ? void 0 : _g.kind) === ArkCxxAstNode_1.astKind.ImplicitCastExpr &&
1462
+ if (((_g = callExpression.inner[0]) === null || _g === void 0 ? void 0 : _g.kind) === ast_1.astKind.ImplicitCastExpr &&
1463
1463
  ['++', '--', '*'].includes((_h = callExpression.inner[0]) === null || _h === void 0 ? void 0 : _h.code)) {
1464
1464
  return this.CXXOperatorExpressionToUnaryOperator(callExpression);
1465
1465
  }
1466
1466
  // Arrow operator (->) in iteration
1467
- if (((_j = callExpression.inner[0]) === null || _j === void 0 ? void 0 : _j.kind) === ArkCxxAstNode_1.astKind.ImplicitCastExpr &&
1467
+ if (((_j = callExpression.inner[0]) === null || _j === void 0 ? void 0 : _j.kind) === ast_1.astKind.ImplicitCastExpr &&
1468
1468
  ((_k = callExpression.inner[0]) === null || _k === void 0 ? void 0 : _k.code) === '->') {
1469
1469
  return this.cxxNodeToValueAndStmts(callExpression.inner[1]);
1470
1470
  }
@@ -1477,19 +1477,19 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1477
1477
  for (let innerNode of callExpression.inner) {
1478
1478
  // 将第一组递归表达式类型定义为 string 数组
1479
1479
  const recursiveKinds = [
1480
- ArkCxxAstNode_1.astKind.CXXOperatorCallExpr,
1481
- ArkCxxAstNode_1.astKind.MaterializeTemporaryExpr,
1482
- ArkCxxAstNode_1.astKind.CXXBindTemporaryExpr,
1483
- ArkCxxAstNode_1.astKind.CXXConstructExpr
1480
+ ast_1.astKind.CXXOperatorCallExpr,
1481
+ ast_1.astKind.MaterializeTemporaryExpr,
1482
+ ast_1.astKind.CXXBindTemporaryExpr,
1483
+ ast_1.astKind.CXXConstructExpr
1484
1484
  ];
1485
1485
  if (recursiveKinds.includes(innerNode.kind) ||
1486
- (innerNode.kind === ArkCxxAstNode_1.astKind.ImplicitCastExpr && innerNode.castKind !== 'FunctionToPointerDecay')) {
1486
+ (innerNode.kind === ast_1.astKind.ImplicitCastExpr && innerNode.castKind !== 'FunctionToPointerDecay')) {
1487
1487
  innerStmts.push(...this.cxxOperatorExpressionToValueAndStmts(innerNode, false));
1488
1488
  }
1489
- else if (innerNode.kind === ArkCxxAstNode_1.astKind.DeclRefExpr) {
1489
+ else if (innerNode.kind === ast_1.astKind.DeclRefExpr) {
1490
1490
  innerStmts.push(this.cxxIdentifierToValueAndStmts(innerNode));
1491
1491
  }
1492
- else if (innerNode.kind === ArkCxxAstNode_1.astKind.IntegerLiteral || innerNode.kind === ArkCxxAstNode_1.astKind.StringLiteral) {
1492
+ else if (innerNode.kind === ast_1.astKind.IntegerLiteral || innerNode.kind === ast_1.astKind.StringLiteral) {
1493
1493
  let literalNode = this.cxxLiteralNodeToValueAndStmts(innerNode);
1494
1494
  if (literalNode) {
1495
1495
  innerStmts.push(literalNode);
@@ -1515,7 +1515,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1515
1515
  // Handling Recursive function, e.g. Case10 in lambdaFuncSample.cpp
1516
1516
  if ((_d = cxxOperatorCallExpr.inner) === null || _d === void 0 ? void 0 : _d[1]) {
1517
1517
  let callNode = cxxOperatorCallExpr.inner[1];
1518
- while (callNode.kind === ArkCxxAstNode_1.astKind.ImplicitCastExpr && callNode.valueCategory === 'lvalue' && callNode.inner.length > 0) {
1518
+ while (callNode.kind === ast_1.astKind.ImplicitCastExpr && callNode.valueCategory === 'lvalue' && callNode.inner.length > 0) {
1519
1519
  callNode = callNode.inner[0];
1520
1520
  }
1521
1521
  if (callNode.type.qualType.includes('std::function') || this.isNodeRelatedToCXXLambdaFunc(callNode)) {
@@ -1658,7 +1658,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1658
1658
  const callerName = callerValue.getName();
1659
1659
  let classSignature = ArkSignatureBuilder_1.ArkSignatureBuilder.buildClassSignatureFromClassName(callerName);
1660
1660
  let cls = ModelUtils_1.ModelUtils.getClass(this.declaringMethod, classSignature);
1661
- const callExprs = [ArkCxxAstNode_1.astKind.CallExpr, ArkCxxAstNode_1.astKind.CXXOperatorCallExpr];
1661
+ const callExprs = [ast_1.astKind.CallExpr, ast_1.astKind.CXXOperatorCallExpr];
1662
1662
  if ((cls === null || cls === void 0 ? void 0 : cls.hasComponentDecorator()) && callExprs.includes(callExpression.kind)) {
1663
1663
  return this.cxxGenerateCustomViewStmt(callerName, args, argPositions, callExpression, stmts);
1664
1664
  }
@@ -1859,7 +1859,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1859
1859
  const argPositions = [];
1860
1860
  if (argumentNodes) {
1861
1861
  for (let i = 0; i < argumentNodes.length; i++) {
1862
- if (argumentNodes[i].kind === ArkCxxAstNode_1.astKind.CXXDefaultArgExpr) {
1862
+ if (argumentNodes[i].kind === ast_1.astKind.CXXDefaultArgExpr) {
1863
1863
  continue;
1864
1864
  }
1865
1865
  const argument = argumentNodes[i];
@@ -1908,7 +1908,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1908
1908
  const stmts = [];
1909
1909
  let realGenericTypes = this.getRealGenericTypes(newExpression);
1910
1910
  // Handle the scenarios of namespace::Member and class::member
1911
- const parentClassOrNs = (_a = newExpression.getParent) === null || _a === void 0 ? void 0 : _a.call(newExpression, true).inner.filter(inn => [ArkCxxAstNode_1.astKind.TypeRef, ArkCxxAstNode_1.astKind.NamespaceRef].includes(inn.kind));
1911
+ const parentClassOrNs = (_a = newExpression.getParent) === null || _a === void 0 ? void 0 : _a.call(newExpression, true).inner.filter(inn => [ast_1.astKind.TypeRef, ast_1.astKind.NamespaceRef].includes(inn.kind));
1912
1912
  let refType = null;
1913
1913
  // If the parent node has a namespaceRef or TypeRef, it indicates a constructor call,
1914
1914
  // and should infer the type of the corresponding namespace/class.
@@ -1931,7 +1931,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1931
1931
  const expr = new Expr_1.ArkNewExpr(classType);
1932
1932
  const { value: newLocal, valueOriginalPositions: newLocalPositions, stmts: newExprStmts } = this.ArkCxxIRTransformer.generateAssignStmtForValue(expr, [Position_1.FullPosition.cxxBuildFromNode(newExpression, this.cxxSourceFile)]);
1933
1933
  // When using the new keyword, the type of Local should be a pointer type.
1934
- if (newExpression.kind === ArkCxxAstNode_1.astKind.CXXNewExpr) {
1934
+ if (newExpression.kind === ast_1.astKind.CXXNewExpr) {
1935
1935
  newLocal.setType(new Type_2.PointerType(classType, 1));
1936
1936
  }
1937
1937
  stmts.push(...newExprStmts);
@@ -1953,25 +1953,25 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
1953
1953
  const constructArgs = (() => {
1954
1954
  var _a, _b;
1955
1955
  let args = newExpression.inner;
1956
- if (newExpression.kind === ArkCxxAstNode_1.astKind.CXXNewExpr && ((_a = newExpression.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ArkCxxAstNode_1.astKind.CXXConstructExpr) {
1956
+ if (newExpression.kind === ast_1.astKind.CXXNewExpr && ((_a = newExpression.inner[0]) === null || _a === void 0 ? void 0 : _a.kind) === ast_1.astKind.CXXConstructExpr) {
1957
1957
  return [...newExpression.inner[0].inner];
1958
1958
  }
1959
- else if (newExpression.kind === ArkCxxAstNode_1.astKind.CompoundLiteralExpr) {
1959
+ else if (newExpression.kind === ast_1.astKind.CompoundLiteralExpr) {
1960
1960
  return this.getConstructArgs(args);
1961
1961
  }
1962
1962
  else if (
1963
1963
  // if case : struct LargeStruct s;, inner.length is 0, so we need to avoid it
1964
- newExpression.kind === ArkCxxAstNode_1.astKind.CXXConstructExpr &&
1964
+ newExpression.kind === ast_1.astKind.CXXConstructExpr &&
1965
1965
  newExpression.type.qualType.startsWith('struct') &&
1966
- args.length > 0 && ((_b = args[0].inner[0]) === null || _b === void 0 ? void 0 : _b.kind) === ArkCxxAstNode_1.astKind.CompoundLiteralExpr) {
1966
+ args.length > 0 && ((_b = args[0].inner[0]) === null || _b === void 0 ? void 0 : _b.kind) === ast_1.astKind.CompoundLiteralExpr) {
1967
1967
  return this.getConstructArgs(args[0].inner[0].inner);
1968
1968
  }
1969
- else if (newExpression.kind === ArkCxxAstNode_1.astKind.InitListExpr) {
1969
+ else if (newExpression.kind === ast_1.astKind.InitListExpr) {
1970
1970
  return this.getConstructArgs(newExpression);
1971
1971
  }
1972
- return args.filter(arg => (arg === null || arg === void 0 ? void 0 : arg.kind) !== ArkCxxAstNode_1.astKind.TemplateRef &&
1973
- (arg === null || arg === void 0 ? void 0 : arg.kind) !== ArkCxxAstNode_1.astKind.NamespaceRef &&
1974
- (arg === null || arg === void 0 ? void 0 : arg.kind) !== ArkCxxAstNode_1.astKind.TypeRef);
1972
+ return args.filter(arg => (arg === null || arg === void 0 ? void 0 : arg.kind) !== ast_1.astKind.TemplateRef &&
1973
+ (arg === null || arg === void 0 ? void 0 : arg.kind) !== ast_1.astKind.NamespaceRef &&
1974
+ (arg === null || arg === void 0 ? void 0 : arg.kind) !== ast_1.astKind.TypeRef);
1975
1975
  })();
1976
1976
  const { args: argValues, argPositions } = this.cxxParseArguments(stmts, constructArgs);
1977
1977
  const constructorMethodSignature = this.getConstructorSignatureByClassTypeAndArgs(classType, argValues);
@@ -2024,7 +2024,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2024
2024
  if (Array.isArray(constructArgs)) {
2025
2025
  arr = constructArgs;
2026
2026
  }
2027
- else if (constructArgs.kind === ArkCxxAstNode_1.astKind.InitListExpr) {
2027
+ else if (constructArgs.kind === ast_1.astKind.InitListExpr) {
2028
2028
  arr = (_a = constructArgs.inner) !== null && _a !== void 0 ? _a : [];
2029
2029
  }
2030
2030
  else {
@@ -2032,11 +2032,11 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2032
2032
  arr = (_b = constructArgs.inner) !== null && _b !== void 0 ? _b : [];
2033
2033
  }
2034
2034
  // 2) If the second element itself is InitListExpr, take its inner as the real parameter
2035
- if (((_c = arr[1]) === null || _c === void 0 ? void 0 : _c.kind) === ArkCxxAstNode_1.astKind.InitListExpr) {
2035
+ if (((_c = arr[1]) === null || _c === void 0 ? void 0 : _c.kind) === ast_1.astKind.InitListExpr) {
2036
2036
  arr = (_d = arr[1].inner) !== null && _d !== void 0 ? _d : [];
2037
2037
  }
2038
2038
  // 3) If there is "implicit conversion" (original logic: check whether the second element is ImplicitCastExpr)
2039
- const useInner1 = ((_e = arr[1]) === null || _e === void 0 ? void 0 : _e.kind) === ArkCxxAstNode_1.astKind.ImplicitCastExpr;
2039
+ const useInner1 = ((_e = arr[1]) === null || _e === void 0 ? void 0 : _e.kind) === ast_1.astKind.ImplicitCastExpr;
2040
2040
  // 4) Generate a new parameter list (equivalent to the original logic)
2041
2041
  const newConstructArgs = [];
2042
2042
  for (let i = 0; i < arr.length; i++) {
@@ -2345,8 +2345,8 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2345
2345
  // Use temporary variables to store the value before self increment, and avoid this expression for some non assignment operation scenarios
2346
2346
  if (operatorToken === '++' || operatorToken === '--') {
2347
2347
  const needAssign = [
2348
- ArkCxxAstNode_1.astKind.VarDecl, ArkCxxAstNode_1.astKind.BinaryOperator, ArkCxxAstNode_1.astKind.BinaryConditionalOperator,
2349
- ArkCxxAstNode_1.astKind.ConditionalOperator, ArkCxxAstNode_1.astKind.ArraySubscriptExpr,
2348
+ ast_1.astKind.VarDecl, ast_1.astKind.BinaryOperator, ast_1.astKind.BinaryConditionalOperator,
2349
+ ast_1.astKind.ConditionalOperator, ast_1.astKind.ArraySubscriptExpr,
2350
2350
  ];
2351
2351
  let parent = (_c = ((_a = postfixUnaryExpression.parent) !== null && _a !== void 0 ? _a : (_b = postfixUnaryExpression.getParent) === null || _b === void 0 ? void 0 : _b.call(postfixUnaryExpression, true))) !== null && _c !== void 0 ? _c : null;
2352
2352
  if (parent && needAssign.includes(parent.kind)) {
@@ -2403,7 +2403,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2403
2403
  rightOpNode = nodeInnerNode(variableDeclaration);
2404
2404
  }
2405
2405
  // In this case, the non assigned information on the right node needs to be discarded
2406
- if (this.isCxxArray(leftOpNode.type.qualType) && (rightOpNode === null || rightOpNode === void 0 ? void 0 : rightOpNode.kind) === ArkCxxAstNode_1.astKind.IntegerLiteral) {
2406
+ if (this.isCxxArray(leftOpNode.type.qualType) && (rightOpNode === null || rightOpNode === void 0 ? void 0 : rightOpNode.kind) === ast_1.astKind.IntegerLiteral) {
2407
2407
  rightOpNode = undefined;
2408
2408
  }
2409
2409
  const declarationType = variableDeclaration.type ? (0, builderUtils_1.cxxNode2Type)(variableDeclaration, this.declaringMethod) : Type_1.UnknownType.getInstance();
@@ -2430,7 +2430,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2430
2430
  */
2431
2431
  cxxAssignmentToValueAndStmts(leftOpNode, rightOpNode, variableDefFlag, isConst, declarationType, needRightOp = true) {
2432
2432
  let leftValueAndStmts;
2433
- if (leftOpNode.kind.toString() === ArkCxxAstNode_1.astKind.VarDecl) {
2433
+ if (leftOpNode.kind.toString() === ast_1.astKind.VarDecl) {
2434
2434
  leftValueAndStmts = this.cxxIdentifierToValueAndStmts(leftOpNode, variableDefFlag);
2435
2435
  }
2436
2436
  else {
@@ -2452,7 +2452,7 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2452
2452
  }
2453
2453
  const assignStmt = new Stmt_1.ArkAssignStmt(leftValue, rightValue);
2454
2454
  assignStmt.setOperandOriginalPositions([...leftPositions, ...rightPositions]);
2455
- if (leftOpNode.kind === ArkCxxAstNode_1.astKind.InitListExpr) {
2455
+ if (leftOpNode.kind === ast_1.astKind.InitListExpr) {
2456
2456
  stmts.push(...rightStmts);
2457
2457
  stmts.push(assignStmt);
2458
2458
  stmts.push(...leftStmts);
@@ -2702,31 +2702,31 @@ class ArkCxxValueTransformer extends ArkValueTransformer_1.ArkValueTransformer {
2702
2702
  const pos = [Position_1.FullPosition.cxxBuildFromNode(literalNode, this.cxxSourceFile)];
2703
2703
  const S = (v) => v !== null && v !== void 0 ? v : '';
2704
2704
  switch (literalNode.kind) {
2705
- case ArkCxxAstNode_1.astKind.IntegerLiteral: {
2705
+ case ast_1.astKind.IntegerLiteral: {
2706
2706
  const num = (S(literalNode.value) || S(literalNode.code));
2707
2707
  const constant = ValueUtil_1.CxxValueUtil.getOrCreateNumberConst(num ? num : 0);
2708
2708
  return { value: constant, valueOriginalPositions: pos, stmts };
2709
2709
  }
2710
- case ArkCxxAstNode_1.astKind.FloatingLiteral: {
2710
+ case ast_1.astKind.FloatingLiteral: {
2711
2711
  const num = this.parseFloatAsCxxFloat(S(literalNode.value) || S(literalNode.code));
2712
2712
  const constant = ValueUtil_1.CxxValueUtil.getOrCreateNumberConst(Number.isFinite(num) ? num : 0);
2713
2713
  return { value: constant, valueOriginalPositions: pos, stmts };
2714
2714
  }
2715
- case ArkCxxAstNode_1.astKind.StringLiteral: {
2715
+ case ast_1.astKind.StringLiteral: {
2716
2716
  const constant = ValueUtil_1.CxxValueUtil.createStringConst(S(literalNode.value) || S(literalNode.code));
2717
2717
  return { value: constant, valueOriginalPositions: pos, stmts };
2718
2718
  }
2719
- case ArkCxxAstNode_1.astKind.CharacterLiteral: {
2719
+ case ast_1.astKind.CharacterLiteral: {
2720
2720
  const constant = ValueUtil_1.CxxValueUtil.createCharConst(S(literalNode.code));
2721
2721
  return { value: constant, valueOriginalPositions: pos, stmts };
2722
2722
  }
2723
- case ArkCxxAstNode_1.astKind.CXXBoolLiteralExpr: {
2723
+ case ast_1.astKind.CXXBoolLiteralExpr: {
2724
2724
  const raw = ((_b = (_a = literalNode.value) !== null && _a !== void 0 ? _a : literalNode.code) !== null && _b !== void 0 ? _b : '').toString().trim().toLowerCase();
2725
2725
  const b = raw === 'true' || raw === '1';
2726
2726
  const constant = ValueUtil_1.CxxValueUtil.getBooleanConstant(b);
2727
2727
  return { value: constant, valueOriginalPositions: pos, stmts };
2728
2728
  }
2729
- case ArkCxxAstNode_1.astKind.CXXNullPtrLiteralExpr: {
2729
+ case ast_1.astKind.CXXNullPtrLiteralExpr: {
2730
2730
  const constant = Constant_1.NullConstant.getInstance();
2731
2731
  return { value: constant, valueOriginalPositions: pos, stmts };
2732
2732
  }