@idlizer/arktscgen 2.1.7 → 2.1.9-arktscgen-5

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 (328) hide show
  1. package/build/libarkts-copy/generator/options.json5 +34 -0
  2. package/build/libarkts-copy/native/meson.build +128 -75
  3. package/build/libarkts-copy/native/meson_options.txt +6 -0
  4. package/build/libarkts-copy/native/src/bridges.cc +271 -8
  5. package/build/libarkts-copy/native/src/common.cc +168 -47
  6. package/build/libarkts-copy/native/src/common.h +53 -8
  7. package/build/libarkts-copy/native/src/generated/bridges.cc +2625 -319
  8. package/build/libarkts-copy/package.json +31 -17
  9. package/build/libarkts-copy/src/Es2pandaNativeModule.ts +98 -4
  10. package/build/libarkts-copy/src/arkts-api/AbstractVisitor.ts +1 -1
  11. package/build/libarkts-copy/src/arkts-api/ChainExpressionFilter.ts +78 -0
  12. package/build/libarkts-copy/src/arkts-api/CheckedBackFilter.ts +86 -8
  13. package/build/libarkts-copy/src/arkts-api/CompileWithCache.ts +193 -0
  14. package/build/libarkts-copy/src/arkts-api/ImportStorage.ts +78 -0
  15. package/build/libarkts-copy/src/arkts-api/InferVoidReturnType.ts +89 -0
  16. package/build/libarkts-copy/src/arkts-api/ProgramProvider.ts +50 -0
  17. package/build/libarkts-copy/src/arkts-api/SetBaseOverloads.ts +10 -17
  18. package/build/libarkts-copy/src/arkts-api/class-by-peer.ts +2 -3
  19. package/build/libarkts-copy/src/arkts-api/factory/nodeFactory.ts +18 -6
  20. package/build/libarkts-copy/src/arkts-api/index.ts +10 -1
  21. package/build/libarkts-copy/src/arkts-api/node-cache.ts +8 -4
  22. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationUsage.ts +29 -0
  23. package/build/libarkts-copy/src/arkts-api/node-utilities/ArkTsConfig.ts +25 -0
  24. package/build/libarkts-copy/src/arkts-api/node-utilities/ArrayExpression.ts +1 -1
  25. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockStatement.ts +29 -0
  26. package/build/libarkts-copy/src/arkts-api/node-utilities/CallExpression.ts +2 -2
  27. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDeclaration.ts +54 -0
  28. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDefinition.ts +1 -1
  29. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassProperty.ts +3 -3
  30. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSFunctionType.ts +2 -2
  31. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSImportDeclaration.ts +3 -33
  32. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSParameterExpression.ts +3 -9
  33. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSStructDeclaration.ts +1 -1
  34. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTuple.ts +1 -1
  35. package/build/libarkts-copy/src/arkts-api/node-utilities/MemberExpression.ts +1 -1
  36. package/build/libarkts-copy/src/arkts-api/node-utilities/MethodDefinition.ts +2 -2
  37. package/build/libarkts-copy/src/arkts-api/node-utilities/NumberLiteral.ts +2 -2
  38. package/build/libarkts-copy/src/arkts-api/node-utilities/ObjectExpression.ts +1 -1
  39. package/build/libarkts-copy/src/arkts-api/node-utilities/Program.ts +40 -0
  40. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceDeclaration.ts +2 -2
  41. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameter.ts +1 -1
  42. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeReferencePart.ts +1 -1
  43. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclaration.ts +1 -1
  44. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclarator.ts +1 -1
  45. package/build/libarkts-copy/src/arkts-api/peers/ArktsObject.ts +3 -1
  46. package/build/libarkts-copy/src/arkts-api/peers/AstNode.ts +80 -15
  47. package/build/libarkts-copy/src/arkts-api/peers/Config.ts +8 -1
  48. package/build/libarkts-copy/src/arkts-api/peers/Context.ts +71 -4
  49. package/build/libarkts-copy/src/arkts-api/peers/{Program.ts → ExternalSource.ts} +2 -22
  50. package/build/libarkts-copy/src/arkts-api/peers/Options.ts +34 -0
  51. package/build/libarkts-copy/src/arkts-api/plugins.ts +26 -12
  52. package/build/libarkts-copy/src/arkts-api/static/global.ts +10 -4
  53. package/build/libarkts-copy/src/arkts-api/static/profiler.ts +180 -23
  54. package/build/libarkts-copy/src/arkts-api/utilities/private.ts +22 -24
  55. package/build/libarkts-copy/src/arkts-api/utilities/public.ts +54 -12
  56. package/build/libarkts-copy/src/arkts-api/visitor.ts +32 -37
  57. package/build/libarkts-copy/src/arkts-api/wrapper-compat.ts +32 -0
  58. package/build/libarkts-copy/src/checkSdk.ts +25 -0
  59. package/build/libarkts-copy/src/generated/Es2pandaEnums.ts +450 -442
  60. package/build/libarkts-copy/src/generated/Es2pandaNativeModule.ts +769 -63
  61. package/build/libarkts-copy/src/generated/factory.ts +12 -15
  62. package/build/libarkts-copy/src/generated/index.ts +10 -3
  63. package/build/libarkts-copy/src/generated/peers/AnnotatedAstNode.ts +7 -1
  64. package/build/libarkts-copy/src/generated/peers/AnnotatedExpression.ts +7 -1
  65. package/build/libarkts-copy/src/generated/peers/AnnotatedStatement.ts +7 -1
  66. package/build/libarkts-copy/src/generated/peers/AnnotationDeclaration.ts +64 -6
  67. package/build/libarkts-copy/src/generated/peers/AnnotationUsage.ts +16 -4
  68. package/build/libarkts-copy/src/generated/peers/ArkTsConfig.ts +67 -0
  69. package/build/libarkts-copy/src/generated/peers/ArrayExpression.ts +17 -5
  70. package/build/libarkts-copy/src/generated/peers/ArrowFunctionExpression.ts +46 -6
  71. package/build/libarkts-copy/src/generated/peers/AssertStatement.ts +13 -3
  72. package/build/libarkts-copy/src/generated/peers/AssignmentExpression.ts +17 -5
  73. package/build/libarkts-copy/src/generated/peers/AstDumper.ts +7 -1
  74. package/build/libarkts-copy/src/generated/peers/AstVerifier.ts +7 -1
  75. package/build/libarkts-copy/src/generated/peers/AstVisitor.ts +7 -1
  76. package/build/libarkts-copy/src/generated/peers/AwaitExpression.ts +13 -3
  77. package/build/libarkts-copy/src/generated/peers/BigIntLiteral.ts +13 -3
  78. package/build/libarkts-copy/src/generated/peers/BinaryExpression.ts +13 -3
  79. package/build/libarkts-copy/src/generated/peers/BindingProps.ts +7 -1
  80. package/build/libarkts-copy/src/generated/peers/BlockExpression.ts +14 -4
  81. package/build/libarkts-copy/src/generated/peers/BlockStatement.ts +30 -7
  82. package/build/libarkts-copy/src/generated/peers/BooleanLiteral.ts +13 -3
  83. package/build/libarkts-copy/src/generated/peers/BreakStatement.ts +16 -4
  84. package/build/libarkts-copy/src/generated/peers/CallExpression.ts +24 -3
  85. package/build/libarkts-copy/src/generated/peers/CatchClause.ts +16 -4
  86. package/build/libarkts-copy/src/generated/peers/ChainExpression.ts +13 -3
  87. package/build/libarkts-copy/src/generated/peers/CharLiteral.ts +13 -3
  88. package/build/libarkts-copy/src/generated/peers/ClassDeclaration.ts +37 -4
  89. package/build/libarkts-copy/src/generated/peers/ClassDefinition.ts +136 -42
  90. package/build/libarkts-copy/src/generated/peers/ClassElement.ts +28 -4
  91. package/build/libarkts-copy/src/generated/peers/ClassExpression.ts +13 -3
  92. package/build/libarkts-copy/src/generated/peers/ClassProperty.ts +43 -5
  93. package/build/libarkts-copy/src/generated/peers/ClassStaticBlock.ts +13 -3
  94. package/build/libarkts-copy/src/generated/peers/CodeGen.ts +7 -1
  95. package/build/libarkts-copy/src/generated/peers/ConditionalExpression.ts +13 -3
  96. package/build/libarkts-copy/src/generated/peers/ContinueStatement.ts +16 -4
  97. package/build/libarkts-copy/src/generated/peers/DebuggerStatement.ts +13 -3
  98. package/build/libarkts-copy/src/generated/peers/Declaration.ts +7 -1
  99. package/build/libarkts-copy/src/generated/peers/Decorator.ts +13 -3
  100. package/build/libarkts-copy/src/generated/peers/{OverloadInfo.ts → DiagnosticInfo.ts} +8 -2
  101. package/build/libarkts-copy/src/generated/peers/DirectEvalExpression.ts +13 -3
  102. package/build/libarkts-copy/src/generated/peers/DoWhileStatement.ts +13 -3
  103. package/build/libarkts-copy/src/generated/peers/DynamicImportData.ts +7 -1
  104. package/build/libarkts-copy/src/generated/peers/ETSClassLiteral.ts +14 -4
  105. package/build/libarkts-copy/src/generated/peers/ETSFunctionType.ts +14 -4
  106. package/build/libarkts-copy/src/generated/peers/ETSImportDeclaration.ts +20 -5
  107. package/build/libarkts-copy/src/generated/peers/ETSKeyofType.ts +14 -4
  108. package/build/libarkts-copy/src/generated/peers/ETSModule.ts +63 -4
  109. package/build/libarkts-copy/src/generated/peers/ETSNewArrayInstanceExpression.ts +14 -4
  110. package/build/libarkts-copy/src/generated/peers/ETSNewClassInstanceExpression.ts +17 -5
  111. package/build/libarkts-copy/src/generated/peers/ETSNewMultiDimArrayInstanceExpression.ts +17 -5
  112. package/build/libarkts-copy/src/generated/peers/ETSNullType.ts +14 -4
  113. package/build/libarkts-copy/src/generated/peers/ETSPackageDeclaration.ts +14 -4
  114. package/build/libarkts-copy/src/generated/peers/ETSParameterExpression.ts +54 -12
  115. package/build/libarkts-copy/src/generated/peers/ETSPrimitiveType.ts +14 -4
  116. package/build/libarkts-copy/src/generated/peers/ETSReExportDeclaration.ts +7 -1
  117. package/build/libarkts-copy/src/generated/peers/ETSStringLiteralType.ts +14 -4
  118. package/build/libarkts-copy/src/generated/peers/ETSStructDeclaration.ts +14 -4
  119. package/build/libarkts-copy/src/generated/peers/ETSTuple.ts +26 -8
  120. package/build/libarkts-copy/src/generated/peers/ETSTypeReference.ts +14 -4
  121. package/build/libarkts-copy/src/generated/peers/ETSTypeReferencePart.ts +17 -5
  122. package/build/libarkts-copy/src/generated/peers/ETSUndefinedType.ts +14 -4
  123. package/build/libarkts-copy/src/generated/peers/ETSUnionType.ts +19 -4
  124. package/build/libarkts-copy/src/generated/peers/ETSWildcardType.ts +14 -4
  125. package/build/libarkts-copy/src/generated/peers/EmptyStatement.ts +22 -4
  126. package/build/libarkts-copy/src/generated/peers/ErrorLogger.ts +7 -1
  127. package/build/libarkts-copy/src/generated/peers/ExportAllDeclaration.ts +13 -3
  128. package/build/libarkts-copy/src/generated/peers/ExportDefaultDeclaration.ts +13 -3
  129. package/build/libarkts-copy/src/generated/peers/ExportNamedDeclaration.ts +30 -7
  130. package/build/libarkts-copy/src/generated/peers/ExportSpecifier.ts +30 -3
  131. package/build/libarkts-copy/src/generated/peers/Expression.ts +7 -1
  132. package/build/libarkts-copy/src/generated/peers/ExpressionStatement.ts +13 -3
  133. package/build/libarkts-copy/src/generated/peers/ForInStatement.ts +13 -3
  134. package/build/libarkts-copy/src/generated/peers/ForOfStatement.ts +13 -3
  135. package/build/libarkts-copy/src/generated/peers/ForUpdateStatement.ts +10 -2
  136. package/build/libarkts-copy/src/generated/peers/FunctionDecl.ts +7 -1
  137. package/build/libarkts-copy/src/generated/peers/FunctionDeclaration.ts +50 -6
  138. package/build/libarkts-copy/src/generated/peers/FunctionExpression.ts +16 -4
  139. package/build/libarkts-copy/src/generated/peers/FunctionSignature.ts +7 -1
  140. package/build/libarkts-copy/src/generated/peers/IRNode.ts +7 -1
  141. package/build/libarkts-copy/src/generated/peers/Identifier.ts +24 -5
  142. package/build/libarkts-copy/src/generated/peers/IfStatement.ts +18 -3
  143. package/build/libarkts-copy/src/generated/peers/ImportDeclaration.ts +32 -4
  144. package/build/libarkts-copy/src/generated/peers/ImportDefaultSpecifier.ts +13 -3
  145. package/build/libarkts-copy/src/generated/peers/ImportExpression.ts +13 -3
  146. package/build/libarkts-copy/src/generated/peers/ImportNamespaceSpecifier.ts +13 -3
  147. package/build/libarkts-copy/src/generated/peers/ImportSource.ts +7 -1
  148. package/build/libarkts-copy/src/generated/peers/ImportSpecifier.ts +13 -3
  149. package/build/libarkts-copy/src/generated/peers/IndexInfo.ts +7 -1
  150. package/build/libarkts-copy/src/generated/peers/InterfaceDecl.ts +7 -1
  151. package/build/libarkts-copy/src/generated/peers/LabelPair.ts +7 -1
  152. package/build/libarkts-copy/src/generated/peers/LabelledStatement.ts +13 -3
  153. package/build/libarkts-copy/src/generated/peers/Literal.ts +15 -1
  154. package/build/libarkts-copy/src/generated/peers/LoopStatement.ts +7 -1
  155. package/build/libarkts-copy/src/generated/peers/MaybeOptionalExpression.ts +7 -1
  156. package/build/libarkts-copy/src/generated/peers/MemberExpression.ts +13 -3
  157. package/build/libarkts-copy/src/generated/peers/MetaProperty.ts +13 -3
  158. package/build/libarkts-copy/src/generated/peers/MethodDefinition.ts +30 -10
  159. package/build/libarkts-copy/src/generated/peers/NamedType.ts +13 -3
  160. package/build/libarkts-copy/src/generated/peers/NewExpression.ts +13 -3
  161. package/build/libarkts-copy/src/generated/peers/NullLiteral.ts +13 -3
  162. package/build/libarkts-copy/src/generated/peers/NumberLiteral.ts +25 -9
  163. package/build/libarkts-copy/src/generated/peers/ObjectDescriptor.ts +7 -1
  164. package/build/libarkts-copy/src/generated/peers/ObjectExpression.ts +14 -4
  165. package/build/libarkts-copy/src/generated/peers/OmittedExpression.ts +13 -3
  166. package/build/libarkts-copy/src/generated/peers/OpaqueTypeNode.ts +14 -4
  167. package/build/libarkts-copy/src/generated/peers/PrefixAssertionExpression.ts +13 -3
  168. package/build/libarkts-copy/src/generated/peers/Program.ts +189 -0
  169. package/build/libarkts-copy/src/generated/peers/Property.ts +16 -4
  170. package/build/libarkts-copy/src/generated/peers/RegExpLiteral.ts +13 -3
  171. package/build/libarkts-copy/src/generated/peers/ReturnStatement.ts +16 -4
  172. package/build/libarkts-copy/src/generated/peers/ScopeFindResult.ts +7 -1
  173. package/build/libarkts-copy/src/generated/peers/ScriptFunction.ts +81 -10
  174. package/build/libarkts-copy/src/generated/peers/ScriptFunctionData.ts +7 -1
  175. package/build/libarkts-copy/src/generated/peers/SequenceExpression.ts +13 -3
  176. package/build/libarkts-copy/src/generated/peers/SignatureInfo.ts +7 -1
  177. package/build/libarkts-copy/src/generated/peers/SourcePosition.ts +7 -1
  178. package/build/libarkts-copy/src/generated/peers/SourceRange.ts +7 -1
  179. package/build/libarkts-copy/src/generated/peers/SpreadElement.ts +14 -4
  180. package/build/libarkts-copy/src/generated/peers/SrcDumper.ts +46 -9
  181. package/build/libarkts-copy/src/generated/peers/Statement.ts +7 -1
  182. package/build/libarkts-copy/src/generated/peers/StringLiteral.ts +16 -4
  183. package/build/libarkts-copy/src/generated/peers/{ETSDynamicFunctionType.ts → SuggestionInfo.ts} +7 -5
  184. package/build/libarkts-copy/src/generated/peers/SuperExpression.ts +14 -4
  185. package/build/libarkts-copy/src/generated/peers/SwitchCaseStatement.ts +14 -4
  186. package/build/libarkts-copy/src/generated/peers/SwitchStatement.ts +14 -4
  187. package/build/libarkts-copy/src/generated/peers/TSAnyKeyword.ts +14 -4
  188. package/build/libarkts-copy/src/generated/peers/TSArrayType.ts +14 -4
  189. package/build/libarkts-copy/src/generated/peers/TSAsExpression.ts +14 -4
  190. package/build/libarkts-copy/src/generated/peers/TSBigintKeyword.ts +14 -4
  191. package/build/libarkts-copy/src/generated/peers/TSBooleanKeyword.ts +14 -4
  192. package/build/libarkts-copy/src/generated/peers/TSClassImplements.ts +17 -5
  193. package/build/libarkts-copy/src/generated/peers/TSConditionalType.ts +14 -4
  194. package/build/libarkts-copy/src/generated/peers/TSConstructorType.ts +14 -4
  195. package/build/libarkts-copy/src/generated/peers/TSEnumDeclaration.ts +52 -6
  196. package/build/libarkts-copy/src/generated/peers/TSEnumMember.ts +17 -5
  197. package/build/libarkts-copy/src/generated/peers/TSExternalModuleReference.ts +14 -4
  198. package/build/libarkts-copy/src/generated/peers/TSFunctionType.ts +14 -4
  199. package/build/libarkts-copy/src/generated/peers/TSImportEqualsDeclaration.ts +14 -4
  200. package/build/libarkts-copy/src/generated/peers/TSImportType.ts +14 -4
  201. package/build/libarkts-copy/src/generated/peers/TSIndexSignature.ts +14 -4
  202. package/build/libarkts-copy/src/generated/peers/TSIndexedAccessType.ts +14 -4
  203. package/build/libarkts-copy/src/generated/peers/TSInferType.ts +14 -4
  204. package/build/libarkts-copy/src/generated/peers/TSInterfaceBody.ts +14 -4
  205. package/build/libarkts-copy/src/generated/peers/TSInterfaceDeclaration.ts +82 -8
  206. package/build/libarkts-copy/src/generated/peers/TSInterfaceHeritage.ts +14 -4
  207. package/build/libarkts-copy/src/generated/peers/TSIntersectionType.ts +14 -4
  208. package/build/libarkts-copy/src/generated/peers/TSLiteralType.ts +14 -4
  209. package/build/libarkts-copy/src/generated/peers/TSMappedType.ts +14 -4
  210. package/build/libarkts-copy/src/generated/peers/TSMethodSignature.ts +14 -4
  211. package/build/libarkts-copy/src/generated/peers/TSModuleBlock.ts +14 -4
  212. package/build/libarkts-copy/src/generated/peers/TSModuleDeclaration.ts +14 -4
  213. package/build/libarkts-copy/src/generated/peers/TSNamedTupleMember.ts +14 -4
  214. package/build/libarkts-copy/src/generated/peers/TSNeverKeyword.ts +14 -4
  215. package/build/libarkts-copy/src/generated/peers/TSNonNullExpression.ts +14 -4
  216. package/build/libarkts-copy/src/generated/peers/TSNullKeyword.ts +14 -4
  217. package/build/libarkts-copy/src/generated/peers/TSNumberKeyword.ts +14 -4
  218. package/build/libarkts-copy/src/generated/peers/TSObjectKeyword.ts +14 -4
  219. package/build/libarkts-copy/src/generated/peers/TSParameterProperty.ts +14 -4
  220. package/build/libarkts-copy/src/generated/peers/TSParenthesizedType.ts +14 -4
  221. package/build/libarkts-copy/src/generated/peers/TSPropertySignature.ts +14 -4
  222. package/build/libarkts-copy/src/generated/peers/TSQualifiedName.ts +14 -4
  223. package/build/libarkts-copy/src/generated/peers/TSSignatureDeclaration.ts +14 -4
  224. package/build/libarkts-copy/src/generated/peers/TSStringKeyword.ts +14 -4
  225. package/build/libarkts-copy/src/generated/peers/TSThisType.ts +14 -4
  226. package/build/libarkts-copy/src/generated/peers/TSTupleType.ts +14 -4
  227. package/build/libarkts-copy/src/generated/peers/TSTypeAliasDeclaration.ts +59 -6
  228. package/build/libarkts-copy/src/generated/peers/TSTypeAssertion.ts +14 -4
  229. package/build/libarkts-copy/src/generated/peers/TSTypeLiteral.ts +14 -4
  230. package/build/libarkts-copy/src/generated/peers/TSTypeOperator.ts +14 -4
  231. package/build/libarkts-copy/src/generated/peers/TSTypeParameter.ts +47 -7
  232. package/build/libarkts-copy/src/generated/peers/TSTypeParameterDeclaration.ts +19 -4
  233. package/build/libarkts-copy/src/generated/peers/TSTypeParameterInstantiation.ts +14 -4
  234. package/build/libarkts-copy/src/generated/peers/TSTypePredicate.ts +14 -4
  235. package/build/libarkts-copy/src/generated/peers/TSTypeQuery.ts +14 -4
  236. package/build/libarkts-copy/src/generated/peers/TSTypeReference.ts +14 -4
  237. package/build/libarkts-copy/src/generated/peers/TSUndefinedKeyword.ts +14 -4
  238. package/build/libarkts-copy/src/generated/peers/TSUnionType.ts +14 -4
  239. package/build/libarkts-copy/src/generated/peers/TSUnknownKeyword.ts +14 -4
  240. package/build/libarkts-copy/src/generated/peers/TSVoidKeyword.ts +14 -4
  241. package/build/libarkts-copy/src/generated/peers/TaggedTemplateExpression.ts +14 -4
  242. package/build/libarkts-copy/src/generated/peers/TemplateElement.ts +17 -5
  243. package/build/libarkts-copy/src/generated/peers/TemplateLiteral.ts +14 -4
  244. package/build/libarkts-copy/src/generated/peers/ThisExpression.ts +14 -4
  245. package/build/libarkts-copy/src/generated/peers/ThrowStatement.ts +14 -4
  246. package/build/libarkts-copy/src/generated/peers/TryStatement.ts +17 -5
  247. package/build/libarkts-copy/src/generated/peers/TypeNode.ts +37 -3
  248. package/build/libarkts-copy/src/generated/peers/TypedAstNode.ts +7 -1
  249. package/build/libarkts-copy/src/generated/peers/TypedStatement.ts +7 -1
  250. package/build/libarkts-copy/src/generated/peers/TypeofExpression.ts +14 -4
  251. package/build/libarkts-copy/src/generated/peers/UnaryExpression.ts +19 -4
  252. package/build/libarkts-copy/src/generated/peers/UndefinedLiteral.ts +13 -3
  253. package/build/libarkts-copy/src/generated/peers/UpdateExpression.ts +14 -4
  254. package/build/libarkts-copy/src/generated/peers/VReg.ts +7 -1
  255. package/build/libarkts-copy/src/generated/peers/ValidationInfo.ts +7 -1
  256. package/build/libarkts-copy/src/generated/peers/VariableDeclaration.ts +52 -8
  257. package/build/libarkts-copy/src/generated/peers/VariableDeclarator.ts +17 -5
  258. package/build/libarkts-copy/src/generated/peers/VerificationContext.ts +7 -1
  259. package/build/libarkts-copy/src/generated/peers/VerifierMessage.ts +7 -1
  260. package/build/libarkts-copy/src/generated/peers/WhileStatement.ts +19 -4
  261. package/build/libarkts-copy/src/generated/peers/YieldExpression.ts +14 -4
  262. package/build/libarkts-copy/src/index.ts +13 -1
  263. package/build/libarkts-copy/src/plugin-utils.ts +117 -0
  264. package/build/libarkts-copy/src/utils.ts +17 -28
  265. package/build/libarkts-copy/src/wrapper-compat/README.md +16 -0
  266. package/build/libarkts-copy/src/wrapper-compat/arkts-api/class-by-peer.ts +46 -0
  267. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeFactory.ts +454 -0
  268. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeTests.ts +99 -0
  269. package/build/libarkts-copy/src/wrapper-compat/arkts-api/index.ts +88 -0
  270. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrayExpression.ts +38 -0
  271. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrowFunctionExpression.ts +35 -0
  272. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/AssignmentExpression.ts +38 -0
  273. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/BlockStatement.ts +27 -0
  274. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/CallExpression.ts +45 -0
  275. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDeclaration.ts +27 -0
  276. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDefinition.ts +73 -0
  277. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassProperty.ts +51 -0
  278. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSFunctionType.ts +42 -0
  279. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSImportDeclaration.ts +39 -0
  280. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSParameterExpression.ts +43 -0
  281. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ExpressionStatement.ts +28 -0
  282. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionDeclaration.ts +37 -0
  283. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionExpression.ts +28 -0
  284. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/IfStatement.ts +37 -0
  285. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MemberExpression.ts +42 -0
  286. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MethodDefinition.ts +46 -0
  287. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/NumberLiteral.ts +30 -0
  288. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ObjectExpression.ts +37 -0
  289. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/Property.ts +27 -0
  290. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ScriptFunction.ts +46 -0
  291. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/StructDeclaration.ts +28 -0
  292. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSInterfaceDeclaration.ts +47 -0
  293. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeAliasDeclaration.ts +40 -0
  294. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeParameter.ts +36 -0
  295. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TryStatement.ts +41 -0
  296. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclaration.ts +42 -0
  297. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclarator.ts +39 -0
  298. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ArktsObject.ts +45 -0
  299. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/AstNode.ts +26 -0
  300. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Config.ts +53 -0
  301. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Context.ts +60 -0
  302. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Diagnostic.ts +39 -0
  303. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticInfo.ts +33 -0
  304. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticKind.ts +33 -0
  305. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ImportPathManager.ts +34 -0
  306. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Program.ts +105 -0
  307. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourcePosition.ts +38 -0
  308. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourceRange.ts +38 -0
  309. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SuggestionInfo.ts +33 -0
  310. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/global.ts +16 -0
  311. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/globalUtils.ts +27 -0
  312. package/build/libarkts-copy/src/wrapper-compat/arkts-api/to-be-generated/MemberExpression.ts +108 -0
  313. package/build/libarkts-copy/src/wrapper-compat/arkts-api/types.ts +907 -0
  314. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/nativePtrDecoder.ts +69 -0
  315. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/performance.ts +190 -0
  316. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/private.ts +198 -0
  317. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/public.ts +325 -0
  318. package/build/libarkts-copy/src/wrapper-compat/arkts-api/visitor.ts +421 -0
  319. package/build/libarkts-copy/src/wrapper-compat/index.ts +20 -0
  320. package/lib/index.js +330 -149
  321. package/package.json +2 -2
  322. package/templates/Es2pandaEnums.ts +4 -0
  323. package/templates/Es2pandaNativeModule.ts +5 -1
  324. package/templates/factory.ts +5 -1
  325. package/templates/index.ts +5 -1
  326. package/templates/node-map.ts +5 -1
  327. package/templates/peer.ts +5 -1
  328. package/build/libarkts-copy/README.md +0 -36
@@ -20,12 +20,12 @@ import { Es2pandaNativeModule as GeneratedEs2pandaNativeModule } from "../../gen
20
20
  import { initInterop, InteropNativeModule } from "../../InteropNativeModule"
21
21
  import { Context } from "../peers/Context"
22
22
  import { Profiler } from "./profiler"
23
- import { Program } from "../peers/Program"
23
+ import { ArkTsConfig } from "../../generated"
24
24
 
25
25
  export class global {
26
26
  public static filePath: string = "./plugins/input/main.ets"
27
- public static packageName: string = ""
28
- public static filePathFromPackageRoot: string = global.filePath
27
+
28
+ public static arktsconfig?: ArkTsConfig
29
29
 
30
30
  private static _config?: KNativePointer
31
31
  public static set config(config: KNativePointer) {
@@ -37,10 +37,13 @@ export class global {
37
37
  public static configIsInitialized(): boolean {
38
38
  return global._config !== undefined && global._config !== nullptr
39
39
  }
40
+ public static resetConfig(): void {
41
+ global._config = undefined
42
+ }
40
43
 
41
44
  // TODO: rename to contextPeer
42
45
  public static get context(): KNativePointer {
43
- return global.compilerContext.peer ?? throwError('Global.context not initialized')
46
+ return global.compilerContext?.peer ?? throwError('Global.context not initialized')
44
47
  }
45
48
 
46
49
  // TODO: rename to context when the pointer valued one is eliminated
@@ -70,4 +73,7 @@ export class global {
70
73
  }
71
74
 
72
75
  public static profiler = new Profiler()
76
+
77
+ // Check node type values during node creation
78
+ public static validatePeerTypes = false
73
79
  }
@@ -13,28 +13,185 @@
13
13
  * limitations under the License.
14
14
  */
15
15
 
16
- export class Profiler {
17
- totalTime = 0
18
- transformTime = 0
19
- proceedTime = 0
20
- restartTime = 0
21
- visitedNodes = 0
22
- createdNodes = 0
16
+ import * as fs from "fs"
17
+ import * as path from "path"
18
+ import { Es2pandaContextState } from "../../generated/Es2pandaEnums"
19
+ import { global } from "./global"
20
+
21
+ const PERFORMANCE_DATA_DIR = "./performance-results/"
22
+
23
+ interface PluginData {
24
+ transformTime: number
25
+ transformTimeDeps: number
26
+ visitedNodes: number
27
+ createdNodes: number
28
+ contextState?: Es2pandaContextState
29
+ }
30
+
31
+ function emptyPluginData(contextState?: Es2pandaContextState): PluginData {
32
+ return {
33
+ transformTime: 0,
34
+ transformTimeDeps: 0,
35
+ visitedNodes: 0,
36
+ createdNodes: 0,
37
+ contextState: contextState
38
+ }
39
+ }
40
+
41
+ interface PerformanceData {
42
+ filePath: string
43
+
44
+ visitedNodes: number
45
+ createdNodes: number
46
+ restartTime: number
47
+ proceedTime: number
48
+ totalTime: number
49
+
50
+ pluginsByName: Record<string, PluginData>
51
+ }
52
+
53
+ interface PerformanceDataFile {
54
+ data: PerformanceData[]
55
+ summary?: PerformanceData
56
+ }
57
+
58
+ function parseFile(performanceFile: string): PerformanceDataFile | undefined {
59
+ if (!fs.existsSync(performanceFile)) return undefined
60
+
61
+ const data = fs.readFileSync(path.resolve(performanceFile)).toString()
62
+ if (!data.length) return undefined
63
+ return JSON.parse(data) as PerformanceDataFile
64
+ }
65
+
66
+ export class Profiler implements PerformanceData {
67
+ filePath: string = ""
68
+ visitedNodes: number = 0
69
+ createdNodes: number = 0
70
+ restartTime: number = 0
71
+ proceedTime: number = 0
72
+ totalTime: number = 0
73
+ pluginsByName: Record<string, PluginData> = {}
74
+
75
+ curPlugin: string = ""
76
+ curContextState?: Es2pandaContextState
77
+
78
+ private getPluginData(pluginName: string, contextState?: Es2pandaContextState): PluginData {
79
+ if (!(pluginName in this.pluginsByName)) {
80
+ this.pluginsByName[pluginName] = emptyPluginData(contextState)
81
+ }
82
+ return this.pluginsByName[pluginName]
83
+ }
84
+
85
+ disableReport = false
86
+
87
+ nodeCreated() {
88
+ this.createdNodes++
89
+ if (this.curPlugin) this.getPluginData(this.curPlugin, this.curContextState).createdNodes++
90
+ }
91
+
92
+ nodeVisited() {
93
+ this.visitedNodes++
94
+ if (this.curPlugin) this.getPluginData(this.curPlugin, this.curContextState).visitedNodes++
95
+ }
96
+
97
+ private transformStartTime = 0
98
+ transformStarted() {
99
+ this.transformStartTime = Date.now()
100
+ }
101
+ private transformDepStartTime = 0
102
+ transformDepStarted() {
103
+ this.transformDepStartTime = Date.now()
104
+ }
105
+
106
+ transformEnded(state: Es2pandaContextState, pluginName: string) {
107
+ const transformEndTime = Date.now()
108
+ const consumedTime = transformEndTime - this.transformStartTime
109
+ this.getPluginData(pluginName, state).transformTime += consumedTime
110
+ }
111
+
112
+ transformDepEnded(state: Es2pandaContextState, pluginName: string) {
113
+ const transformEndTime = Date.now()
114
+ const consumedTime = transformEndTime - this.transformDepStartTime
115
+ this.getPluginData(pluginName, state).transformTimeDeps += consumedTime
116
+ }
117
+
118
+ restarted(consumedTime: number) {
119
+ this.restartTime += consumedTime
120
+ }
121
+
122
+ proceededToState(consumedTime: number) {
123
+ this.proceedTime += consumedTime
124
+ }
125
+
126
+ private compilationStartTime = 0
127
+ compilationStarted(filePath: string) {
128
+ this.filePath = filePath
129
+
130
+ this.visitedNodes = 0
131
+ this.createdNodes = 0
132
+ this.restartTime = 0
133
+ this.proceedTime = 0
134
+ this.totalTime = 0
135
+ this.pluginsByName = {}
136
+
137
+ this.curPlugin = ""
138
+ this.compilationStartTime = Date.now()
139
+ }
140
+
141
+ compilationEnded() {
142
+ const consumedTime: number = Date.now() - this.compilationStartTime
143
+ this.totalTime = consumedTime
144
+ }
23
145
 
24
146
  report() {
25
- console.log(
26
- "total compiler:",
27
- this.totalTime,
28
- " proceeds:",
29
- this.proceedTime,
30
- " restarts",
31
- this.restartTime,
32
- " transforms:",
33
- this.transformTime,
34
- " visited:",
35
- this.visitedNodes,
36
- " created:",
37
- this.createdNodes
38
- )
39
- }
40
- }
147
+ Object.entries(this.pluginsByName).forEach((data, key) => {
148
+ console.log(data[0], "totalTransformTime =", data[1].transformTime, "ms")
149
+ console.log(data[0], "totalDepsTransformTime =", data[1].transformTimeDeps, "ms")
150
+ })
151
+ }
152
+
153
+ reportToFile(withSummary: boolean = false) {
154
+ if (this.disableReport) return
155
+ const outDir = path.resolve(global.arktsconfig!.outDir, PERFORMANCE_DATA_DIR)
156
+ fs.mkdirSync(outDir, { recursive: true })
157
+ const outFilePath = path.resolve(outDir, path.basename(this.filePath)) + ".json"
158
+
159
+ const data: PerformanceDataFile = { data: [this as PerformanceData] }
160
+ if (!fs.existsSync(outFilePath)) {
161
+ fs.writeFileSync(outFilePath, JSON.stringify(data))
162
+ } else {
163
+ const savedData: PerformanceDataFile | undefined = parseFile(outFilePath) ?? data
164
+ savedData.data.push(this as PerformanceData)
165
+
166
+ if (withSummary) {
167
+ const summary: PerformanceData = {
168
+ filePath: this.filePath,
169
+ visitedNodes: savedData.data.map(it => it.visitedNodes).reduce((sum, it) => sum + it),
170
+ createdNodes: savedData.data.map(it => it.createdNodes).reduce((sum, it) => sum + it),
171
+ restartTime: savedData.data.map(it => it.restartTime).reduce((sum, it) => sum + it),
172
+ proceedTime: savedData.data.map(it => it.proceedTime).reduce((sum, it) => sum + it),
173
+ totalTime: savedData.data.map(it => it.totalTime).reduce((sum, it) => sum + it),
174
+ pluginsByName: {}
175
+ }
176
+ const pluginNames = new Set(savedData.data.flatMap(it => Object.keys(it.pluginsByName)))
177
+ for (const pluginName of pluginNames) {
178
+ const sumTransformTime = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].transformTime).reduce((sum, it) => sum+it)
179
+ const sumTransformTimeDeps = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].transformTimeDeps).reduce((sum, it) => sum+it)
180
+ const sumCreatedNodes = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].createdNodes).reduce((sum, it) => sum+it)
181
+ const sumVisitedNodes = savedData.data.map(it => it.pluginsByName).filter(it => !!it[pluginName]).map(it => it[pluginName].visitedNodes).reduce((sum, it) => sum+it)
182
+
183
+ summary.pluginsByName[pluginName] = {
184
+ transformTime: sumTransformTime,
185
+ transformTimeDeps: sumTransformTimeDeps,
186
+ createdNodes: sumCreatedNodes,
187
+ visitedNodes: sumVisitedNodes,
188
+ }
189
+ }
190
+
191
+ savedData.summary = summary
192
+ }
193
+
194
+ fs.writeFileSync(outFilePath, JSON.stringify(savedData))
195
+ }
196
+ }
197
+ }
@@ -43,21 +43,24 @@ export function assertValidPeer(peer: KPtr, expectedKind: Es2pandaAstNodeType):
43
43
  if (peer === nullptr) {
44
44
  throwError(`invalid peer`)
45
45
  }
46
- const peerType = global.generatedEs2panda._AstNodeTypeConst(global.context, peer)
47
- if (peerType === Es2pandaAstNodeType.AST_NODE_TYPE_STRUCT_DECLARATION && expectedKind === Es2pandaAstNodeType.AST_NODE_TYPE_CLASS_DECLARATION) {
48
- // TODO: Struct is a child class of Class
49
- return
50
- }
51
- if (peerType === Es2pandaAstNodeType.AST_NODE_TYPE_ETS_IMPORT_DECLARATION && expectedKind === Es2pandaAstNodeType.AST_NODE_TYPE_IMPORT_DECLARATION) {
52
- // TODO: ETSImportDeclaration is a child of a ImportDeclaration
53
- return
54
- }
55
- if (peerType === Es2pandaAstNodeType.AST_NODE_TYPE_ETS_MODULE && expectedKind === Es2pandaAstNodeType.AST_NODE_TYPE_BLOCK_STATEMENT) {
56
- // TODO: ETSModule is a child of a BlockStatement
57
- return
58
- }
59
- if (peerType !== expectedKind) {
60
- throwError(`expected: ${Es2pandaAstNodeType[expectedKind]}, got: ${Es2pandaAstNodeType[peerType]}`)
46
+
47
+ if (global.validatePeerTypes) {
48
+ const peerType = global.generatedEs2panda._AstNodeTypeConst(global.context, peer)
49
+ if (peerType === Es2pandaAstNodeType.AST_NODE_TYPE_STRUCT_DECLARATION && expectedKind === Es2pandaAstNodeType.AST_NODE_TYPE_CLASS_DECLARATION) {
50
+ // TODO: Struct is a child class of Class
51
+ return
52
+ }
53
+ if (peerType === Es2pandaAstNodeType.AST_NODE_TYPE_ETS_IMPORT_DECLARATION && expectedKind === Es2pandaAstNodeType.AST_NODE_TYPE_IMPORT_DECLARATION) {
54
+ // TODO: ETSImportDeclaration is a child of a ImportDeclaration
55
+ return
56
+ }
57
+ if (peerType === Es2pandaAstNodeType.AST_NODE_TYPE_ETS_MODULE && expectedKind === Es2pandaAstNodeType.AST_NODE_TYPE_BLOCK_STATEMENT) {
58
+ // TODO: ETSModule is a child of a BlockStatement
59
+ return
60
+ }
61
+ if (peerType !== expectedKind) {
62
+ throwError(`expected: ${Es2pandaAstNodeType[expectedKind]}, got: ${Es2pandaAstNodeType[peerType]}`)
63
+ }
61
64
  }
62
65
  }
63
66
 
@@ -121,13 +124,9 @@ export function unpackString(peer: KNativePointer): string {
121
124
 
122
125
  // TODO: use direct string arguments instead.
123
126
  export function passString(str: string | undefined): string {
124
- if (str === undefined) {
125
- return ""
126
- }
127
- return withString(str, (it: string) => it)
127
+ return str ?? ""
128
128
  }
129
129
 
130
-
131
130
  // TODO: use direct string arguments instead.
132
131
  export function passStringArray(strings: readonly string[]): string[] {
133
132
  return withStringArray(strings, (it: string[]) => it)
@@ -147,14 +146,13 @@ export function updateNodeByNode<T extends ArktsObject>(node: T, original: T): T
147
146
  if (original.peer === nullptr) {
148
147
  throwError('update called on NULLPTR')
149
148
  }
150
- if (original instanceof AstNode) {
151
- global.generatedEs2panda._AstNodeSetOriginalNode(global.context, node.peer, original.originalPeer)
152
- }
149
+ original.onUpdate(node)
153
150
  global.generatedEs2panda._AstNodeSetParent(global.context, node.peer, global.generatedEs2panda._AstNodeParent(global.context, original.peer))
154
- global.es2panda._AstNodeUpdateChildren(global.context, node.peer)
151
+ global.es2panda._AstNodeSetChildrenParentPtr(global.context, node.peer)
155
152
  return node
156
153
  }
157
154
 
158
155
  export function nodeType(node: AstNode): Es2pandaAstNodeType {
159
156
  return global.generatedEs2panda._AstNodeTypeConst(global.context, passNode(node))
160
157
  }
158
+
@@ -14,16 +14,16 @@
14
14
  */
15
15
 
16
16
  import { global } from "../static/global"
17
- import { isNumber, throwError } from "../../utils"
17
+ import { isNumber, throwError, withWarning } from "../../utils"
18
18
  import { KNativePointer, nullptr } from "@koalaui/interop"
19
19
  import { passNode, passNodeArray, unpackNodeArray, unpackNonNullableNode } from "./private"
20
20
  import { Es2pandaContextState, Es2pandaModifierFlags } from "../../generated/Es2pandaEnums"
21
21
  import type { AstNode } from "../peers/AstNode"
22
+ import { isSameNativeObject } from "../peers/ArktsObject"
22
23
  import {
23
24
  type AnnotationUsage,
24
25
  ClassDefinition,
25
26
  ClassProperty,
26
- ETSImportDeclaration,
27
27
  ETSModule,
28
28
  isClassDefinition,
29
29
  isFunctionDeclaration,
@@ -35,13 +35,19 @@ import {
35
35
  import { Config } from "../peers/Config"
36
36
  import { Context } from "../peers/Context"
37
37
  import { NodeCache } from "../node-cache"
38
+ import { listPrograms } from "../plugins"
38
39
 
39
40
  export function createETSModuleFromContext(): ETSModule {
40
41
  let program = global.es2panda._ContextProgram(global.context)
41
42
  if (program == nullptr) {
42
43
  throw new Error(`Program is null for context ${global.context.toString(16)}`)
43
44
  }
44
- return new ETSModule(global.es2panda._ProgramAst(global.context, program))
45
+ const ast = global.es2panda._ProgramAst(global.context, program)
46
+ if (ast == nullptr) {
47
+ throw new Error(`AST is null for program ${program.toString(16)}`)
48
+
49
+ }
50
+ return new ETSModule(ast)
45
51
  }
46
52
 
47
53
  export function createETSModuleFromSource(
@@ -59,10 +65,18 @@ export function createETSModuleFromSource(
59
65
  return new ETSModule(global.es2panda._ProgramAst(global.context, program))
60
66
  }
61
67
 
68
+ export function metaDatabase(fileName: string): string {
69
+ if (fileName.endsWith(".meta.json")) throw new Error(`Must pass source, not database: ${fileName}`)
70
+ return `${fileName}.meta.json`
71
+ }
72
+
62
73
  export function updateETSModuleByStatements(
63
74
  node: ETSModule,
64
75
  statements: readonly AstNode[],
65
76
  ): ETSModule {
77
+ if (isSameNativeObject(statements, node.statements)) {
78
+ return node
79
+ }
66
80
  global.generatedEs2panda._BlockStatementSetStatements(global.context, node.peer, passNodeArray(statements), statements.length)
67
81
  return node
68
82
  }
@@ -83,7 +97,7 @@ export function proceedToState(state: Es2pandaContextState): void {
83
97
  const before = Date.now()
84
98
  global.es2panda._ProceedToState(global.context, state)
85
99
  const after = Date.now()
86
- global.profiler.proceedTime += after-before
100
+ global.profiler.proceededToState(after-before)
87
101
  NodeCache.clear()
88
102
  checkErrors()
89
103
  }
@@ -102,6 +116,19 @@ export function rebindSubtree(node: AstNode): void {
102
116
  checkErrors()
103
117
  }
104
118
 
119
+ export function recheckContext(context: KNativePointer): void {
120
+ global.es2panda._AstNodeRecheck(
121
+ context,
122
+ global.es2panda._ProgramAst(
123
+ context,
124
+ global.es2panda._ContextProgram(
125
+ context
126
+ )
127
+ )
128
+ )
129
+ checkErrors()
130
+ }
131
+
105
132
  export function getDecl(node: AstNode): AstNode | undefined {
106
133
  if (isMemberExpression(node)) {
107
134
  return getDecl(node.property!)
@@ -139,14 +166,6 @@ export function getFileName(): string {
139
166
  return global.filePath
140
167
  }
141
168
 
142
- export function getPackageName(): string {
143
- return global.packageName
144
- }
145
-
146
- export function getFilePathFromPackageRoot(): string {
147
- return global.filePathFromPackageRoot
148
- }
149
-
150
169
  // TODO: It seems like Definition overrides AstNode modifiers
151
170
  // with it's own modifiers which is completely unrelated set of flags.
152
171
  // Use this function if you need
@@ -197,3 +216,26 @@ export function nameIfETSModule(node: AstNode): string {
197
216
  export function asString(node: AstNode|undefined): string {
198
217
  return `${node?.constructor.name} ${node ? nameIfIdentifier(node) : undefined}`
199
218
  }
219
+
220
+ const defaultPandaSdk = "../../../incremental/tools/panda/node_modules/@panda/sdk"
221
+
222
+
223
+ export function findStdlib(): string {
224
+ const sdk = process.env.PANDA_SDK_PATH ?? withWarning(
225
+ defaultPandaSdk,
226
+ `PANDA_SDK_PATH not set, assuming ${defaultPandaSdk}`
227
+ )
228
+ return `${sdk}/ets/stdlib`
229
+ }
230
+
231
+ export function collectDependencies(files: string[], configPath: string): string[] {
232
+ const result = new Set<string>()
233
+ for (let file of files) {
234
+ const context = Context.createFromFile(file, configPath, findStdlib(), "/tmp/foo.abc")!
235
+ global.compilerContext = context
236
+ proceedToState(Es2pandaContextState.ES2PANDA_STATE_PARSED)
237
+ listPrograms(context.program).forEach(it => result.add(it.absoluteName))
238
+ context.destroy()
239
+ }
240
+ return Array.from(result)
241
+ }
@@ -13,66 +13,65 @@
13
13
  * limitations under the License.
14
14
  */
15
15
 
16
- import { factory } from "./factory/nodeFactory"
17
- import { AstNode } from "./peers/AstNode"
18
16
  import {
19
17
  isArrayExpression,
20
18
  isArrowFunctionExpression,
21
19
  isAssignmentExpression,
20
+ isBinaryExpression,
22
21
  isBlockExpression,
23
22
  isBlockStatement,
24
- isBinaryExpression,
25
23
  isCallExpression,
26
24
  isChainExpression,
27
25
  isClassDeclaration,
28
26
  isClassDefinition,
27
+ isClassProperty,
29
28
  isConditionalExpression,
29
+ isDoWhileStatement,
30
+ isETSFunctionType,
31
+ isETSImportDeclaration,
30
32
  isETSModule,
33
+ isETSNewClassInstanceExpression,
34
+ isETSParameterExpression,
31
35
  isETSStructDeclaration,
32
36
  isETSTuple,
37
+ isETSTypeReference,
38
+ isETSTypeReferencePart,
39
+ isETSUnionType,
33
40
  isExpressionStatement,
41
+ isForInStatement,
42
+ isForOfStatement,
43
+ isForUpdateStatement,
34
44
  isFunctionDeclaration,
35
45
  isFunctionExpression,
46
+ isIdentifier,
36
47
  isIfStatement,
37
48
  isMemberExpression,
38
49
  isMethodDefinition,
39
50
  isObjectExpression,
51
+ isProperty,
40
52
  isReturnStatement,
41
53
  isScriptFunction,
54
+ isSwitchCaseStatement,
55
+ isSwitchStatement,
42
56
  isTemplateLiteral,
43
57
  isTryStatement,
44
58
  isTSAsExpression,
45
59
  isTSInterfaceBody,
46
60
  isTSInterfaceDeclaration,
61
+ isTSNonNullExpression,
47
62
  isTSTypeAliasDeclaration,
63
+ isTSTypeParameterDeclaration,
64
+ isTSTypeParameterInstantiation,
65
+ isUpdateExpression,
48
66
  isVariableDeclaration,
49
67
  isVariableDeclarator,
50
- isClassProperty,
51
- isIdentifier,
52
- isETSParameterExpression,
53
- isETSUnionType,
54
- isETSFunctionType,
55
- isWhileStatement,
56
- isForUpdateStatement,
57
- isForInStatement,
58
- isForOfStatement,
59
- isDoWhileStatement,
60
- isSwitchStatement,
61
- isSwitchCaseStatement,
62
- isETSImportDeclaration,
63
- isProperty,
64
- isETSNewClassInstanceExpression,
65
- isClassStaticBlock,
66
- isTSNonNullExpression,
67
- isUpdateExpression,
68
- isETSTypeReference,
69
- isETSTypeReferencePart,
70
- isTSTypeParameterInstantiation,
71
- isTSTypeParameterDeclaration
68
+ isWhileStatement
72
69
  } from "../generated"
73
- import { updateETSModuleByStatements } from "./utilities/public"
70
+ import { Es2pandaImportKinds } from "../generated/Es2pandaEnums"
71
+ import { factory } from "./factory/nodeFactory"
72
+ import { AstNode } from "./peers/AstNode"
74
73
  import { global } from "./static/global"
75
- import { Es2pandaImportKinds, Es2pandaScriptFunctionFlags } from "../generated/Es2pandaEnums"
74
+ import { updateETSModuleByStatements } from "./utilities/public"
76
75
 
77
76
  type Visitor = (node: AstNode, options?: object) => AstNode
78
77
 
@@ -145,7 +144,7 @@ export function visitEachChild(
145
144
  node: AstNode,
146
145
  visitor: Visitor
147
146
  ): AstNode {
148
- global.profiler.visitedNodes ++
147
+ global.profiler.nodeVisited()
149
148
  if (isETSModule(node)) {
150
149
  return updateETSModuleByStatements(
151
150
  node,
@@ -202,12 +201,11 @@ export function visitEachChild(
202
201
  )
203
202
  }
204
203
  if (isClassDeclaration(node)) {
205
- const _node = factory.updateClassDeclaration(
204
+ return factory.updateClassDeclaration(
206
205
  node,
207
- nodeVisitor(node.definition, visitor)
206
+ nodeVisitor(node.definition, visitor),
207
+ node.modifierFlags,
208
208
  )
209
- _node.modifierFlags = node.modifierFlags
210
- return _node
211
209
  }
212
210
  if (isClassDefinition(node)) {
213
211
  return factory.updateClassDefinition(
@@ -258,7 +256,6 @@ export function visitEachChild(
258
256
  nodeVisitor(node.ident, visitor),
259
257
  node.isOptional,
260
258
  nodeVisitor(node.initializer, visitor),
261
- nodeVisitor(node.typeAnnotation, visitor),
262
259
  nodesVisitor(node.annotations, visitor),
263
260
  )
264
261
  }
@@ -459,8 +456,8 @@ export function visitEachChild(
459
456
  if (isBinaryExpression(node)) {
460
457
  return factory.updateBinaryExpression(
461
458
  node,
462
- node.left,
463
- node.right,
459
+ nodeVisitor(node.left, visitor),
460
+ nodeVisitor(node.right, visitor),
464
461
  node.operatorType)
465
462
  }
466
463
  if (isIdentifier(node)) {
@@ -518,14 +515,12 @@ export function visitEachChild(
518
515
  )
519
516
  }
520
517
  if (isETSImportDeclaration(node)) {
521
- /*
522
518
  return factory.updateETSImportDeclaration(
523
519
  node,
524
520
  nodeVisitor(node.source, visitor),
525
521
  nodesVisitor(node.specifiers, visitor),
526
522
  Es2pandaImportKinds.IMPORT_KINDS_ALL
527
523
  )
528
- */
529
524
  }
530
525
  if (isTSNonNullExpression(node)) {
531
526
  return factory.updateTSNonNullExpression(
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright (c) 2022-2025 Huawei Device Co., Ltd.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+
16
+ // koala-wrapper compatibility helpers
17
+
18
+ import { KNativePointer } from "@koalaui/interop"
19
+ import { ETSModule } from "../generated"
20
+ import { createETSModuleFromContext } from "./utilities/public"
21
+ import { global } from "./static/global"
22
+
23
+ export class EtsScript {
24
+ public static fromContext(): ETSModule {
25
+ return createETSModuleFromContext()
26
+ }
27
+ }
28
+
29
+ export function destroyConfig(config: KNativePointer): void {
30
+ global.es2panda._DestroyConfig(config)
31
+ global.resetConfig()
32
+ }
@@ -0,0 +1,25 @@
1
+ import * as fs from "fs"
2
+ import * as path from "path"
3
+
4
+ function reportErrorAndExit(message: string): never {
5
+ console.error(message)
6
+ process.exit(1)
7
+ }
8
+
9
+ export function checkSDK() {
10
+ const panda = process.env.PANDA_SDK_PATH
11
+ if (!panda)
12
+ reportErrorAndExit(`Variable PANDA_SDK_PATH is not set, please fix`)
13
+ if (!fs.existsSync(path.join(panda, 'package.json')))
14
+ reportErrorAndExit(`Variable PANDA_SDK_PATH not points to SDK`)
15
+ const packageJson = JSON.parse(fs.readFileSync(path.join(panda, 'package.json')).toString())
16
+ const version = packageJson.version as string
17
+ if (!version)
18
+ reportErrorAndExit(`version is unknown`)
19
+ const packageJsonOur = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json')).toString())
20
+ const expectedVersion = packageJsonOur.config.panda_sdk_version
21
+ if (expectedVersion && expectedVersion != "next" && version != expectedVersion)
22
+ console.log(`WARNING: Panda SDK version "${version}" doesn't match expected "${expectedVersion}"`)
23
+ else
24
+ console.log(`Using Panda ${version}`)
25
+ }