brighterscript 1.0.0-alpha.23 → 1.0.0-alpha.25

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 +585 -218
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +41 -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 +39 -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 +79 -15
  33. package/dist/DiagnosticMessages.js +134 -21
  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 +222 -87
  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 +162 -81
  54. package/dist/Program.js +903 -732
  55. package/dist/Program.js.map +1 -1
  56. package/dist/ProgramBuilder.d.ts +22 -12
  57. package/dist/ProgramBuilder.js +132 -104
  58. package/dist/ProgramBuilder.js.map +1 -1
  59. package/dist/Scope.d.ts +95 -134
  60. package/dist/Scope.js +477 -551
  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 +95 -29
  65. package/dist/SymbolTable.js +256 -102
  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 -6
  74. package/dist/XmlScope.js +74 -68
  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} +68 -64
  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 +26 -16
  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 -100
  90. package/dist/astUtils/reflection.js +225 -166
  91. package/dist/astUtils/reflection.js.map +1 -1
  92. package/dist/astUtils/reflection.spec.js +208 -126
  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 +54 -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 +178 -33
  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 +12 -2
  105. package/dist/bscPlugin/BscPlugin.js +41 -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 +135 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +1 -1
  117. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +21 -12
  118. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  119. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +86 -12
  120. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  121. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +57 -0
  122. package/dist/bscPlugin/completions/CompletionsProcessor.js +544 -0
  123. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  124. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
  125. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  126. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  127. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  128. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  129. package/dist/bscPlugin/hover/HoverProcessor.d.ts +17 -0
  130. package/dist/bscPlugin/hover/HoverProcessor.js +188 -0
  131. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  132. package/dist/bscPlugin/hover/HoverProcessor.spec.js +513 -0
  133. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
  134. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +3 -1
  135. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +102 -29
  136. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  137. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +167 -6
  138. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  139. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  140. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  141. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  142. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  143. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  144. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  145. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  146. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  147. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  148. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +16 -0
  149. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +123 -0
  150. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  151. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  152. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  153. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  154. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  155. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  156. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  157. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +22 -1
  158. package/dist/bscPlugin/validation/BrsFileValidator.js +316 -29
  159. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  160. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
  161. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +264 -0
  162. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
  163. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  164. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  165. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  166. package/dist/bscPlugin/validation/ScopeValidator.d.ts +56 -8
  167. package/dist/bscPlugin/validation/ScopeValidator.js +514 -116
  168. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  169. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  170. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2454 -0
  171. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  172. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  173. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  174. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  175. package/dist/cli.js +107 -8
  176. package/dist/cli.js.map +1 -1
  177. package/dist/deferred.d.ts +3 -3
  178. package/dist/deferred.js.map +1 -1
  179. package/dist/diagnosticUtils.d.ts +8 -2
  180. package/dist/diagnosticUtils.js +47 -17
  181. package/dist/diagnosticUtils.js.map +1 -1
  182. package/dist/examples/plugins/removePrint.js +8 -10
  183. package/dist/examples/plugins/removePrint.js.map +1 -1
  184. package/dist/files/AssetFile.d.ts +26 -0
  185. package/dist/files/AssetFile.js +26 -0
  186. package/dist/files/AssetFile.js.map +1 -0
  187. package/dist/files/BrsFile.Class.spec.js +529 -486
  188. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  189. package/dist/files/BrsFile.d.ts +124 -112
  190. package/dist/files/BrsFile.js +819 -1131
  191. package/dist/files/BrsFile.js.map +1 -1
  192. package/dist/files/BrsFile.spec.js +1869 -1277
  193. package/dist/files/BrsFile.spec.js.map +1 -1
  194. package/dist/files/BscFile.d.ts +104 -0
  195. package/dist/files/BscFile.js +16 -0
  196. package/dist/files/BscFile.js.map +1 -0
  197. package/dist/files/Factory.d.ts +25 -0
  198. package/dist/files/Factory.js +22 -0
  199. package/dist/files/Factory.js.map +1 -0
  200. package/dist/files/LazyFileData.d.ts +20 -0
  201. package/dist/files/LazyFileData.js +54 -0
  202. package/dist/files/LazyFileData.js.map +1 -0
  203. package/dist/files/LazyFileData.spec.d.ts +1 -0
  204. package/dist/files/LazyFileData.spec.js +27 -0
  205. package/dist/files/LazyFileData.spec.js.map +1 -0
  206. package/dist/files/XmlFile.d.ts +70 -32
  207. package/dist/files/XmlFile.js +106 -117
  208. package/dist/files/XmlFile.js.map +1 -1
  209. package/dist/files/XmlFile.spec.js +325 -262
  210. package/dist/files/XmlFile.spec.js.map +1 -1
  211. package/dist/files/tests/imports.spec.js +49 -41
  212. package/dist/files/tests/imports.spec.js.map +1 -1
  213. package/dist/files/tests/optionalChaning.spec.js +104 -40
  214. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  215. package/dist/globalCallables.js +16 -18
  216. package/dist/globalCallables.js.map +1 -1
  217. package/dist/index.d.ts +13 -2
  218. package/dist/index.js +15 -2
  219. package/dist/index.js.map +1 -1
  220. package/dist/interfaces.d.ts +440 -150
  221. package/dist/interfaces.js +27 -0
  222. package/dist/interfaces.js.map +1 -1
  223. package/dist/lexer/Character.spec.js +5 -5
  224. package/dist/lexer/Character.spec.js.map +1 -1
  225. package/dist/lexer/Lexer.d.ts +12 -5
  226. package/dist/lexer/Lexer.js +28 -13
  227. package/dist/lexer/Lexer.js.map +1 -1
  228. package/dist/lexer/Lexer.spec.js +187 -134
  229. package/dist/lexer/Lexer.spec.js.map +1 -1
  230. package/dist/lexer/Token.d.ts +9 -1
  231. package/dist/lexer/Token.js +9 -1
  232. package/dist/lexer/Token.js.map +1 -1
  233. package/dist/lexer/TokenKind.d.ts +9 -0
  234. package/dist/lexer/TokenKind.js +30 -5
  235. package/dist/lexer/TokenKind.js.map +1 -1
  236. package/dist/parser/AstNode.d.ts +162 -0
  237. package/dist/parser/AstNode.js +225 -0
  238. package/dist/parser/AstNode.js.map +1 -0
  239. package/dist/parser/AstNode.spec.d.ts +1 -0
  240. package/dist/parser/AstNode.spec.js +165 -0
  241. package/dist/parser/AstNode.spec.js.map +1 -0
  242. package/dist/parser/BrsTranspileState.d.ts +4 -7
  243. package/dist/parser/BrsTranspileState.js +4 -12
  244. package/dist/parser/BrsTranspileState.js.map +1 -1
  245. package/dist/parser/Expression.d.ts +126 -167
  246. package/dist/parser/Expression.js +524 -394
  247. package/dist/parser/Expression.js.map +1 -1
  248. package/dist/parser/Parser.Class.spec.js +152 -146
  249. package/dist/parser/Parser.Class.spec.js.map +1 -1
  250. package/dist/parser/Parser.d.ts +45 -196
  251. package/dist/parser/Parser.js +470 -926
  252. package/dist/parser/Parser.js.map +1 -1
  253. package/dist/parser/Parser.spec.d.ts +3 -1
  254. package/dist/parser/Parser.spec.js +1034 -805
  255. package/dist/parser/Parser.spec.js.map +1 -1
  256. package/dist/parser/SGParser.d.ts +9 -8
  257. package/dist/parser/SGParser.js +10 -8
  258. package/dist/parser/SGParser.js.map +1 -1
  259. package/dist/parser/SGParser.spec.js +27 -38
  260. package/dist/parser/SGParser.spec.js.map +1 -1
  261. package/dist/parser/SGTypes.d.ts +98 -35
  262. package/dist/parser/SGTypes.js +169 -99
  263. package/dist/parser/SGTypes.js.map +1 -1
  264. package/dist/parser/Statement.d.ts +208 -122
  265. package/dist/parser/Statement.js +599 -364
  266. package/dist/parser/Statement.js.map +1 -1
  267. package/dist/parser/Statement.spec.js +45 -21
  268. package/dist/parser/Statement.spec.js.map +1 -1
  269. package/dist/parser/TranspileState.d.ts +1 -1
  270. package/dist/parser/TranspileState.js +7 -12
  271. package/dist/parser/TranspileState.js.map +1 -1
  272. package/dist/parser/tests/Parser.spec.js +3 -2
  273. package/dist/parser/tests/Parser.spec.js.map +1 -1
  274. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  275. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  276. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  277. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  278. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  279. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  280. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  281. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  282. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  283. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  284. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  285. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  286. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +61 -20
  287. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  288. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  289. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  290. package/dist/parser/tests/expression/Call.spec.js +129 -21
  291. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  292. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  293. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  294. package/dist/parser/tests/expression/Function.spec.js +36 -36
  295. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  296. package/dist/parser/tests/expression/Indexing.spec.js +67 -22
  297. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  298. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  299. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  300. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +123 -81
  301. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  302. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  303. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  304. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  305. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  306. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  307. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  308. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  309. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  310. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  311. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  312. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +221 -81
  313. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  314. package/dist/parser/tests/expression/TernaryExpression.spec.js +287 -105
  315. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  316. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  317. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  318. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  319. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  320. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  321. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  322. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  323. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  324. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
  325. package/dist/parser/tests/statement/ConstStatement.spec.js +262 -0
  326. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
  327. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  328. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  329. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  330. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  331. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  332. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  333. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/Enum.spec.js +111 -300
  335. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/For.spec.js +9 -10
  337. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  339. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/Function.spec.js +44 -35
  341. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  343. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  345. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  347. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  349. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  351. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/PrintStatement.spec.js +107 -90
  353. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  355. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/Set.spec.js +48 -35
  357. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  359. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  360. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  361. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  362. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  363. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  364. package/dist/preprocessor/Manifest.d.ts +1 -1
  365. package/dist/preprocessor/Manifest.js +3 -3
  366. package/dist/preprocessor/Manifest.js.map +1 -1
  367. package/dist/preprocessor/Manifest.spec.js +8 -8
  368. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  369. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  370. package/dist/preprocessor/Preprocessor.js +15 -11
  371. package/dist/preprocessor/Preprocessor.js.map +1 -1
  372. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  373. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  374. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  375. package/dist/preprocessor/PreprocessorParser.js +7 -1
  376. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  377. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  378. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  379. package/dist/roku-types/data.json +6544 -10519
  380. package/dist/roku-types/index.d.ts +662 -1934
  381. package/dist/types/ArrayType.d.ts +10 -9
  382. package/dist/types/ArrayType.js +65 -60
  383. package/dist/types/ArrayType.js.map +1 -1
  384. package/dist/types/ArrayType.spec.js +36 -68
  385. package/dist/types/ArrayType.spec.js.map +1 -1
  386. package/dist/types/AssociativeArrayType.d.ts +11 -0
  387. package/dist/types/AssociativeArrayType.js +52 -0
  388. package/dist/types/AssociativeArrayType.js.map +1 -0
  389. package/dist/types/BaseFunctionType.d.ts +9 -0
  390. package/dist/types/BaseFunctionType.js +25 -0
  391. package/dist/types/BaseFunctionType.js.map +1 -0
  392. package/dist/types/BooleanType.d.ts +8 -5
  393. package/dist/types/BooleanType.js +14 -7
  394. package/dist/types/BooleanType.js.map +1 -1
  395. package/dist/types/BooleanType.spec.js +10 -6
  396. package/dist/types/BooleanType.spec.js.map +1 -1
  397. package/dist/types/BscType.d.ts +32 -21
  398. package/dist/types/BscType.js +118 -21
  399. package/dist/types/BscType.js.map +1 -1
  400. package/dist/types/BscTypeKind.d.ts +25 -0
  401. package/dist/types/BscTypeKind.js +30 -0
  402. package/dist/types/BscTypeKind.js.map +1 -0
  403. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  404. package/dist/types/BuiltInInterfaceAdder.js +164 -0
  405. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  406. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  407. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  408. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  409. package/dist/types/ClassType.d.ts +17 -0
  410. package/dist/types/ClassType.js +58 -0
  411. package/dist/types/ClassType.js.map +1 -0
  412. package/dist/types/ClassType.spec.d.ts +1 -0
  413. package/dist/types/ClassType.spec.js +77 -0
  414. package/dist/types/ClassType.spec.js.map +1 -0
  415. package/dist/types/ComponentType.d.ts +26 -0
  416. package/dist/types/ComponentType.js +83 -0
  417. package/dist/types/ComponentType.js.map +1 -0
  418. package/dist/types/DoubleType.d.ts +8 -5
  419. package/dist/types/DoubleType.js +18 -16
  420. package/dist/types/DoubleType.js.map +1 -1
  421. package/dist/types/DoubleType.spec.js +12 -6
  422. package/dist/types/DoubleType.spec.js.map +1 -1
  423. package/dist/types/DynamicType.d.ts +10 -5
  424. package/dist/types/DynamicType.js +16 -4
  425. package/dist/types/DynamicType.js.map +1 -1
  426. package/dist/types/DynamicType.spec.js +16 -5
  427. package/dist/types/DynamicType.spec.js.map +1 -1
  428. package/dist/types/EnumType.d.ts +30 -12
  429. package/dist/types/EnumType.js +43 -17
  430. package/dist/types/EnumType.js.map +1 -1
  431. package/dist/types/EnumType.spec.d.ts +1 -0
  432. package/dist/types/EnumType.spec.js +33 -0
  433. package/dist/types/EnumType.spec.js.map +1 -0
  434. package/dist/types/FloatType.d.ts +8 -5
  435. package/dist/types/FloatType.js +18 -16
  436. package/dist/types/FloatType.js.map +1 -1
  437. package/dist/types/FloatType.spec.js +4 -6
  438. package/dist/types/FloatType.spec.js.map +1 -1
  439. package/dist/types/FunctionType.d.ts +13 -8
  440. package/dist/types/FunctionType.js +30 -14
  441. package/dist/types/FunctionType.js.map +1 -1
  442. package/dist/types/InheritableType.d.ts +28 -0
  443. package/dist/types/InheritableType.js +152 -0
  444. package/dist/types/InheritableType.js.map +1 -0
  445. package/dist/types/IntegerType.d.ts +8 -5
  446. package/dist/types/IntegerType.js +18 -16
  447. package/dist/types/IntegerType.js.map +1 -1
  448. package/dist/types/IntegerType.spec.js +8 -6
  449. package/dist/types/IntegerType.spec.js.map +1 -1
  450. package/dist/types/InterfaceType.d.ts +12 -13
  451. package/dist/types/InterfaceType.js +20 -48
  452. package/dist/types/InterfaceType.js.map +1 -1
  453. package/dist/types/InterfaceType.spec.js +90 -56
  454. package/dist/types/InterfaceType.spec.js.map +1 -1
  455. package/dist/types/InvalidType.d.ts +7 -5
  456. package/dist/types/InvalidType.js +13 -7
  457. package/dist/types/InvalidType.js.map +1 -1
  458. package/dist/types/InvalidType.spec.js +8 -6
  459. package/dist/types/InvalidType.spec.js.map +1 -1
  460. package/dist/types/LongIntegerType.d.ts +8 -5
  461. package/dist/types/LongIntegerType.js +17 -15
  462. package/dist/types/LongIntegerType.js.map +1 -1
  463. package/dist/types/LongIntegerType.spec.js +10 -6
  464. package/dist/types/LongIntegerType.spec.js.map +1 -1
  465. package/dist/types/NamespaceType.d.ts +12 -0
  466. package/dist/types/NamespaceType.js +28 -0
  467. package/dist/types/NamespaceType.js.map +1 -0
  468. package/dist/types/ObjectType.d.ts +9 -8
  469. package/dist/types/ObjectType.js +21 -11
  470. package/dist/types/ObjectType.js.map +1 -1
  471. package/dist/types/ObjectType.spec.js +3 -3
  472. package/dist/types/ObjectType.spec.js.map +1 -1
  473. package/dist/types/ReferenceType.d.ts +63 -0
  474. package/dist/types/ReferenceType.js +423 -0
  475. package/dist/types/ReferenceType.js.map +1 -0
  476. package/dist/types/ReferenceType.spec.d.ts +1 -0
  477. package/dist/types/ReferenceType.spec.js +137 -0
  478. package/dist/types/ReferenceType.spec.js.map +1 -0
  479. package/dist/types/StringType.d.ts +11 -5
  480. package/dist/types/StringType.js +18 -7
  481. package/dist/types/StringType.js.map +1 -1
  482. package/dist/types/StringType.spec.js +3 -5
  483. package/dist/types/StringType.spec.js.map +1 -1
  484. package/dist/types/TypedFunctionType.d.ts +22 -17
  485. package/dist/types/TypedFunctionType.js +78 -60
  486. package/dist/types/TypedFunctionType.js.map +1 -1
  487. package/dist/types/TypedFunctionType.spec.js +105 -20
  488. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  489. package/dist/types/UninitializedType.d.ts +8 -6
  490. package/dist/types/UninitializedType.js +13 -7
  491. package/dist/types/UninitializedType.js.map +1 -1
  492. package/dist/types/UnionType.d.ts +20 -0
  493. package/dist/types/UnionType.js +123 -0
  494. package/dist/types/UnionType.js.map +1 -0
  495. package/dist/types/UnionType.spec.d.ts +1 -0
  496. package/dist/types/UnionType.spec.js +130 -0
  497. package/dist/types/UnionType.spec.js.map +1 -0
  498. package/dist/types/VoidType.d.ts +8 -5
  499. package/dist/types/VoidType.js +14 -7
  500. package/dist/types/VoidType.js.map +1 -1
  501. package/dist/types/VoidType.spec.js +3 -3
  502. package/dist/types/VoidType.spec.js.map +1 -1
  503. package/dist/types/helper.spec.d.ts +1 -0
  504. package/dist/types/helper.spec.js +145 -0
  505. package/dist/types/helper.spec.js.map +1 -0
  506. package/dist/types/helpers.d.ts +19 -37
  507. package/dist/types/helpers.js +159 -99
  508. package/dist/types/helpers.js.map +1 -1
  509. package/dist/types/index.d.ts +22 -0
  510. package/dist/types/index.js +39 -0
  511. package/dist/types/index.js.map +1 -0
  512. package/dist/util.d.ts +167 -131
  513. package/dist/util.js +890 -350
  514. package/dist/util.js.map +1 -1
  515. package/dist/validators/ClassValidator.d.ts +7 -25
  516. package/dist/validators/ClassValidator.js +103 -194
  517. package/dist/validators/ClassValidator.js.map +1 -1
  518. package/package.json +165 -149
  519. package/dist/astUtils/AstEditor.js.map +0 -1
  520. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  521. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +0 -8
  522. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +0 -40
  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/hover/HoverProcessor.spec.d.ts} +0 -0
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isArrayLiteralExpression = 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.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.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 = 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,156 +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;
169
+ function isConstStatement(element) {
170
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.ConstStatement;
171
+ }
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;
186
177
  function isTryCatchStatement(element) {
187
- 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;
188
179
  }
189
180
  exports.isTryCatchStatement = isTryCatchStatement;
190
181
  function isCatchStatement(element) {
191
- 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;
192
183
  }
193
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;
194
189
  // Expressions reflection
195
190
  /**
196
- * 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.
197
192
  * Due to performance restrictions, this expects all statements to directly extend Expression,
198
193
  * so it only checks the immediate parent's class name. For example:
199
194
  * this will work for StringLiteralExpression -> Expression,
@@ -205,224 +200,288 @@ function isExpression(element) {
205
200
  }
206
201
  exports.isExpression = isExpression;
207
202
  function isBinaryExpression(element) {
208
- 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;
209
204
  }
210
205
  exports.isBinaryExpression = isBinaryExpression;
211
206
  function isCallExpression(element) {
212
- 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;
213
208
  }
214
209
  exports.isCallExpression = isCallExpression;
215
210
  function isFunctionExpression(element) {
216
- 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;
217
212
  }
218
213
  exports.isFunctionExpression = isFunctionExpression;
219
- function isNamespacedVariableNameExpression(element) {
220
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'NamespacedVariableNameExpression';
221
- }
222
- exports.isNamespacedVariableNameExpression = isNamespacedVariableNameExpression;
223
214
  function isDottedGetExpression(element) {
224
- 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;
225
216
  }
226
217
  exports.isDottedGetExpression = isDottedGetExpression;
227
218
  function isXmlAttributeGetExpression(element) {
228
- 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;
229
220
  }
230
221
  exports.isXmlAttributeGetExpression = isXmlAttributeGetExpression;
231
222
  function isIndexedGetExpression(element) {
232
- 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;
233
224
  }
234
225
  exports.isIndexedGetExpression = isIndexedGetExpression;
235
226
  function isGroupingExpression(element) {
236
- 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;
237
228
  }
238
229
  exports.isGroupingExpression = isGroupingExpression;
239
230
  function isLiteralExpression(element) {
240
- 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;
241
232
  }
242
233
  exports.isLiteralExpression = isLiteralExpression;
243
234
  function isEscapedCharCodeLiteralExpression(element) {
244
- 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;
245
236
  }
246
237
  exports.isEscapedCharCodeLiteralExpression = isEscapedCharCodeLiteralExpression;
247
238
  function isArrayLiteralExpression(element) {
248
- 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;
249
240
  }
250
241
  exports.isArrayLiteralExpression = isArrayLiteralExpression;
251
242
  function isAALiteralExpression(element) {
252
- 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;
253
244
  }
254
245
  exports.isAALiteralExpression = isAALiteralExpression;
255
246
  function isAAMemberExpression(element) {
256
- 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;
257
248
  }
258
249
  exports.isAAMemberExpression = isAAMemberExpression;
259
250
  function isUnaryExpression(element) {
260
- 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;
261
252
  }
262
253
  exports.isUnaryExpression = isUnaryExpression;
263
254
  function isVariableExpression(element) {
264
- 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;
265
256
  }
266
257
  exports.isVariableExpression = isVariableExpression;
267
258
  function isSourceLiteralExpression(element) {
268
- 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;
269
260
  }
270
261
  exports.isSourceLiteralExpression = isSourceLiteralExpression;
271
262
  function isNewExpression(element) {
272
- 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;
273
264
  }
274
265
  exports.isNewExpression = isNewExpression;
275
266
  function isCallfuncExpression(element) {
276
- 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;
277
268
  }
278
269
  exports.isCallfuncExpression = isCallfuncExpression;
279
270
  function isTemplateStringQuasiExpression(element) {
280
- 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;
281
272
  }
282
273
  exports.isTemplateStringQuasiExpression = isTemplateStringQuasiExpression;
283
274
  function isTemplateStringExpression(element) {
284
- 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;
285
276
  }
286
277
  exports.isTemplateStringExpression = isTemplateStringExpression;
287
278
  function isTaggedTemplateStringExpression(element) {
288
- 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;
289
280
  }
290
281
  exports.isTaggedTemplateStringExpression = isTaggedTemplateStringExpression;
291
282
  function isFunctionParameterExpression(element) {
292
- 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;
293
284
  }
294
285
  exports.isFunctionParameterExpression = isFunctionParameterExpression;
295
286
  function isAnnotationExpression(element) {
296
- 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;
297
288
  }
298
289
  exports.isAnnotationExpression = isAnnotationExpression;
299
- function isRegexLiteralExpression(element) {
300
- return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'RegexLiteralExpression';
290
+ function isTypedefProvider(element) {
291
+ return 'getTypedef' in element;
301
292
  }
302
- exports.isRegexLiteralExpression = isRegexLiteralExpression;
293
+ exports.isTypedefProvider = isTypedefProvider;
303
294
  function isTypeExpression(element) {
304
- 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;
305
296
  }
306
297
  exports.isTypeExpression = isTypeExpression;
307
- function isTypedefProvider(element) {
308
- return 'getTypedef' in element;
298
+ function isTypeCastExpression(element) {
299
+ return (element === null || element === void 0 ? void 0 : element.kind) === AstNode_1.AstNodeKind.TypeCastExpression;
309
300
  }
310
- 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;
311
306
  // BscType reflection
312
- // Note: these are Hardcoded to avoid circular dependencies
313
307
  function isStringType(value) {
314
- 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;
315
309
  }
316
310
  exports.isStringType = isStringType;
317
- function isFunctionType(e) {
318
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'FunctionType';
319
- }
320
- exports.isFunctionType = isFunctionType;
321
- function isTypedFunctionType(e) {
322
- 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;
323
313
  }
324
314
  exports.isTypedFunctionType = isTypedFunctionType;
325
- function isBooleanType(e) {
326
- 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;
327
321
  }
328
322
  exports.isBooleanType = isBooleanType;
329
- function isIntegerType(e) {
330
- 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;
331
325
  }
332
326
  exports.isIntegerType = isIntegerType;
333
- function isLongIntegerType(e) {
334
- 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;
335
329
  }
336
330
  exports.isLongIntegerType = isLongIntegerType;
337
- function isFloatType(e) {
338
- 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;
339
333
  }
340
334
  exports.isFloatType = isFloatType;
341
- function isDoubleType(e) {
342
- 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;
343
337
  }
344
338
  exports.isDoubleType = isDoubleType;
345
- function isPrimitiveType(e) {
346
- return isBooleanType(e) || isIntegerType(e) || isFloatType(e) || isDoubleType(e) || isStringType(e) || isLongIntegerType(e);
347
- }
348
- exports.isPrimitiveType = isPrimitiveType;
349
- function isInvalidType(e) {
350
- 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;
351
341
  }
352
342
  exports.isInvalidType = isInvalidType;
353
- function isVoidType(e) {
354
- 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;
355
345
  }
356
346
  exports.isVoidType = isVoidType;
357
- function isCustomType(e) {
358
- 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;
359
349
  }
360
- exports.isCustomType = isCustomType;
361
- function isUninitializedType(e) {
362
- 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;
363
353
  }
364
- exports.isUninitializedType = isUninitializedType;
365
- function isInterfaceType(e) {
366
- 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;
367
357
  }
368
- exports.isInterfaceType = isInterfaceType;
369
- function isArrayType(e) {
370
- 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;
371
361
  }
372
- exports.isArrayType = isArrayType;
373
- function isObjectType(e) {
374
- 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;
375
365
  }
376
366
  exports.isObjectType = isObjectType;
377
- function isDynamicType(e) {
378
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'DynamicType';
379
- }
380
- exports.isDynamicType = isDynamicType;
381
- function isLazyType(e) {
382
- 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';
383
370
  }
384
- exports.isLazyType = isLazyType;
385
- function isEnumType(e) {
386
- 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;
387
374
  }
388
375
  exports.isEnumType = isEnumType;
389
- function isEnumMemberType(e) {
390
- 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;
391
378
  }
392
379
  exports.isEnumMemberType = isEnumMemberType;
393
- const numberConstructorNames = [
394
- 'IntegerType',
395
- 'LongIntegerType',
396
- 'FloatType',
397
- '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
398
429
  ];
399
- function isNumberType(e) {
400
- 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);
401
432
  }
402
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;
403
454
  // Literal reflection
404
- function isLiteralInvalid(e) {
405
- return isLiteralExpression(e) && isInvalidType(e.type);
455
+ function isLiteralInvalid(value) {
456
+ return isLiteralExpression(value) && value.token.kind === TokenKind_1.TokenKind.Invalid;
406
457
  }
407
458
  exports.isLiteralInvalid = isLiteralInvalid;
408
- function isLiteralBoolean(e) {
409
- return isLiteralExpression(e) && isBooleanType(e.type);
459
+ function isLiteralBoolean(value) {
460
+ return isLiteralExpression(value) && isBooleanType(value.getType());
410
461
  }
411
462
  exports.isLiteralBoolean = isLiteralBoolean;
412
- function isLiteralString(e) {
413
- return isLiteralExpression(e) && isStringType(e.type);
463
+ function isLiteralString(value) {
464
+ return isLiteralExpression(value) && isStringType(value.getType());
414
465
  }
415
466
  exports.isLiteralString = isLiteralString;
416
- function isLiteralNumber(e) {
417
- return isLiteralExpression(e) && isNumberType(e.type);
467
+ function isLiteralNumber(value) {
468
+ return isLiteralExpression(value) && isNumberType(value.getType());
418
469
  }
419
470
  exports.isLiteralNumber = isLiteralNumber;
420
- function isSGInterfaceField(e) {
421
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'SGInterfaceField';
471
+ function isLiteralInteger(value) {
472
+ return isLiteralExpression(value) && isIntegerType(value.getType());
473
+ }
474
+ exports.isLiteralInteger = isLiteralInteger;
475
+ function isLiteralLongInteger(value) {
476
+ return isLiteralExpression(value) && isLongIntegerType(value.getType());
477
+ }
478
+ exports.isLiteralLongInteger = isLiteralLongInteger;
479
+ function isLiteralFloat(value) {
480
+ return isLiteralExpression(value) && isFloatType(value.getType());
422
481
  }
423
- exports.isSGInterfaceField = isSGInterfaceField;
424
- function isSGInterfaceFunction(e) {
425
- return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'SGInterfaceFunction';
482
+ exports.isLiteralFloat = isLiteralFloat;
483
+ function isLiteralDouble(value) {
484
+ return isLiteralExpression(value) && isDoubleType(value.getType());
426
485
  }
427
- exports.isSGInterfaceFunction = isSGInterfaceFunction;
486
+ exports.isLiteralDouble = isLiteralDouble;
428
487
  //# sourceMappingURL=reflection.js.map