brighterscript 1.0.0-alpha.24 → 1.0.0-alpha.26

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 (536) hide show
  1. package/CHANGELOG.md +521 -233
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +46 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +152 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +40 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +7 -0
  17. package/dist/CacheVerifier.js +20 -0
  18. package/dist/CacheVerifier.js.map +1 -0
  19. package/dist/CodeActionUtil.d.ts +3 -3
  20. package/dist/CodeActionUtil.js.map +1 -1
  21. package/dist/CommentFlagProcessor.d.ts +3 -2
  22. package/dist/CommentFlagProcessor.js +5 -4
  23. package/dist/CommentFlagProcessor.js.map +1 -1
  24. package/dist/DependencyGraph.d.ts +3 -2
  25. package/dist/DependencyGraph.js +11 -10
  26. package/dist/DependencyGraph.js.map +1 -1
  27. package/dist/DiagnosticCollection.js +9 -5
  28. package/dist/DiagnosticCollection.js.map +1 -1
  29. package/dist/DiagnosticFilterer.d.ts +1 -0
  30. package/dist/DiagnosticFilterer.js +5 -3
  31. package/dist/DiagnosticFilterer.js.map +1 -1
  32. package/dist/DiagnosticMessages.d.ts +61 -13
  33. package/dist/DiagnosticMessages.js +116 -19
  34. package/dist/DiagnosticMessages.js.map +1 -1
  35. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  36. package/dist/DiagnosticSeverityAdjuster.js +41 -0
  37. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  38. package/dist/FunctionScope.d.ts +28 -0
  39. package/dist/FunctionScope.js +52 -0
  40. package/dist/FunctionScope.js.map +1 -0
  41. package/dist/KeyedThrottler.d.ts +3 -3
  42. package/dist/KeyedThrottler.js +3 -3
  43. package/dist/KeyedThrottler.js.map +1 -1
  44. package/dist/LanguageServer.d.ts +23 -11
  45. package/dist/LanguageServer.js +150 -69
  46. package/dist/LanguageServer.js.map +1 -1
  47. package/dist/Logger.d.ts +3 -2
  48. package/dist/Logger.js +11 -3
  49. package/dist/Logger.js.map +1 -1
  50. package/dist/PluginInterface.d.ts +21 -3
  51. package/dist/PluginInterface.js +74 -6
  52. package/dist/PluginInterface.js.map +1 -1
  53. package/dist/Program.d.ts +158 -79
  54. package/dist/Program.js +841 -706
  55. package/dist/Program.js.map +1 -1
  56. package/dist/ProgramBuilder.d.ts +22 -12
  57. package/dist/ProgramBuilder.js +130 -103
  58. package/dist/ProgramBuilder.js.map +1 -1
  59. package/dist/Scope.d.ts +86 -137
  60. package/dist/Scope.js +453 -519
  61. package/dist/Scope.js.map +1 -1
  62. package/dist/Stopwatch.js +1 -1
  63. package/dist/Stopwatch.js.map +1 -1
  64. package/dist/SymbolTable.d.ts +89 -34
  65. package/dist/SymbolTable.js +239 -114
  66. package/dist/SymbolTable.js.map +1 -1
  67. package/dist/Throttler.d.ts +12 -0
  68. package/dist/Throttler.js +39 -0
  69. package/dist/Throttler.js.map +1 -1
  70. package/dist/Watcher.d.ts +0 -3
  71. package/dist/Watcher.js +0 -3
  72. package/dist/Watcher.js.map +1 -1
  73. package/dist/XmlScope.d.ts +4 -11
  74. package/dist/XmlScope.js +75 -88
  75. package/dist/XmlScope.js.map +1 -1
  76. package/dist/astUtils/CachedLookups.d.ts +48 -0
  77. package/dist/astUtils/CachedLookups.js +323 -0
  78. package/dist/astUtils/CachedLookups.js.map +1 -0
  79. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +9 -5
  80. package/dist/astUtils/{AstEditor.js → Editor.js} +10 -4
  81. package/dist/astUtils/Editor.js.map +1 -0
  82. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +69 -65
  83. package/dist/astUtils/Editor.spec.js.map +1 -0
  84. package/dist/astUtils/creators.d.ts +10 -10
  85. package/dist/astUtils/creators.js +54 -24
  86. package/dist/astUtils/creators.js.map +1 -1
  87. package/dist/astUtils/creators.spec.js +5 -5
  88. package/dist/astUtils/creators.spec.js.map +1 -1
  89. package/dist/astUtils/reflection.d.ts +132 -104
  90. package/dist/astUtils/reflection.js +220 -174
  91. package/dist/astUtils/reflection.js.map +1 -1
  92. package/dist/astUtils/reflection.spec.js +256 -157
  93. package/dist/astUtils/reflection.spec.js.map +1 -1
  94. package/dist/astUtils/stackedVisitor.spec.js +12 -12
  95. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  96. package/dist/astUtils/visitors.d.ts +53 -35
  97. package/dist/astUtils/visitors.js +29 -3
  98. package/dist/astUtils/visitors.js.map +1 -1
  99. package/dist/astUtils/visitors.spec.js +208 -52
  100. package/dist/astUtils/visitors.spec.js.map +1 -1
  101. package/dist/astUtils/xml.d.ts +9 -9
  102. package/dist/astUtils/xml.js +9 -9
  103. package/dist/astUtils/xml.js.map +1 -1
  104. package/dist/bscPlugin/BscPlugin.d.ts +11 -2
  105. package/dist/bscPlugin/BscPlugin.js +37 -3
  106. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  107. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  108. package/dist/bscPlugin/CallExpressionInfo.js +131 -0
  109. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  110. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  111. package/dist/bscPlugin/FileWriter.js +24 -0
  112. package/dist/bscPlugin/FileWriter.js.map +1 -0
  113. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  114. package/dist/bscPlugin/SignatureHelpUtil.js +136 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +16 -13
  117. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  118. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +16 -16
  119. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  120. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +52 -1
  121. package/dist/bscPlugin/completions/CompletionsProcessor.js +517 -26
  122. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  123. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
  124. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  125. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  126. package/dist/bscPlugin/definition/DefinitionProvider.js +210 -0
  127. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  128. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +88 -0
  129. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  130. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  131. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  132. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  133. package/dist/bscPlugin/hover/HoverProcessor.d.ts +7 -7
  134. package/dist/bscPlugin/hover/HoverProcessor.js +123 -125
  135. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  136. package/dist/bscPlugin/hover/HoverProcessor.spec.js +371 -53
  137. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  138. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +2 -1
  139. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +83 -23
  140. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  141. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +83 -6
  142. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  143. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  144. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  145. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  146. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  147. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  148. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  149. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  150. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  151. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  152. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  153. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +38 -12
  154. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  155. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  156. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  157. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  158. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  159. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  160. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  161. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -5
  162. package/dist/bscPlugin/validation/BrsFileValidator.js +262 -52
  163. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  164. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +230 -14
  165. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  166. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  167. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  168. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  169. package/dist/bscPlugin/validation/ScopeValidator.d.ts +58 -27
  170. package/dist/bscPlugin/validation/ScopeValidator.js +514 -286
  171. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  172. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  173. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2527 -0
  174. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  175. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  176. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  177. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  178. package/dist/cli.js +104 -13
  179. package/dist/cli.js.map +1 -1
  180. package/dist/deferred.d.ts +3 -3
  181. package/dist/deferred.js.map +1 -1
  182. package/dist/diagnosticUtils.d.ts +8 -2
  183. package/dist/diagnosticUtils.js +47 -17
  184. package/dist/diagnosticUtils.js.map +1 -1
  185. package/dist/examples/plugins/removePrint.js +8 -10
  186. package/dist/examples/plugins/removePrint.js.map +1 -1
  187. package/dist/files/AssetFile.d.ts +26 -0
  188. package/dist/files/AssetFile.js +26 -0
  189. package/dist/files/AssetFile.js.map +1 -0
  190. package/dist/files/BrsFile.Class.spec.js +523 -493
  191. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  192. package/dist/files/BrsFile.d.ts +111 -117
  193. package/dist/files/BrsFile.js +684 -1142
  194. package/dist/files/BrsFile.js.map +1 -1
  195. package/dist/files/BrsFile.spec.js +1783 -1233
  196. package/dist/files/BrsFile.spec.js.map +1 -1
  197. package/dist/files/BscFile.d.ts +104 -0
  198. package/dist/files/BscFile.js +16 -0
  199. package/dist/files/BscFile.js.map +1 -0
  200. package/dist/files/Factory.d.ts +25 -0
  201. package/dist/files/Factory.js +22 -0
  202. package/dist/files/Factory.js.map +1 -0
  203. package/dist/files/LazyFileData.d.ts +20 -0
  204. package/dist/files/LazyFileData.js +54 -0
  205. package/dist/files/LazyFileData.js.map +1 -0
  206. package/dist/files/LazyFileData.spec.d.ts +1 -0
  207. package/dist/files/LazyFileData.spec.js +27 -0
  208. package/dist/files/LazyFileData.spec.js.map +1 -0
  209. package/dist/files/XmlFile.d.ts +70 -32
  210. package/dist/files/XmlFile.js +106 -118
  211. package/dist/files/XmlFile.js.map +1 -1
  212. package/dist/files/XmlFile.spec.js +325 -262
  213. package/dist/files/XmlFile.spec.js.map +1 -1
  214. package/dist/files/tests/imports.spec.js +48 -40
  215. package/dist/files/tests/imports.spec.js.map +1 -1
  216. package/dist/files/tests/optionalChaning.spec.js +84 -24
  217. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  218. package/dist/globalCallables.js +16 -21
  219. package/dist/globalCallables.js.map +1 -1
  220. package/dist/index.d.ts +12 -1
  221. package/dist/index.js +12 -1
  222. package/dist/index.js.map +1 -1
  223. package/dist/interfaces.d.ts +421 -162
  224. package/dist/interfaces.js +27 -0
  225. package/dist/interfaces.js.map +1 -1
  226. package/dist/lexer/Character.spec.js +5 -5
  227. package/dist/lexer/Character.spec.js.map +1 -1
  228. package/dist/lexer/Lexer.d.ts +12 -5
  229. package/dist/lexer/Lexer.js +28 -13
  230. package/dist/lexer/Lexer.js.map +1 -1
  231. package/dist/lexer/Lexer.spec.js +181 -135
  232. package/dist/lexer/Lexer.spec.js.map +1 -1
  233. package/dist/lexer/Token.d.ts +9 -1
  234. package/dist/lexer/Token.js +9 -1
  235. package/dist/lexer/Token.js.map +1 -1
  236. package/dist/lexer/TokenKind.d.ts +8 -0
  237. package/dist/lexer/TokenKind.js +24 -4
  238. package/dist/lexer/TokenKind.js.map +1 -1
  239. package/dist/parser/AstNode.d.ts +162 -0
  240. package/dist/parser/AstNode.js +225 -0
  241. package/dist/parser/AstNode.js.map +1 -0
  242. package/dist/parser/AstNode.spec.d.ts +1 -0
  243. package/dist/parser/AstNode.spec.js +165 -0
  244. package/dist/parser/AstNode.spec.js.map +1 -0
  245. package/dist/parser/BrsTranspileState.d.ts +4 -7
  246. package/dist/parser/BrsTranspileState.js +4 -12
  247. package/dist/parser/BrsTranspileState.js.map +1 -1
  248. package/dist/parser/Expression.d.ts +376 -283
  249. package/dist/parser/Expression.js +742 -585
  250. package/dist/parser/Expression.js.map +1 -1
  251. package/dist/parser/Parser.Class.spec.js +151 -145
  252. package/dist/parser/Parser.Class.spec.js.map +1 -1
  253. package/dist/parser/Parser.d.ts +48 -201
  254. package/dist/parser/Parser.js +705 -1026
  255. package/dist/parser/Parser.js.map +1 -1
  256. package/dist/parser/Parser.spec.d.ts +3 -1
  257. package/dist/parser/Parser.spec.js +861 -848
  258. package/dist/parser/Parser.spec.js.map +1 -1
  259. package/dist/parser/SGParser.d.ts +9 -8
  260. package/dist/parser/SGParser.js +10 -8
  261. package/dist/parser/SGParser.js.map +1 -1
  262. package/dist/parser/SGParser.spec.js +27 -38
  263. package/dist/parser/SGParser.spec.js.map +1 -1
  264. package/dist/parser/SGTypes.d.ts +98 -35
  265. package/dist/parser/SGTypes.js +169 -99
  266. package/dist/parser/SGTypes.js.map +1 -1
  267. package/dist/parser/Statement.d.ts +468 -272
  268. package/dist/parser/Statement.js +904 -631
  269. package/dist/parser/Statement.js.map +1 -1
  270. package/dist/parser/Statement.spec.js +47 -23
  271. package/dist/parser/Statement.spec.js.map +1 -1
  272. package/dist/parser/TranspileState.d.ts +1 -1
  273. package/dist/parser/TranspileState.js +7 -12
  274. package/dist/parser/TranspileState.js.map +1 -1
  275. package/dist/parser/tests/Parser.spec.js +3 -2
  276. package/dist/parser/tests/Parser.spec.js.map +1 -1
  277. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  278. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  279. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  280. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  281. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  282. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  283. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  284. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  285. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  286. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  287. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  288. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  289. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +62 -21
  290. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  291. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  292. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  293. package/dist/parser/tests/expression/Call.spec.js +129 -21
  294. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  295. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  296. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  297. package/dist/parser/tests/expression/Function.spec.js +36 -36
  298. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  299. package/dist/parser/tests/expression/Indexing.spec.js +92 -22
  300. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  301. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  302. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  303. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +59 -59
  304. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  305. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  306. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  307. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  308. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  309. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  310. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  311. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  312. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  313. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  314. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  315. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +96 -57
  316. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  317. package/dist/parser/tests/expression/TernaryExpression.spec.js +89 -89
  318. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  319. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  320. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  321. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  322. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  323. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  324. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  325. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  326. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  327. package/dist/parser/tests/statement/ConstStatement.spec.js +82 -33
  328. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  329. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  330. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  331. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  332. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  333. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  335. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/Enum.spec.js +98 -302
  337. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/For.spec.js +9 -10
  339. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  341. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/Function.spec.js +44 -35
  343. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  345. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  347. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  349. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  351. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  353. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/PrintStatement.spec.js +36 -34
  355. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  357. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/Set.spec.js +48 -35
  359. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  360. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  361. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  362. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  363. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  364. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  365. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  366. package/dist/preprocessor/Manifest.d.ts +1 -1
  367. package/dist/preprocessor/Manifest.js +2 -2
  368. package/dist/preprocessor/Manifest.js.map +1 -1
  369. package/dist/preprocessor/Manifest.spec.js +8 -8
  370. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  371. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  372. package/dist/preprocessor/Preprocessor.js +5 -5
  373. package/dist/preprocessor/Preprocessor.js.map +1 -1
  374. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  375. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  376. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  377. package/dist/preprocessor/PreprocessorParser.js +7 -1
  378. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  379. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  380. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  381. package/dist/roku-types/data.json +5892 -10081
  382. package/dist/roku-types/index.d.ts +622 -1719
  383. package/dist/types/ArrayType.d.ts +10 -9
  384. package/dist/types/ArrayType.js +65 -60
  385. package/dist/types/ArrayType.js.map +1 -1
  386. package/dist/types/ArrayType.spec.js +36 -68
  387. package/dist/types/ArrayType.spec.js.map +1 -1
  388. package/dist/types/AssociativeArrayType.d.ts +11 -0
  389. package/dist/types/AssociativeArrayType.js +52 -0
  390. package/dist/types/AssociativeArrayType.js.map +1 -0
  391. package/dist/types/BaseFunctionType.d.ts +9 -0
  392. package/dist/types/BaseFunctionType.js +25 -0
  393. package/dist/types/BaseFunctionType.js.map +1 -0
  394. package/dist/types/BooleanType.d.ts +8 -5
  395. package/dist/types/BooleanType.js +14 -7
  396. package/dist/types/BooleanType.js.map +1 -1
  397. package/dist/types/BooleanType.spec.js +10 -6
  398. package/dist/types/BooleanType.spec.js.map +1 -1
  399. package/dist/types/BscType.d.ts +32 -21
  400. package/dist/types/BscType.js +118 -21
  401. package/dist/types/BscType.js.map +1 -1
  402. package/dist/types/BscTypeKind.d.ts +25 -0
  403. package/dist/types/BscTypeKind.js +30 -0
  404. package/dist/types/BscTypeKind.js.map +1 -0
  405. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  406. package/dist/types/BuiltInInterfaceAdder.js +171 -0
  407. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  408. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  409. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  410. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  411. package/dist/types/ClassType.d.ts +17 -0
  412. package/dist/types/ClassType.js +58 -0
  413. package/dist/types/ClassType.js.map +1 -0
  414. package/dist/types/ClassType.spec.d.ts +1 -0
  415. package/dist/types/ClassType.spec.js +77 -0
  416. package/dist/types/ClassType.spec.js.map +1 -0
  417. package/dist/types/ComponentType.d.ts +26 -0
  418. package/dist/types/ComponentType.js +83 -0
  419. package/dist/types/ComponentType.js.map +1 -0
  420. package/dist/types/DoubleType.d.ts +8 -5
  421. package/dist/types/DoubleType.js +18 -16
  422. package/dist/types/DoubleType.js.map +1 -1
  423. package/dist/types/DoubleType.spec.js +12 -6
  424. package/dist/types/DoubleType.spec.js.map +1 -1
  425. package/dist/types/DynamicType.d.ts +9 -5
  426. package/dist/types/DynamicType.js +15 -4
  427. package/dist/types/DynamicType.js.map +1 -1
  428. package/dist/types/DynamicType.spec.js +16 -5
  429. package/dist/types/DynamicType.spec.js.map +1 -1
  430. package/dist/types/EnumType.d.ts +30 -12
  431. package/dist/types/EnumType.js +43 -17
  432. package/dist/types/EnumType.js.map +1 -1
  433. package/dist/types/EnumType.spec.d.ts +1 -0
  434. package/dist/types/EnumType.spec.js +33 -0
  435. package/dist/types/EnumType.spec.js.map +1 -0
  436. package/dist/types/FloatType.d.ts +8 -5
  437. package/dist/types/FloatType.js +18 -16
  438. package/dist/types/FloatType.js.map +1 -1
  439. package/dist/types/FloatType.spec.js +4 -6
  440. package/dist/types/FloatType.spec.js.map +1 -1
  441. package/dist/types/FunctionType.d.ts +13 -8
  442. package/dist/types/FunctionType.js +30 -14
  443. package/dist/types/FunctionType.js.map +1 -1
  444. package/dist/types/InheritableType.d.ts +28 -0
  445. package/dist/types/InheritableType.js +152 -0
  446. package/dist/types/InheritableType.js.map +1 -0
  447. package/dist/types/IntegerType.d.ts +8 -5
  448. package/dist/types/IntegerType.js +18 -16
  449. package/dist/types/IntegerType.js.map +1 -1
  450. package/dist/types/IntegerType.spec.js +8 -6
  451. package/dist/types/IntegerType.spec.js.map +1 -1
  452. package/dist/types/InterfaceType.d.ts +12 -13
  453. package/dist/types/InterfaceType.js +20 -48
  454. package/dist/types/InterfaceType.js.map +1 -1
  455. package/dist/types/InterfaceType.spec.js +90 -56
  456. package/dist/types/InterfaceType.spec.js.map +1 -1
  457. package/dist/types/InvalidType.d.ts +7 -5
  458. package/dist/types/InvalidType.js +13 -7
  459. package/dist/types/InvalidType.js.map +1 -1
  460. package/dist/types/InvalidType.spec.js +8 -6
  461. package/dist/types/InvalidType.spec.js.map +1 -1
  462. package/dist/types/LongIntegerType.d.ts +8 -5
  463. package/dist/types/LongIntegerType.js +17 -15
  464. package/dist/types/LongIntegerType.js.map +1 -1
  465. package/dist/types/LongIntegerType.spec.js +10 -6
  466. package/dist/types/LongIntegerType.spec.js.map +1 -1
  467. package/dist/types/NamespaceType.d.ts +12 -0
  468. package/dist/types/NamespaceType.js +28 -0
  469. package/dist/types/NamespaceType.js.map +1 -0
  470. package/dist/types/ObjectType.d.ts +9 -8
  471. package/dist/types/ObjectType.js +21 -11
  472. package/dist/types/ObjectType.js.map +1 -1
  473. package/dist/types/ObjectType.spec.js +3 -3
  474. package/dist/types/ObjectType.spec.js.map +1 -1
  475. package/dist/types/ReferenceType.d.ts +63 -0
  476. package/dist/types/ReferenceType.js +423 -0
  477. package/dist/types/ReferenceType.js.map +1 -0
  478. package/dist/types/ReferenceType.spec.d.ts +1 -0
  479. package/dist/types/ReferenceType.spec.js +137 -0
  480. package/dist/types/ReferenceType.spec.js.map +1 -0
  481. package/dist/types/StringType.d.ts +11 -5
  482. package/dist/types/StringType.js +18 -7
  483. package/dist/types/StringType.js.map +1 -1
  484. package/dist/types/StringType.spec.js +3 -5
  485. package/dist/types/StringType.spec.js.map +1 -1
  486. package/dist/types/TypedFunctionType.d.ts +22 -17
  487. package/dist/types/TypedFunctionType.js +78 -60
  488. package/dist/types/TypedFunctionType.js.map +1 -1
  489. package/dist/types/TypedFunctionType.spec.js +105 -20
  490. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  491. package/dist/types/UninitializedType.d.ts +8 -6
  492. package/dist/types/UninitializedType.js +13 -7
  493. package/dist/types/UninitializedType.js.map +1 -1
  494. package/dist/types/UnionType.d.ts +20 -0
  495. package/dist/types/UnionType.js +123 -0
  496. package/dist/types/UnionType.js.map +1 -0
  497. package/dist/types/UnionType.spec.d.ts +1 -0
  498. package/dist/types/UnionType.spec.js +130 -0
  499. package/dist/types/UnionType.spec.js.map +1 -0
  500. package/dist/types/VoidType.d.ts +8 -5
  501. package/dist/types/VoidType.js +14 -7
  502. package/dist/types/VoidType.js.map +1 -1
  503. package/dist/types/VoidType.spec.js +3 -3
  504. package/dist/types/VoidType.spec.js.map +1 -1
  505. package/dist/types/helper.spec.d.ts +1 -0
  506. package/dist/types/helper.spec.js +145 -0
  507. package/dist/types/helper.spec.js.map +1 -0
  508. package/dist/types/helpers.d.ts +19 -37
  509. package/dist/types/helpers.js +159 -99
  510. package/dist/types/helpers.js.map +1 -1
  511. package/dist/types/index.d.ts +22 -0
  512. package/dist/types/index.js +39 -0
  513. package/dist/types/index.js.map +1 -0
  514. package/dist/util.d.ts +143 -139
  515. package/dist/util.js +864 -385
  516. package/dist/util.js.map +1 -1
  517. package/dist/validators/ClassValidator.d.ts +8 -25
  518. package/dist/validators/ClassValidator.js +99 -179
  519. package/dist/validators/ClassValidator.js.map +1 -1
  520. package/package.json +165 -152
  521. package/dist/astUtils/AstEditor.js.map +0 -1
  522. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  523. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  524. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
  525. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  526. package/dist/parser/SGTypes.spec.js +0 -351
  527. package/dist/parser/SGTypes.spec.js.map +0 -1
  528. package/dist/types/CustomType.d.ts +0 -12
  529. package/dist/types/CustomType.js +0 -44
  530. package/dist/types/CustomType.js.map +0 -1
  531. package/dist/types/LazyType.d.ts +0 -16
  532. package/dist/types/LazyType.js +0 -44
  533. package/dist/types/LazyType.js.map +0 -1
  534. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  535. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  536. /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/definition/DefinitionProvider.spec.d.ts} +0 -0
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isEscapedCharCodeLiteralExpression = exports.isLiteralExpression = exports.isGroupingExpression = exports.isIndexedGetExpression = exports.isXmlAttributeGetExpression = exports.isDottedGetExpression = exports.isNamespacedVariableNameExpression = exports.isFunctionExpression = exports.isCallExpression = exports.isBinaryExpression = exports.isExpression = exports.isCatchStatement = exports.isTryCatchStatement = exports.isConstStatement = exports.isEnumMemberStatement = exports.isEnumStatement = exports.isInterfaceFieldStatement = exports.isInterfaceMethodStatement = exports.isInterfaceStatement = exports.isFieldStatement = exports.isMethodStatement = exports.isImportStatement = exports.isClassStatement = exports.isNamespaceStatement = exports.isLibraryStatement = exports.isIndexedSetStatement = exports.isDottedSetStatement = exports.isWhileStatement = exports.isForEachStatement = exports.isForStatement = exports.isStopStatement = exports.isEndStatement = exports.isReturnStatement = exports.isLabelStatement = exports.isGotoStatement = exports.isPrintStatement = exports.isIncrementStatement = exports.isIfStatement = exports.isFunctionStatement = exports.isExitWhileStatement = exports.isExitForStatement = exports.isCommentStatement = exports.isExpressionStatement = exports.isBlock = exports.isAssignmentStatement = exports.isBody = exports.isStatement = exports.isXmlScope = exports.isXmlFile = exports.isBrsFile = void 0;
4
- exports.isPosition = exports.isRange = exports.isSGInterfaceFunction = exports.isSGInterfaceField = exports.isLiteralNumber = exports.isLiteralString = exports.isLiteralBoolean = exports.isLiteralInvalid = exports.isNumberType = exports.isEnumMemberType = exports.isEnumType = exports.isLazyType = exports.isDynamicType = exports.isObjectType = exports.isArrayType = exports.isInterfaceType = exports.isUninitializedType = exports.isCustomType = exports.isVoidType = exports.isInvalidType = exports.isPrimitiveType = exports.isDoubleType = exports.isFloatType = exports.isLongIntegerType = exports.isIntegerType = exports.isBooleanType = exports.isTypedFunctionType = exports.isFunctionType = exports.isStringType = exports.isTypedefProvider = exports.isTypeExpression = exports.isRegexLiteralExpression = exports.isAnnotationExpression = exports.isFunctionParameterExpression = exports.isTaggedTemplateStringExpression = exports.isTemplateStringExpression = exports.isTemplateStringQuasiExpression = exports.isCallfuncExpression = exports.isNewExpression = exports.isSourceLiteralExpression = exports.isVariableExpression = exports.isUnaryExpression = exports.isAAMemberExpression = exports.isAALiteralExpression = exports.isArrayLiteralExpression = void 0;
3
+ exports.isGroupingExpression = exports.isIndexedGetExpression = exports.isXmlAttributeGetExpression = exports.isDottedGetExpression = exports.isFunctionExpression = exports.isCallExpression = exports.isBinaryExpression = exports.isExpression = exports.isThrowStatement = exports.isCatchStatement = exports.isTryCatchStatement = exports.isContinueStatement = exports.isConstStatement = exports.isEnumMemberStatement = exports.isEnumStatement = exports.isInterfaceFieldStatement = exports.isInterfaceMethodStatement = exports.isInterfaceStatement = exports.isFieldStatement = exports.isMethodStatement = exports.isImportStatement = exports.isClassStatement = exports.isNamespaceStatement = exports.isLibraryStatement = exports.isIndexedSetStatement = exports.isDottedSetStatement = exports.isWhileStatement = exports.isForEachStatement = exports.isForStatement = exports.isStopStatement = exports.isEndStatement = exports.isReturnStatement = exports.isLabelStatement = exports.isGotoStatement = exports.isPrintStatement = exports.isIncrementStatement = exports.isIfStatement = exports.isFunctionStatement = exports.isExitWhileStatement = exports.isExitForStatement = exports.isCommentStatement = exports.isExpressionStatement = exports.isBlock = exports.isAssignmentStatement = exports.isBody = exports.isStatement = exports.isXmlScope = exports.isAssetFile = exports.isXmlFile = exports.isBrsFile = void 0;
4
+ exports.isNativeType = exports.isPrimitiveType = exports.isNumberType = exports.isAnyReferenceType = exports.isCallableType = exports.isInheritableType = exports.isAssociativeArrayType = exports.isArrayType = exports.isUninitializedType = exports.isUnionType = exports.isNamespaceType = exports.isBinaryOperatorReferenceType = exports.isTypePropertyReferenceType = exports.isEnumMemberType = exports.isEnumType = exports.isReferenceType = exports.isObjectType = exports.isInterfaceType = exports.isDynamicType = exports.isComponentType = exports.isClassType = exports.isVoidType = exports.isInvalidType = exports.isDoubleType = exports.isFloatType = exports.isLongIntegerType = exports.isIntegerType = exports.isBooleanType = exports.isFunctionType = exports.isTypedFunctionType = exports.isStringType = exports.isTypedArrayExpression = exports.isTypeCastExpression = exports.isTypeExpression = exports.isTypedefProvider = exports.isAnnotationExpression = exports.isFunctionParameterExpression = exports.isTaggedTemplateStringExpression = exports.isTemplateStringExpression = exports.isTemplateStringQuasiExpression = exports.isCallfuncExpression = exports.isNewExpression = exports.isSourceLiteralExpression = exports.isVariableExpression = exports.isUnaryExpression = exports.isAAMemberExpression = exports.isAALiteralExpression = exports.isArrayLiteralExpression = exports.isEscapedCharCodeLiteralExpression = exports.isLiteralExpression = void 0;
5
+ exports.isLiteralDouble = exports.isLiteralFloat = exports.isLiteralLongInteger = exports.isLiteralInteger = exports.isLiteralNumber = exports.isLiteralString = exports.isLiteralBoolean = exports.isLiteralInvalid = void 0;
5
6
  const visitors_1 = require("./visitors");
7
+ const AstNode_1 = require("../parser/AstNode");
8
+ const BscTypeKind_1 = require("../types/BscTypeKind");
9
+ const TokenKind_1 = require("../lexer/TokenKind");
6
10
  // File reflection
7
11
  function isBrsFile(file) {
8
12
  return (file === null || file === void 0 ? void 0 : file.constructor.name) === 'BrsFile';
@@ -12,13 +16,17 @@ function isXmlFile(file) {
12
16
  return (file === null || file === void 0 ? void 0 : file.constructor.name) === 'XmlFile';
13
17
  }
14
18
  exports.isXmlFile = isXmlFile;
19
+ function isAssetFile(file) {
20
+ return (file === null || file === void 0 ? void 0 : file.constructor.name) === 'AssetFile';
21
+ }
22
+ exports.isAssetFile = isAssetFile;
15
23
  function isXmlScope(scope) {
16
24
  return (scope === null || scope === void 0 ? void 0 : scope.constructor.name) === 'XmlScope';
17
25
  }
18
26
  exports.isXmlScope = isXmlScope;
19
27
  // Statements reflection
20
28
  /**
21
- * Determine if the variable is a descendent of the Statement base class.
29
+ * Determine if the variablvalue is a descendent of the Statement base class.
22
30
  * Due to performance restrictions, this expects all statements to
23
31
  * directly extend Statement or FunctionStatement,
24
32
  * so it only checks the immediate parent's class name.
@@ -34,8 +42,7 @@ function isBody(element) {
34
42
  }
35
43
  exports.isBody = isBody;
36
44
  function isAssignmentStatement(element) {
37
- var _a;
38
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'AssignmentStatement';
45
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.AssignmentStatement;
39
46
  }
40
47
  exports.isAssignmentStatement = isAssignmentStatement;
41
48
  function isBlock(element) {
@@ -44,160 +51,144 @@ function isBlock(element) {
44
51
  }
45
52
  exports.isBlock = isBlock;
46
53
  function isExpressionStatement(element) {
47
- var _a;
48
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ExpressionStatement';
54
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ExpressionStatement;
49
55
  }
50
56
  exports.isExpressionStatement = isExpressionStatement;
51
57
  function isCommentStatement(element) {
52
- var _a;
53
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'CommentStatement';
58
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.CommentStatement;
54
59
  }
55
60
  exports.isCommentStatement = isCommentStatement;
56
61
  function isExitForStatement(element) {
57
- var _a;
58
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ExitForStatement';
62
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ExitForStatement;
59
63
  }
60
64
  exports.isExitForStatement = isExitForStatement;
61
65
  function isExitWhileStatement(element) {
62
- var _a;
63
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ExitWhileStatement';
66
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ExitWhileStatement;
64
67
  }
65
68
  exports.isExitWhileStatement = isExitWhileStatement;
66
69
  function isFunctionStatement(element) {
67
- var _a;
68
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'FunctionStatement';
70
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.FunctionStatement;
69
71
  }
70
72
  exports.isFunctionStatement = isFunctionStatement;
71
73
  function isIfStatement(element) {
72
- var _a;
73
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'IfStatement';
74
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.IfStatement;
74
75
  }
75
76
  exports.isIfStatement = isIfStatement;
76
77
  function isIncrementStatement(element) {
77
- var _a;
78
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'IncrementStatement';
78
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.IncrementStatement;
79
79
  }
80
80
  exports.isIncrementStatement = isIncrementStatement;
81
81
  function isPrintStatement(element) {
82
- var _a;
83
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'PrintStatement';
82
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.PrintStatement;
84
83
  }
85
84
  exports.isPrintStatement = isPrintStatement;
86
85
  function isGotoStatement(element) {
87
- var _a;
88
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'GotoStatement';
86
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.GotoStatement;
89
87
  }
90
88
  exports.isGotoStatement = isGotoStatement;
91
89
  function isLabelStatement(element) {
92
- var _a;
93
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'LabelStatement';
90
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.LabelStatement;
94
91
  }
95
92
  exports.isLabelStatement = isLabelStatement;
96
93
  function isReturnStatement(element) {
97
- var _a;
98
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ReturnStatement';
94
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ReturnStatement;
99
95
  }
100
96
  exports.isReturnStatement = isReturnStatement;
101
97
  function isEndStatement(element) {
102
- var _a;
103
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'EndStatement';
98
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.EndStatement;
104
99
  }
105
100
  exports.isEndStatement = isEndStatement;
106
101
  function isStopStatement(element) {
107
- var _a;
108
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'StopStatement';
102
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.StopStatement;
109
103
  }
110
104
  exports.isStopStatement = isStopStatement;
111
105
  function isForStatement(element) {
112
- var _a;
113
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ForStatement';
106
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ForStatement;
114
107
  }
115
108
  exports.isForStatement = isForStatement;
116
109
  function isForEachStatement(element) {
117
- var _a;
118
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ForEachStatement';
110
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ForEachStatement;
119
111
  }
120
112
  exports.isForEachStatement = isForEachStatement;
121
113
  function isWhileStatement(element) {
122
- var _a;
123
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'WhileStatement';
114
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.WhileStatement;
124
115
  }
125
116
  exports.isWhileStatement = isWhileStatement;
126
117
  function isDottedSetStatement(element) {
127
- var _a;
128
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'DottedSetStatement';
118
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.DottedSetStatement;
129
119
  }
130
120
  exports.isDottedSetStatement = isDottedSetStatement;
131
121
  function isIndexedSetStatement(element) {
132
- var _a;
133
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'IndexedSetStatement';
122
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.IndexedSetStatement;
134
123
  }
135
124
  exports.isIndexedSetStatement = isIndexedSetStatement;
136
125
  function isLibraryStatement(element) {
137
- var _a;
138
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'LibraryStatement';
126
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.LibraryStatement;
139
127
  }
140
128
  exports.isLibraryStatement = isLibraryStatement;
141
129
  function isNamespaceStatement(element) {
142
- var _a;
143
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'NamespaceStatement';
130
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.NamespaceStatement;
144
131
  }
145
132
  exports.isNamespaceStatement = isNamespaceStatement;
146
133
  function isClassStatement(element) {
147
- var _a;
148
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ClassStatement';
134
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ClassStatement;
149
135
  }
150
136
  exports.isClassStatement = isClassStatement;
151
137
  function isImportStatement(element) {
152
- var _a;
153
- return ((_a = element === null || element === void 0 ? void 0 : element.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ImportStatement';
138
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ImportStatement;
154
139
  }
155
140
  exports.isImportStatement = isImportStatement;
156
141
  function isMethodStatement(element) {
157
- const name = element === null || element === void 0 ? void 0 : element.constructor.name;
158
- return name === 'MethodStatement' || name === 'ClassMethodStatement';
142
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.MethodStatement;
159
143
  }
160
144
  exports.isMethodStatement = isMethodStatement;
161
145
  function isFieldStatement(element) {
162
- const name = element === null || element === void 0 ? void 0 : element.constructor.name;
163
- return name === 'FieldStatement' || name === 'ClassFieldStatement';
146
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.FieldStatement;
164
147
  }
165
148
  exports.isFieldStatement = isFieldStatement;
166
149
  function isInterfaceStatement(element) {
167
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'InterfaceStatement';
150
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.InterfaceStatement;
168
151
  }
169
152
  exports.isInterfaceStatement = isInterfaceStatement;
170
153
  function isInterfaceMethodStatement(element) {
171
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'InterfaceMethodStatement';
154
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.InterfaceMethodStatement;
172
155
  }
173
156
  exports.isInterfaceMethodStatement = isInterfaceMethodStatement;
174
157
  function isInterfaceFieldStatement(element) {
175
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'InterfaceFieldStatement';
158
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.InterfaceFieldStatement;
176
159
  }
177
160
  exports.isInterfaceFieldStatement = isInterfaceFieldStatement;
178
161
  function isEnumStatement(element) {
179
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'EnumStatement';
162
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.EnumStatement;
180
163
  }
181
164
  exports.isEnumStatement = isEnumStatement;
182
165
  function isEnumMemberStatement(element) {
183
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'EnumMemberStatement';
166
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.EnumMemberStatement;
184
167
  }
185
168
  exports.isEnumMemberStatement = isEnumMemberStatement;
186
169
  function isConstStatement(element) {
187
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'ConstStatement';
170
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ConstStatement;
188
171
  }
189
172
  exports.isConstStatement = isConstStatement;
173
+ function isContinueStatement(element) {
174
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ContinueStatement;
175
+ }
176
+ exports.isContinueStatement = isContinueStatement;
190
177
  function isTryCatchStatement(element) {
191
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'TryCatchStatement';
178
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TryCatchStatement;
192
179
  }
193
180
  exports.isTryCatchStatement = isTryCatchStatement;
194
181
  function isCatchStatement(element) {
195
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'CatchStatement';
182
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.CatchStatement;
196
183
  }
197
184
  exports.isCatchStatement = isCatchStatement;
185
+ function isThrowStatement(element) {
186
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ThrowStatement;
187
+ }
188
+ exports.isThrowStatement = isThrowStatement;
198
189
  // Expressions reflection
199
190
  /**
200
- * Determine if the variable is a descendent of the Expression base class.
191
+ * Determine if the variablvalue is a descendent of the Expression base class.
201
192
  * Due to performance restrictions, this expects all statements to directly extend Expression,
202
193
  * so it only checks the immediate parent's class name. For example:
203
194
  * this will work for StringLiteralExpression -> Expression,
@@ -209,233 +200,288 @@ function isExpression(element) {
209
200
  }
210
201
  exports.isExpression = isExpression;
211
202
  function isBinaryExpression(element) {
212
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'BinaryExpression';
203
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.BinaryExpression;
213
204
  }
214
205
  exports.isBinaryExpression = isBinaryExpression;
215
206
  function isCallExpression(element) {
216
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'CallExpression';
207
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.CallExpression;
217
208
  }
218
209
  exports.isCallExpression = isCallExpression;
219
210
  function isFunctionExpression(element) {
220
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'FunctionExpression';
211
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.FunctionExpression;
221
212
  }
222
213
  exports.isFunctionExpression = isFunctionExpression;
223
- function isNamespacedVariableNameExpression(element) {
224
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'NamespacedVariableNameExpression';
225
- }
226
- exports.isNamespacedVariableNameExpression = isNamespacedVariableNameExpression;
227
214
  function isDottedGetExpression(element) {
228
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'DottedGetExpression';
215
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.DottedGetExpression;
229
216
  }
230
217
  exports.isDottedGetExpression = isDottedGetExpression;
231
218
  function isXmlAttributeGetExpression(element) {
232
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'XmlAttributeGetExpression';
219
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.XmlAttributeGetExpression;
233
220
  }
234
221
  exports.isXmlAttributeGetExpression = isXmlAttributeGetExpression;
235
222
  function isIndexedGetExpression(element) {
236
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'IndexedGetExpression';
223
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.IndexedGetExpression;
237
224
  }
238
225
  exports.isIndexedGetExpression = isIndexedGetExpression;
239
226
  function isGroupingExpression(element) {
240
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'GroupingExpression';
227
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.GroupingExpression;
241
228
  }
242
229
  exports.isGroupingExpression = isGroupingExpression;
243
230
  function isLiteralExpression(element) {
244
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'LiteralExpression';
231
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.LiteralExpression;
245
232
  }
246
233
  exports.isLiteralExpression = isLiteralExpression;
247
234
  function isEscapedCharCodeLiteralExpression(element) {
248
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'EscapedCharCodeLiteralExpression';
235
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.EscapedCharCodeLiteralExpression;
249
236
  }
250
237
  exports.isEscapedCharCodeLiteralExpression = isEscapedCharCodeLiteralExpression;
251
238
  function isArrayLiteralExpression(element) {
252
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'ArrayLiteralExpression';
239
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ArrayLiteralExpression;
253
240
  }
254
241
  exports.isArrayLiteralExpression = isArrayLiteralExpression;
255
242
  function isAALiteralExpression(element) {
256
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'AALiteralExpression';
243
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.AALiteralExpression;
257
244
  }
258
245
  exports.isAALiteralExpression = isAALiteralExpression;
259
246
  function isAAMemberExpression(element) {
260
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'AAMemberExpression';
247
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.AAMemberExpression;
261
248
  }
262
249
  exports.isAAMemberExpression = isAAMemberExpression;
263
250
  function isUnaryExpression(element) {
264
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'UnaryExpression';
251
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.UnaryExpression;
265
252
  }
266
253
  exports.isUnaryExpression = isUnaryExpression;
267
254
  function isVariableExpression(element) {
268
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'VariableExpression';
255
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.VariableExpression;
269
256
  }
270
257
  exports.isVariableExpression = isVariableExpression;
271
258
  function isSourceLiteralExpression(element) {
272
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'SourceLiteralExpression';
259
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.SourceLiteralExpression;
273
260
  }
274
261
  exports.isSourceLiteralExpression = isSourceLiteralExpression;
275
262
  function isNewExpression(element) {
276
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'NewExpression';
263
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.NewExpression;
277
264
  }
278
265
  exports.isNewExpression = isNewExpression;
279
266
  function isCallfuncExpression(element) {
280
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'CallfuncExpression';
267
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.CallfuncExpression;
281
268
  }
282
269
  exports.isCallfuncExpression = isCallfuncExpression;
283
270
  function isTemplateStringQuasiExpression(element) {
284
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'TemplateStringQuasiExpression';
271
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TemplateStringQuasiExpression;
285
272
  }
286
273
  exports.isTemplateStringQuasiExpression = isTemplateStringQuasiExpression;
287
274
  function isTemplateStringExpression(element) {
288
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'TemplateStringExpression';
275
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TemplateStringExpression;
289
276
  }
290
277
  exports.isTemplateStringExpression = isTemplateStringExpression;
291
278
  function isTaggedTemplateStringExpression(element) {
292
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'TaggedTemplateStringExpression';
279
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TaggedTemplateStringExpression;
293
280
  }
294
281
  exports.isTaggedTemplateStringExpression = isTaggedTemplateStringExpression;
295
282
  function isFunctionParameterExpression(element) {
296
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'FunctionParameterExpression';
283
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.FunctionParameterExpression;
297
284
  }
298
285
  exports.isFunctionParameterExpression = isFunctionParameterExpression;
299
286
  function isAnnotationExpression(element) {
300
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'AnnotationExpression';
287
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.AnnotationExpression;
301
288
  }
302
289
  exports.isAnnotationExpression = isAnnotationExpression;
303
- function isRegexLiteralExpression(element) {
304
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'RegexLiteralExpression';
290
+ function isTypedefProvider(element) {
291
+ return 'getTypedef' in element;
305
292
  }
306
- exports.isRegexLiteralExpression = isRegexLiteralExpression;
293
+ exports.isTypedefProvider = isTypedefProvider;
307
294
  function isTypeExpression(element) {
308
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'TypeExpression';
295
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TypeExpression;
309
296
  }
310
297
  exports.isTypeExpression = isTypeExpression;
311
- function isTypedefProvider(element) {
312
- return 'getTypedef' in element;
298
+ function isTypeCastExpression(element) {
299
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TypeCastExpression;
313
300
  }
314
- exports.isTypedefProvider = isTypedefProvider;
301
+ exports.isTypeCastExpression = isTypeCastExpression;
302
+ function isTypedArrayExpression(element) {
303
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TypedArrayExpression;
304
+ }
305
+ exports.isTypedArrayExpression = isTypedArrayExpression;
315
306
  // BscType reflection
316
- // Note: these are Hardcoded to avoid circular dependencies
317
307
  function isStringType(value) {
318
- return (value === null || value === void 0 ? void 0 : value.constructor.name) === 'StringType';
308
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.StringType;
319
309
  }
320
310
  exports.isStringType = isStringType;
321
- function isFunctionType(e) {
322
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'FunctionType';
323
- }
324
- exports.isFunctionType = isFunctionType;
325
- function isTypedFunctionType(e) {
326
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'TypedFunctionType' || (e === null || e === void 0 ? void 0 : e.constructor.name) === 'FunctionType';
311
+ function isTypedFunctionType(value) {
312
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.TypedFunctionType;
327
313
  }
328
314
  exports.isTypedFunctionType = isTypedFunctionType;
329
- function isBooleanType(e) {
330
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'BooleanType';
315
+ function isFunctionType(value) {
316
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.FunctionType;
317
+ }
318
+ exports.isFunctionType = isFunctionType;
319
+ function isBooleanType(value) {
320
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.BooleanType;
331
321
  }
332
322
  exports.isBooleanType = isBooleanType;
333
- function isIntegerType(e) {
334
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'IntegerType';
323
+ function isIntegerType(value) {
324
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.IntegerType;
335
325
  }
336
326
  exports.isIntegerType = isIntegerType;
337
- function isLongIntegerType(e) {
338
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'LongIntegerType';
327
+ function isLongIntegerType(value) {
328
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.LongIntegerType;
339
329
  }
340
330
  exports.isLongIntegerType = isLongIntegerType;
341
- function isFloatType(e) {
342
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'FloatType';
331
+ function isFloatType(value) {
332
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.FloatType;
343
333
  }
344
334
  exports.isFloatType = isFloatType;
345
- function isDoubleType(e) {
346
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'DoubleType';
335
+ function isDoubleType(value) {
336
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.DoubleType;
347
337
  }
348
338
  exports.isDoubleType = isDoubleType;
349
- function isPrimitiveType(e) {
350
- return isBooleanType(e) || isIntegerType(e) || isFloatType(e) || isDoubleType(e) || isStringType(e) || isLongIntegerType(e);
351
- }
352
- exports.isPrimitiveType = isPrimitiveType;
353
- function isInvalidType(e) {
354
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'InvalidType';
339
+ function isInvalidType(value) {
340
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.InvalidType;
355
341
  }
356
342
  exports.isInvalidType = isInvalidType;
357
- function isVoidType(e) {
358
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'VoidType';
343
+ function isVoidType(value) {
344
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.VoidType;
359
345
  }
360
346
  exports.isVoidType = isVoidType;
361
- function isCustomType(e) {
362
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'CustomType';
347
+ function isClassType(value) {
348
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.ClassType;
363
349
  }
364
- exports.isCustomType = isCustomType;
365
- function isUninitializedType(e) {
366
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'UninitializedType';
350
+ exports.isClassType = isClassType;
351
+ function isComponentType(value) {
352
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.ComponentType;
367
353
  }
368
- exports.isUninitializedType = isUninitializedType;
369
- function isInterfaceType(e) {
370
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'InterfaceType';
354
+ exports.isComponentType = isComponentType;
355
+ function isDynamicType(value) {
356
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.DynamicType;
371
357
  }
372
- exports.isInterfaceType = isInterfaceType;
373
- function isArrayType(e) {
374
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'ArrayType';
358
+ exports.isDynamicType = isDynamicType;
359
+ function isInterfaceType(value) {
360
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.InterfaceType;
375
361
  }
376
- exports.isArrayType = isArrayType;
377
- function isObjectType(e) {
378
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'ObjectType';
362
+ exports.isInterfaceType = isInterfaceType;
363
+ function isObjectType(value) {
364
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.ObjectType;
379
365
  }
380
366
  exports.isObjectType = isObjectType;
381
- function isDynamicType(e) {
382
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'DynamicType';
383
- }
384
- exports.isDynamicType = isDynamicType;
385
- function isLazyType(e) {
386
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'LazyType';
367
+ function isReferenceType(value) {
368
+ var _a;
369
+ return ((_a = value === null || value === void 0 ? void 0 : value.__reflection) === null || _a === void 0 ? void 0 : _a.name) === 'ReferenceType';
387
370
  }
388
- exports.isLazyType = isLazyType;
389
- function isEnumType(e) {
390
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'EnumType';
371
+ exports.isReferenceType = isReferenceType;
372
+ function isEnumType(value) {
373
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.EnumType;
391
374
  }
392
375
  exports.isEnumType = isEnumType;
393
- function isEnumMemberType(e) {
394
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'EnumMemberType';
376
+ function isEnumMemberType(value) {
377
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.EnumMemberType;
395
378
  }
396
379
  exports.isEnumMemberType = isEnumMemberType;
397
- const numberConstructorNames = [
398
- 'IntegerType',
399
- 'LongIntegerType',
400
- 'FloatType',
401
- 'DoubleType'
380
+ function isTypePropertyReferenceType(value) {
381
+ var _a;
382
+ return ((_a = value === null || value === void 0 ? void 0 : value.__reflection) === null || _a === void 0 ? void 0 : _a.name) === 'TypePropertyReferenceType';
383
+ }
384
+ exports.isTypePropertyReferenceType = isTypePropertyReferenceType;
385
+ function isBinaryOperatorReferenceType(value) {
386
+ var _a;
387
+ return ((_a = value === null || value === void 0 ? void 0 : value.__reflection) === null || _a === void 0 ? void 0 : _a.name) === 'BinaryOperatorReferenceType';
388
+ }
389
+ exports.isBinaryOperatorReferenceType = isBinaryOperatorReferenceType;
390
+ function isNamespaceType(value) {
391
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.NamespaceType;
392
+ }
393
+ exports.isNamespaceType = isNamespaceType;
394
+ function isUnionType(value) {
395
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.UnionType;
396
+ }
397
+ exports.isUnionType = isUnionType;
398
+ function isUninitializedType(value) {
399
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.UninitializedType;
400
+ }
401
+ exports.isUninitializedType = isUninitializedType;
402
+ function isArrayType(value) {
403
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.ArrayType;
404
+ }
405
+ exports.isArrayType = isArrayType;
406
+ function isAssociativeArrayType(value) {
407
+ return (value === null || value === void 0 ? void 0 : value.kind) === BscTypeKind_1.BscTypeKind.AssociativeArrayType;
408
+ }
409
+ exports.isAssociativeArrayType = isAssociativeArrayType;
410
+ function isInheritableType(target) {
411
+ return isClassType(target) || isInterfaceType(target) || isComponentType(target);
412
+ }
413
+ exports.isInheritableType = isInheritableType;
414
+ function isCallableType(target) {
415
+ return isFunctionType(target) || isTypedFunctionType(target);
416
+ }
417
+ exports.isCallableType = isCallableType;
418
+ function isAnyReferenceType(target) {
419
+ var _a;
420
+ const name = (_a = target === null || target === void 0 ? void 0 : target.__reflection) === null || _a === void 0 ? void 0 : _a.name;
421
+ return name === 'ReferenceType' || name === 'TypePropertyReferenceType' || name === 'BinaryOperatorReferenceType';
422
+ }
423
+ exports.isAnyReferenceType = isAnyReferenceType;
424
+ const numberTypeKinds = [
425
+ BscTypeKind_1.BscTypeKind.IntegerType,
426
+ BscTypeKind_1.BscTypeKind.LongIntegerType,
427
+ BscTypeKind_1.BscTypeKind.FloatType,
428
+ BscTypeKind_1.BscTypeKind.DoubleType
402
429
  ];
403
- function isNumberType(e) {
404
- return numberConstructorNames.includes(e === null || e === void 0 ? void 0 : e.constructor.name);
430
+ function isNumberType(value) {
431
+ return numberTypeKinds.includes(value === null || value === void 0 ? void 0 : value.kind);
405
432
  }
406
433
  exports.isNumberType = isNumberType;
434
+ const primitiveTypeKinds = [
435
+ ...numberTypeKinds,
436
+ BscTypeKind_1.BscTypeKind.BooleanType,
437
+ BscTypeKind_1.BscTypeKind.StringType
438
+ ];
439
+ function isPrimitiveType(value) {
440
+ return primitiveTypeKinds.includes(value === null || value === void 0 ? void 0 : value.kind);
441
+ }
442
+ exports.isPrimitiveType = isPrimitiveType;
443
+ const nativeTypeKinds = [
444
+ ...primitiveTypeKinds,
445
+ BscTypeKind_1.BscTypeKind.DynamicType,
446
+ BscTypeKind_1.BscTypeKind.ObjectType,
447
+ BscTypeKind_1.BscTypeKind.VoidType,
448
+ BscTypeKind_1.BscTypeKind.FunctionType
449
+ ];
450
+ function isNativeType(value) {
451
+ return nativeTypeKinds.includes(value === null || value === void 0 ? void 0 : value.kind);
452
+ }
453
+ exports.isNativeType = isNativeType;
407
454
  // Literal reflection
408
- function isLiteralInvalid(e) {
409
- return isLiteralExpression(e) && isInvalidType(e.type);
455
+ function isLiteralInvalid(value) {
456
+ return isLiteralExpression(value) && value.tokens.value.kind === TokenKind_1.TokenKind.Invalid;
410
457
  }
411
458
  exports.isLiteralInvalid = isLiteralInvalid;
412
- function isLiteralBoolean(e) {
413
- return isLiteralExpression(e) && isBooleanType(e.type);
459
+ function isLiteralBoolean(value) {
460
+ return isLiteralExpression(value) && isBooleanType(value.getType());
414
461
  }
415
462
  exports.isLiteralBoolean = isLiteralBoolean;
416
- function isLiteralString(e) {
417
- return isLiteralExpression(e) && isStringType(e.type);
463
+ function isLiteralString(value) {
464
+ return isLiteralExpression(value) && isStringType(value.getType());
418
465
  }
419
466
  exports.isLiteralString = isLiteralString;
420
- function isLiteralNumber(e) {
421
- return isLiteralExpression(e) && isNumberType(e.type);
467
+ function isLiteralNumber(value) {
468
+ return isLiteralExpression(value) && isNumberType(value.getType());
422
469
  }
423
470
  exports.isLiteralNumber = isLiteralNumber;
424
- function isSGInterfaceField(e) {
425
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'SGInterfaceField';
471
+ function isLiteralInteger(value) {
472
+ return isLiteralExpression(value) && isIntegerType(value.getType());
426
473
  }
427
- exports.isSGInterfaceField = isSGInterfaceField;
428
- function isSGInterfaceFunction(e) {
429
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'SGInterfaceFunction';
474
+ exports.isLiteralInteger = isLiteralInteger;
475
+ function isLiteralLongInteger(value) {
476
+ return isLiteralExpression(value) && isLongIntegerType(value.getType());
430
477
  }
431
- exports.isSGInterfaceFunction = isSGInterfaceFunction;
432
- // Range and Position
433
- function isRange(e) {
434
- return e.start && isPosition(e.start) && e.end && isPosition(e.end);
478
+ exports.isLiteralLongInteger = isLiteralLongInteger;
479
+ function isLiteralFloat(value) {
480
+ return isLiteralExpression(value) && isFloatType(value.getType());
435
481
  }
436
- exports.isRange = isRange;
437
- function isPosition(e) {
438
- return Number.isInteger(e.line) && Number.isInteger(e.character);
482
+ exports.isLiteralFloat = isLiteralFloat;
483
+ function isLiteralDouble(value) {
484
+ return isLiteralExpression(value) && isDoubleType(value.getType());
439
485
  }
440
- exports.isPosition = isPosition;
486
+ exports.isLiteralDouble = isLiteralDouble;
441
487
  //# sourceMappingURL=reflection.js.map