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,38 +1,24 @@
1
1
  import type { Token, Identifier } from '../lexer/Token';
2
2
  import { TokenKind } from '../lexer/TokenKind';
3
- import type { Expression, NamespacedVariableNameExpression, FunctionExpression, AnnotationExpression, TypeExpression } from './Expression';
3
+ import type { DottedGetExpression, FunctionExpression, FunctionParameterExpression, TypeExpression } from './Expression';
4
+ import { VariableExpression } from './Expression';
4
5
  import type { Range } from 'vscode-languageserver';
5
6
  import type { BrsTranspileState } from './BrsTranspileState';
6
7
  import { ParseMode } from './Parser';
7
8
  import type { WalkVisitor, WalkOptions } from '../astUtils/visitors';
8
- import { InternalWalkMode } from '../astUtils/visitors';
9
- import type { InheritableStatement, MemberSymbolTableProvider, TranspileResult, TypedefProvider } from '../interfaces';
10
- import { DynamicType } from '../types/DynamicType';
9
+ import { type GetTypeOptions, type TranspileResult, type TypedefProvider } from '../interfaces';
11
10
  import type { SourceNode } from 'source-map';
12
11
  import type { TranspileState } from './TranspileState';
13
12
  import { SymbolTable } from '../SymbolTable';
14
- import { CustomType } from '../types/CustomType';
13
+ import type { Expression } from './AstNode';
14
+ import { AstNodeKind } from './AstNode';
15
+ import { Statement } from './AstNode';
16
+ import { ClassType } from '../types/ClassType';
17
+ import { EnumMemberType, EnumType } from '../types/EnumType';
18
+ import { NamespaceType } from '../types/NamespaceType';
15
19
  import { InterfaceType } from '../types/InterfaceType';
16
- import { EnumType } from '../types/EnumType';
17
- /**
18
- * A BrightScript statement
19
- */
20
- export declare abstract class Statement {
21
- /**
22
- * The starting and ending location of the statement.
23
- **/
24
- abstract readonly range: Range;
25
- /**
26
- * Statement annotations
27
- */
28
- annotations: AnnotationExpression[];
29
- abstract transpile(state: BrsTranspileState): TranspileResult;
30
- /**
31
- * When being considered by the walk visitor, this describes what type of element the current class is.
32
- */
33
- visitMode: InternalWalkMode;
34
- abstract walk(visitor: WalkVisitor, options: WalkOptions): any;
35
- }
20
+ import type { BscType } from '../types/BscType';
21
+ import { TypedFunctionType } from '../types/TypedFunctionType';
36
22
  export declare class EmptyStatement extends Statement {
37
23
  /**
38
24
  * Create a negative range to indicate this is an interpolated location
@@ -43,6 +29,7 @@ export declare class EmptyStatement extends Statement {
43
29
  * Create a negative range to indicate this is an interpolated location
44
30
  */
45
31
  range?: Range);
32
+ readonly kind = AstNodeKind.EmptyStatement;
46
33
  transpile(state: BrsTranspileState): any[];
47
34
  walk(visitor: WalkVisitor, options: WalkOptions): void;
48
35
  }
@@ -52,25 +39,31 @@ export declare class EmptyStatement extends Statement {
52
39
  export declare class Body extends Statement implements TypedefProvider {
53
40
  statements: Statement[];
54
41
  constructor(statements?: Statement[]);
55
- readonly range: Range;
42
+ readonly kind = AstNodeKind.Body;
43
+ symbolTable: SymbolTable;
44
+ get range(): Range;
56
45
  transpile(state: BrsTranspileState): TranspileResult;
57
46
  getTypedef(state: BrsTranspileState): any[];
58
47
  walk(visitor: WalkVisitor, options: WalkOptions): void;
59
48
  }
60
49
  export declare class AssignmentStatement extends Statement {
61
- readonly name: Identifier;
62
- readonly equals: Token;
63
- readonly value: Expression;
64
- readonly containingFunction: FunctionExpression;
65
- constructor(name: Identifier, equals: Token, value: Expression, containingFunction: FunctionExpression);
50
+ equals: Token;
51
+ name: Identifier;
52
+ value: Expression;
53
+ asToken?: Token;
54
+ typeExpression?: TypeExpression;
55
+ constructor(equals: Token, name: Identifier, value: Expression, asToken?: Token, typeExpression?: TypeExpression);
56
+ readonly kind = AstNodeKind.AssignmentStatement;
66
57
  readonly range: Range;
67
58
  transpile(state: BrsTranspileState): TranspileResult;
68
59
  walk(visitor: WalkVisitor, options: WalkOptions): void;
60
+ getType(options: GetTypeOptions): BscType;
69
61
  }
70
62
  export declare class Block extends Statement {
71
63
  readonly statements: Statement[];
72
64
  readonly startingRange: Range;
73
65
  constructor(statements: Statement[], startingRange: Range);
66
+ readonly kind = AstNodeKind.Block;
74
67
  readonly range: Range;
75
68
  transpile(state: BrsTranspileState): TranspileResult;
76
69
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -78,6 +71,7 @@ export declare class Block extends Statement {
78
71
  export declare class ExpressionStatement extends Statement {
79
72
  readonly expression: Expression;
80
73
  constructor(expression: Expression);
74
+ readonly kind = AstNodeKind.ExpressionStatement;
81
75
  readonly range: Range;
82
76
  transpile(state: BrsTranspileState): TranspileResult;
83
77
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -85,7 +79,8 @@ export declare class ExpressionStatement extends Statement {
85
79
  export declare class CommentStatement extends Statement implements Expression, TypedefProvider {
86
80
  comments: Token[];
87
81
  constructor(comments: Token[]);
88
- readonly range: Range;
82
+ readonly kind = AstNodeKind.CommentStatement;
83
+ range: Range;
89
84
  get text(): string;
90
85
  transpile(state: BrsTranspileState): any[];
91
86
  getTypedef(state: TranspileState): any[];
@@ -98,6 +93,7 @@ export declare class ExitForStatement extends Statement {
98
93
  constructor(tokens: {
99
94
  exitFor: Token;
100
95
  });
96
+ readonly kind = AstNodeKind.ExitForStatement;
101
97
  readonly range: Range;
102
98
  transpile(state: BrsTranspileState): SourceNode[];
103
99
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -109,6 +105,7 @@ export declare class ExitWhileStatement extends Statement {
109
105
  constructor(tokens: {
110
106
  exitWhile: Token;
111
107
  });
108
+ readonly kind = AstNodeKind.ExitWhileStatement;
112
109
  readonly range: Range;
113
110
  transpile(state: BrsTranspileState): SourceNode[];
114
111
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -116,18 +113,18 @@ export declare class ExitWhileStatement extends Statement {
116
113
  export declare class FunctionStatement extends Statement implements TypedefProvider {
117
114
  name: Identifier;
118
115
  func: FunctionExpression;
119
- namespaceName: NamespacedVariableNameExpression;
120
- constructor(name: Identifier, func: FunctionExpression, namespaceName: NamespacedVariableNameExpression);
121
- get range(): Range;
122
- cacheRange(): Range;
123
- protected _range: Range;
116
+ constructor(name: Identifier, func: FunctionExpression);
117
+ readonly kind: AstNodeKind;
118
+ readonly range: Range;
124
119
  /**
125
120
  * Get the name of this expression based on the parse mode
126
121
  */
127
122
  getName(parseMode: ParseMode): string;
123
+ getLeadingTrivia(): Token[];
128
124
  transpile(state: BrsTranspileState): any[];
129
125
  getTypedef(state: BrsTranspileState): any[];
130
126
  walk(visitor: WalkVisitor, options: WalkOptions): void;
127
+ getType(options: GetTypeOptions): TypedFunctionType;
131
128
  }
132
129
  export declare class IfStatement extends Statement {
133
130
  readonly tokens: {
@@ -146,6 +143,7 @@ export declare class IfStatement extends Statement {
146
143
  else?: Token;
147
144
  endIf?: Token;
148
145
  }, condition: Expression, thenBranch: Block, elseBranch?: IfStatement | Block, isInline?: boolean);
146
+ readonly kind = AstNodeKind.IfStatement;
149
147
  readonly range: Range;
150
148
  transpile(state: BrsTranspileState): any[];
151
149
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -154,6 +152,7 @@ export declare class IncrementStatement extends Statement {
154
152
  readonly value: Expression;
155
153
  readonly operator: Token;
156
154
  constructor(value: Expression, operator: Token);
155
+ readonly kind = AstNodeKind.IncrementStatement;
157
156
  readonly range: Range;
158
157
  transpile(state: BrsTranspileState): (string | SourceNode)[];
159
158
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -176,12 +175,14 @@ export declare class PrintStatement extends Statement {
176
175
  readonly expressions: Array<Expression | PrintSeparatorTab | PrintSeparatorSpace>;
177
176
  /**
178
177
  * Creates a new internal representation of a BrightScript `print` statement.
179
- * @param expressions an array of expressions or `PrintSeparator`s to be
180
- * evaluated and printed.
178
+ * @param tokens the tokens for this statement
179
+ * @param tokens.print a print token
180
+ * @param expressions an array of expressions or `PrintSeparator`s to be evaluated and printed.
181
181
  */
182
182
  constructor(tokens: {
183
183
  print: Token;
184
184
  }, expressions: Array<Expression | PrintSeparatorTab | PrintSeparatorSpace>);
185
+ readonly kind = AstNodeKind.PrintStatement;
185
186
  readonly range: Range;
186
187
  transpile(state: BrsTranspileState): (string | SourceNode)[];
187
188
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -193,7 +194,8 @@ export declare class DimStatement extends Statement {
193
194
  dimensions?: Expression[];
194
195
  closingSquare?: Token;
195
196
  constructor(dimToken: Token, identifier?: Identifier, openingSquare?: Token, dimensions?: Expression[], closingSquare?: Token);
196
- readonly range: Range;
197
+ readonly kind = AstNodeKind.DimStatement;
198
+ range: Range;
197
199
  transpile(state: BrsTranspileState): (string | SourceNode)[];
198
200
  walk(visitor: WalkVisitor, options: WalkOptions): void;
199
201
  }
@@ -206,6 +208,7 @@ export declare class GotoStatement extends Statement {
206
208
  goto: Token;
207
209
  label: Token;
208
210
  });
211
+ readonly kind = AstNodeKind.GotoStatement;
209
212
  readonly range: Range;
210
213
  transpile(state: BrsTranspileState): (string | SourceNode)[];
211
214
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -219,7 +222,9 @@ export declare class LabelStatement extends Statement {
219
222
  identifier: Token;
220
223
  colon: Token;
221
224
  });
225
+ readonly kind = AstNodeKind.LabelStatement;
222
226
  readonly range: Range;
227
+ getLeadingTrivia(): Token[];
223
228
  transpile(state: BrsTranspileState): SourceNode[];
224
229
  walk(visitor: WalkVisitor, options: WalkOptions): void;
225
230
  }
@@ -231,6 +236,7 @@ export declare class ReturnStatement extends Statement {
231
236
  constructor(tokens: {
232
237
  return: Token;
233
238
  }, value?: Expression);
239
+ readonly kind = AstNodeKind.ReturnStatement;
234
240
  readonly range: Range;
235
241
  transpile(state: BrsTranspileState): any[];
236
242
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -242,6 +248,7 @@ export declare class EndStatement extends Statement {
242
248
  constructor(tokens: {
243
249
  end: Token;
244
250
  });
251
+ readonly kind = AstNodeKind.EndStatement;
245
252
  readonly range: Range;
246
253
  transpile(state: BrsTranspileState): SourceNode[];
247
254
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -253,6 +260,7 @@ export declare class StopStatement extends Statement {
253
260
  constructor(tokens: {
254
261
  stop: Token;
255
262
  });
263
+ readonly kind = AstNodeKind.StopStatement;
256
264
  readonly range: Range;
257
265
  transpile(state: BrsTranspileState): SourceNode[];
258
266
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -267,18 +275,26 @@ export declare class ForStatement extends Statement {
267
275
  stepToken?: Token;
268
276
  increment?: Expression;
269
277
  constructor(forToken: Token, counterDeclaration: AssignmentStatement, toToken: Token, finalValue: Expression, body: Block, endForToken: Token, stepToken?: Token, increment?: Expression);
278
+ readonly kind = AstNodeKind.ForStatement;
270
279
  readonly range: Range;
271
280
  transpile(state: BrsTranspileState): any[];
272
281
  walk(visitor: WalkVisitor, options: WalkOptions): void;
273
282
  }
274
283
  export declare class ForEachStatement extends Statement {
275
- forEachToken: Token;
276
- item: Identifier;
277
- inToken: Token;
278
- target: Expression;
279
- body: Block;
280
- endForToken: Token;
281
- constructor(forEachToken: Token, item: Identifier, inToken: Token, target: Expression, body: Block, endForToken: Token);
284
+ readonly tokens: {
285
+ forEach: Token;
286
+ in: Token;
287
+ endFor: Token;
288
+ };
289
+ readonly item: Token;
290
+ readonly target: Expression;
291
+ readonly body: Block;
292
+ constructor(tokens: {
293
+ forEach: Token;
294
+ in: Token;
295
+ endFor: Token;
296
+ }, item: Token, target: Expression, body: Block);
297
+ readonly kind = AstNodeKind.ForEachStatement;
282
298
  readonly range: Range;
283
299
  transpile(state: BrsTranspileState): any[];
284
300
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -294,6 +310,7 @@ export declare class WhileStatement extends Statement {
294
310
  while: Token;
295
311
  endWhile: Token;
296
312
  }, condition: Expression, body: Block);
313
+ readonly kind = AstNodeKind.WhileStatement;
297
314
  readonly range: Range;
298
315
  transpile(state: BrsTranspileState): any[];
299
316
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -302,12 +319,13 @@ export declare class DottedSetStatement extends Statement {
302
319
  readonly obj: Expression;
303
320
  readonly name: Identifier;
304
321
  readonly value: Expression;
305
- dot: Token;
306
- operator: Token;
307
- constructor(obj: Expression, name: Identifier, value: Expression, dot: Token, operator: Token);
322
+ readonly dot?: Token;
323
+ constructor(obj: Expression, name: Identifier, value: Expression, dot?: Token);
324
+ readonly kind = AstNodeKind.DottedSetStatement;
308
325
  readonly range: Range;
309
326
  transpile(state: BrsTranspileState): TranspileResult;
310
327
  walk(visitor: WalkVisitor, options: WalkOptions): void;
328
+ getType(options: GetTypeOptions): BscType;
311
329
  }
312
330
  export declare class IndexedSetStatement extends Statement {
313
331
  readonly obj: Expression;
@@ -315,8 +333,8 @@ export declare class IndexedSetStatement extends Statement {
315
333
  readonly value: Expression;
316
334
  readonly openingSquare: Token;
317
335
  readonly closingSquare: Token;
318
- operator: Token;
319
- constructor(obj: Expression, index: Expression, value: Expression, openingSquare: Token, closingSquare: Token, operator: Token);
336
+ constructor(obj: Expression, index: Expression, value: Expression, openingSquare: Token, closingSquare: Token);
337
+ readonly kind = AstNodeKind.IndexedSetStatement;
320
338
  readonly range: Range;
321
339
  transpile(state: BrsTranspileState): TranspileResult;
322
340
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -330,6 +348,7 @@ export declare class LibraryStatement extends Statement implements TypedefProvid
330
348
  library: Token;
331
349
  filePath: Token | undefined;
332
350
  });
351
+ readonly kind = AstNodeKind.LibraryStatement;
333
352
  readonly range: Range;
334
353
  transpile(state: BrsTranspileState): any[];
335
354
  getTypedef(state: BrsTranspileState): any[];
@@ -337,30 +356,33 @@ export declare class LibraryStatement extends Statement implements TypedefProvid
337
356
  }
338
357
  export declare class NamespaceStatement extends Statement implements TypedefProvider {
339
358
  keyword: Token;
340
- nameExpression: NamespacedVariableNameExpression;
359
+ nameExpression: VariableExpression | DottedGetExpression;
341
360
  body: Body;
342
361
  endKeyword: Token;
343
- readonly parentSymbolTable?: SymbolTable;
344
- readonly symbolTable: SymbolTable;
345
- constructor(keyword: Token, nameExpression: NamespacedVariableNameExpression, body: Body, endKeyword: Token, parentSymbolTable?: SymbolTable);
346
- get range(): Range;
347
- cacheRange(): Range;
348
- private _range;
362
+ constructor(keyword: Token, nameExpression: VariableExpression | DottedGetExpression, body: Body, endKeyword: Token);
363
+ readonly kind = AstNodeKind.NamespaceStatement;
349
364
  /**
350
365
  * The string name for this namespace
351
366
  */
352
367
  name: string;
368
+ get range(): Range;
369
+ private _range;
370
+ cacheRange(): Range;
353
371
  getName(parseMode: ParseMode): string;
372
+ getLeadingTrivia(): Token[];
373
+ getNameParts(): Identifier[];
354
374
  transpile(state: BrsTranspileState): TranspileResult;
355
375
  getTypedef(state: BrsTranspileState): string[];
356
376
  walk(visitor: WalkVisitor, options: WalkOptions): void;
377
+ getType(options: GetTypeOptions): NamespaceType;
357
378
  }
358
379
  export declare class ImportStatement extends Statement implements TypedefProvider {
359
380
  readonly importToken: Token;
360
381
  readonly filePathToken: Token;
361
382
  constructor(importToken: Token, filePathToken: Token);
383
+ readonly kind = AstNodeKind.ImportStatement;
384
+ range: Range;
362
385
  filePath: string;
363
- readonly range: Range;
364
386
  transpile(state: BrsTranspileState): (string | SourceNode)[];
365
387
  /**
366
388
  * Get the typedef for this statement
@@ -368,61 +390,83 @@ export declare class ImportStatement extends Statement implements TypedefProvide
368
390
  getTypedef(state: BrsTranspileState): string[];
369
391
  walk(visitor: WalkVisitor, options: WalkOptions): void;
370
392
  }
371
- export declare class InterfaceStatement extends Statement implements TypedefProvider, MemberSymbolTableProvider {
372
- name: Identifier;
373
- parentInterfaceName: NamespacedVariableNameExpression;
393
+ export declare class InterfaceStatement extends Statement implements TypedefProvider {
394
+ parentInterfaceName: TypeExpression;
374
395
  body: Statement[];
375
- namespaceName: NamespacedVariableNameExpression;
376
- readonly memberTable: SymbolTable;
377
- constructor(interfaceToken: Token, name: Identifier, extendsToken: Token, parentInterfaceName: NamespacedVariableNameExpression, body: Statement[], endInterfaceToken: Token, namespaceName: NamespacedVariableNameExpression);
396
+ constructor(interfaceToken: Token, name: Identifier, extendsToken: Token, parentInterfaceName: TypeExpression, body: Statement[], endInterfaceToken: Token);
397
+ readonly kind = AstNodeKind.InterfaceStatement;
378
398
  tokens: {
379
399
  interface: Token;
380
400
  name: Identifier;
381
401
  extends: Token;
382
402
  endInterface: Token;
383
403
  };
384
- readonly range: Range;
385
- memberMap: Record<string, InterfaceMemberStatement>;
386
- methods: InterfaceMethodStatement[];
387
- fields: InterfaceFieldStatement[];
388
- buildSymbolTable(parentIface?: InheritableStatement): void;
389
- hasParent(): boolean;
390
- getParentName(): boolean;
404
+ range: Range;
405
+ get fields(): InterfaceFieldStatement[];
406
+ get methods(): InterfaceMethodStatement[];
407
+ hasParentInterface(): boolean;
408
+ getLeadingTrivia(): Token[];
391
409
  /**
392
- * Gets an array of possible parent interface names, taking into account the namespace this interface was created under
393
- * @returns array of possible parent interface names
410
+ * The name of the interface WITH its leading namespace (if applicable)
394
411
  */
395
- getPossibleFullParentNames(): string[];
396
- getThisBscType(): InterfaceType;
412
+ get fullName(): string;
397
413
  /**
398
- * The name of the interface WITH its leading namespace (if applicable)
414
+ * The name of the interface (without the namespace prefix)
415
+ */
416
+ get name(): string;
417
+ /**
418
+ * Get the name of this expression based on the parse mode
399
419
  */
400
420
  getName(parseMode: ParseMode): string;
401
421
  transpile(state: BrsTranspileState): TranspileResult;
402
422
  getTypedef(state: BrsTranspileState): TranspileResult;
403
423
  walk(visitor: WalkVisitor, options: WalkOptions): void;
424
+ getType(options: GetTypeOptions): InterfaceType;
404
425
  }
405
426
  export declare class InterfaceFieldStatement extends Statement implements TypedefProvider {
406
- type?: TypeExpression;
407
- namespaceName?: NamespacedVariableNameExpression;
427
+ typeExpression?: TypeExpression;
408
428
  transpile(state: BrsTranspileState): TranspileResult;
409
- constructor(nameToken: Identifier, asToken: Token, type?: TypeExpression, namespaceName?: NamespacedVariableNameExpression);
410
- readonly range: Range;
429
+ constructor(nameToken: Identifier, asToken: Token, typeExpression?: TypeExpression, optionalToken?: Token);
430
+ readonly kind = AstNodeKind.InterfaceFieldStatement;
431
+ range: Range;
411
432
  tokens: {
412
433
  name: Identifier;
413
434
  as: Token;
435
+ optional?: Token;
414
436
  };
415
- getType(): import("../types/BscType").BscType;
416
- get name(): Identifier;
437
+ getLeadingTrivia(): Token[];
438
+ get name(): string;
439
+ get isOptional(): boolean;
417
440
  walk(visitor: WalkVisitor, options: WalkOptions): void;
418
441
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
442
+ getType(options: GetTypeOptions): BscType;
419
443
  }
420
- export declare class InterfaceMethodStatement extends FunctionStatement implements TypedefProvider {
444
+ export declare class InterfaceMethodStatement extends Statement implements TypedefProvider {
445
+ params: FunctionParameterExpression[];
446
+ returnTypeExpression?: TypeExpression;
421
447
  transpile(state: BrsTranspileState): TranspileResult;
422
- constructor(name: Identifier, func: FunctionExpression);
448
+ constructor(functionTypeToken: Token, nameToken: Identifier, leftParen: Token, params: FunctionParameterExpression[], rightParen: Token, asToken?: Token, returnTypeExpression?: TypeExpression, optionalToken?: Token);
449
+ readonly kind = AstNodeKind.InterfaceMethodStatement;
450
+ get range(): Range;
451
+ /**
452
+ * Get the name of this method.
453
+ */
454
+ getName(parseMode: ParseMode): string;
455
+ tokens: {
456
+ optional?: Token;
457
+ functionType: Token;
458
+ name: Identifier;
459
+ leftParen: Token;
460
+ rightParen: Token;
461
+ as: Token;
462
+ };
463
+ get isOptional(): boolean;
464
+ getLeadingTrivia(): Token[];
423
465
  walk(visitor: WalkVisitor, options: WalkOptions): void;
466
+ getTypedef(state: BrsTranspileState): TranspileResult;
467
+ getType(options: GetTypeOptions): TypedFunctionType;
424
468
  }
425
- export declare class ClassStatement extends Statement implements TypedefProvider, MemberSymbolTableProvider {
469
+ export declare class ClassStatement extends Statement implements TypedefProvider {
426
470
  readonly classKeyword: Token;
427
471
  /**
428
472
  * The name of the class (without namespace prefix)
@@ -431,24 +475,19 @@ export declare class ClassStatement extends Statement implements TypedefProvider
431
475
  body: Statement[];
432
476
  readonly end: Token;
433
477
  readonly extendsKeyword?: Token;
434
- readonly parentClassName?: NamespacedVariableNameExpression;
435
- readonly namespaceName?: NamespacedVariableNameExpression;
436
- readonly currentSymbolTable?: SymbolTable;
437
- readonly symbolTable: SymbolTable;
438
- readonly memberTable: SymbolTable;
478
+ readonly parentClassName?: TypeExpression;
439
479
  constructor(classKeyword: Token,
440
480
  /**
441
481
  * The name of the class (without namespace prefix)
442
482
  */
443
- name: Identifier, body: Statement[], end: Token, extendsKeyword?: Token, parentClassName?: NamespacedVariableNameExpression, namespaceName?: NamespacedVariableNameExpression, currentSymbolTable?: SymbolTable);
483
+ name: Identifier, body: Statement[], end: Token, extendsKeyword?: Token, parentClassName?: TypeExpression);
484
+ readonly kind = AstNodeKind.ClassStatement;
444
485
  getName(parseMode: ParseMode): string;
486
+ getLeadingTrivia(): Token[];
445
487
  memberMap: Record<string, MemberStatement>;
446
488
  methods: MethodStatement[];
447
489
  fields: FieldStatement[];
448
490
  readonly range: Range;
449
- getThisBscType(): CustomType;
450
- getConstructorFunctionType(): import("../types/TypedFunctionType").TypedFunctionType;
451
- buildSymbolTable(parentClass?: InheritableStatement): void;
452
491
  transpile(state: BrsTranspileState): any[];
453
492
  getTypedef(state: BrsTranspileState): TranspileResult;
454
493
  /**
@@ -457,18 +496,14 @@ export declare class ClassStatement extends Statement implements TypedefProvider
457
496
  * The base class is index 0, its child is index 1, and so on.
458
497
  */
459
498
  getParentClassIndex(state: BrsTranspileState): number;
460
- hasParent(): boolean;
461
- /**
462
- * Gets an array of possible parent class names, taking into account the namespace this class was created under
463
- * @returns array of possible parent class names
464
- */
465
- getPossibleFullParentNames(): string[];
499
+ hasParentClass(): boolean;
466
500
  /**
467
501
  * Get all ancestor classes, in closest-to-furthest order (i.e. 0 is parent, 1 is grandparent, etc...).
468
502
  * This will return an empty array if no ancestors were found
469
503
  */
470
504
  getAncestors(state: BrsTranspileState): ClassStatement[];
471
505
  private getBuilderName;
506
+ getConstructorType(): TypedFunctionType;
472
507
  /**
473
508
  * Get the constructor function for this class (if exists), or undefined if not exist
474
509
  */
@@ -490,16 +525,22 @@ export declare class ClassStatement extends Statement implements TypedefProvider
490
525
  */
491
526
  private getTranspiledClassFunction;
492
527
  walk(visitor: WalkVisitor, options: WalkOptions): void;
528
+ getType(options: GetTypeOptions): ClassType;
493
529
  }
494
530
  export declare class MethodStatement extends FunctionStatement {
495
531
  override: Token;
496
532
  constructor(modifiers: Token | Token[], name: Identifier, func: FunctionExpression, override: Token);
533
+ readonly kind: AstNodeKind;
497
534
  modifiers: Token[];
498
535
  get accessModifier(): Token;
499
- get range(): Range;
500
- cacheRange(): Range;
536
+ readonly range: Range;
537
+ /**
538
+ * Get the name of this method.
539
+ */
540
+ getName(parseMode: ParseMode): string;
541
+ getLeadingTrivia(): Token[];
501
542
  transpile(state: BrsTranspileState): any[];
502
- getTypedef(state: BrsTranspileState): string[];
543
+ getTypedef(state: BrsTranspileState): (string | SourceNode)[];
503
544
  /**
504
545
  * All child classes must call the parent constructor. The type checker will warn users when they don't call it in their own class,
505
546
  * but we still need to call it even if they have omitted it. This injects the super call if it's missing
@@ -515,25 +556,25 @@ export declare class FieldStatement extends Statement implements TypedefProvider
515
556
  readonly accessModifier?: Token;
516
557
  readonly name?: Identifier;
517
558
  readonly as?: Token;
518
- readonly type?: TypeExpression;
559
+ readonly typeExpression?: TypeExpression;
519
560
  readonly equal?: Token;
520
561
  readonly initialValue?: Expression;
521
- readonly namespaceName?: NamespacedVariableNameExpression;
522
- constructor(accessModifier?: Token, name?: Identifier, as?: Token, type?: TypeExpression, equal?: Token, initialValue?: Expression, namespaceName?: NamespacedVariableNameExpression);
523
- readonly range: Range;
562
+ readonly optional?: Token;
563
+ constructor(accessModifier?: Token, name?: Identifier, as?: Token, typeExpression?: TypeExpression, equal?: Token, initialValue?: Expression, optional?: Token);
564
+ readonly kind = AstNodeKind.FieldStatement;
524
565
  /**
525
566
  * Derive a ValueKind from the type token, or the initial value.
526
567
  * Defaults to `DynamicType`
527
568
  */
528
- getType(parseMode?: ParseMode): DynamicType | import("../types/BscType").BscType;
569
+ getType(options: GetTypeOptions): BscType;
570
+ readonly range: Range;
571
+ getLeadingTrivia(): Token[];
572
+ get isOptional(): boolean;
529
573
  transpile(state: BrsTranspileState): TranspileResult;
530
574
  getTypedef(state: BrsTranspileState): any[];
531
575
  walk(visitor: WalkVisitor, options: WalkOptions): void;
532
576
  }
533
577
  export declare type MemberStatement = FieldStatement | MethodStatement;
534
- export declare type InterfaceMemberStatement = InterfaceFieldStatement | InterfaceMethodStatement;
535
- export declare type MemberFieldStatement = FieldStatement | InterfaceFieldStatement;
536
- export declare type MemberMethodStatement = MethodStatement | InterfaceMethodStatement;
537
578
  export declare class TryCatchStatement extends Statement {
538
579
  tokens: {
539
580
  try: Token;
@@ -545,6 +586,7 @@ export declare class TryCatchStatement extends Statement {
545
586
  try: Token;
546
587
  endTry?: Token;
547
588
  }, tryBranch?: Block, catchStatement?: CatchStatement);
589
+ readonly kind = AstNodeKind.TryCatchStatement;
548
590
  readonly range: Range;
549
591
  transpile(state: BrsTranspileState): TranspileResult;
550
592
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -558,7 +600,8 @@ export declare class CatchStatement extends Statement {
558
600
  constructor(tokens: {
559
601
  catch: Token;
560
602
  }, exceptionVariable?: Identifier, catchBranch?: Block);
561
- get range(): Range;
603
+ readonly kind = AstNodeKind.CatchStatement;
604
+ range: Range;
562
605
  transpile(state: BrsTranspileState): TranspileResult;
563
606
  walk(visitor: WalkVisitor, options: WalkOptions): void;
564
607
  }
@@ -566,7 +609,8 @@ export declare class ThrowStatement extends Statement {
566
609
  throwToken: Token;
567
610
  expression?: Expression;
568
611
  constructor(throwToken: Token, expression?: Expression);
569
- readonly range: Range;
612
+ readonly kind = AstNodeKind.ThrowStatement;
613
+ range: Range;
570
614
  transpile(state: BrsTranspileState): (string | SourceNode)[];
571
615
  walk(visitor: WalkVisitor, options: WalkOptions): void;
572
616
  }
@@ -577,22 +621,22 @@ export declare class EnumStatement extends Statement implements TypedefProvider
577
621
  endEnum: Token;
578
622
  };
579
623
  body: Array<EnumMemberStatement | CommentStatement>;
580
- namespaceName?: NamespacedVariableNameExpression;
581
- readonly symbolTable: SymbolTable;
582
624
  constructor(tokens: {
583
625
  enum: Token;
584
626
  name: Identifier;
585
627
  endEnum: Token;
586
- }, body: Array<EnumMemberStatement | CommentStatement>, namespaceName?: NamespacedVariableNameExpression);
587
- readonly range: Range;
628
+ }, body: Array<EnumMemberStatement | CommentStatement>);
629
+ readonly kind = AstNodeKind.EnumStatement;
630
+ symbolTable: SymbolTable;
631
+ get range(): Range;
588
632
  getMembers(): EnumMemberStatement[];
633
+ getLeadingTrivia(): Token[];
589
634
  /**
590
635
  * Get a map of member names and their values.
591
636
  * All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
592
637
  */
593
638
  getMemberValueMap(): Map<string, string>;
594
639
  getMemberValue(name: string): string;
595
- buildSymbolTable(): void;
596
640
  /**
597
641
  * The name of the enum (without the namespace prefix)
598
642
  */
@@ -601,10 +645,10 @@ export declare class EnumStatement extends Statement implements TypedefProvider
601
645
  * The name of the enum WITH its leading namespace (if applicable)
602
646
  */
603
647
  get fullName(): string;
604
- getThisBscType(): EnumType;
605
648
  transpile(state: BrsTranspileState): any[];
606
649
  getTypedef(state: BrsTranspileState): TranspileResult;
607
650
  walk(visitor: WalkVisitor, options: WalkOptions): void;
651
+ getType(options: GetTypeOptions): EnumType;
608
652
  }
609
653
  export declare class EnumMemberStatement extends Statement implements TypedefProvider {
610
654
  tokens: {
@@ -616,12 +660,54 @@ export declare class EnumMemberStatement extends Statement implements TypedefPro
616
660
  name: Identifier;
617
661
  equal?: Token;
618
662
  }, value?: Expression);
619
- readonly range: Range;
663
+ readonly kind = AstNodeKind.EnumMemberStatement;
664
+ get range(): Range;
620
665
  /**
621
666
  * The name of the member
622
667
  */
623
668
  get name(): string;
669
+ getLeadingTrivia(): Token[];
624
670
  transpile(state: BrsTranspileState): TranspileResult;
625
671
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
626
672
  walk(visitor: WalkVisitor, options: WalkOptions): void;
673
+ getType(options: GetTypeOptions): EnumMemberType;
674
+ }
675
+ export declare class ConstStatement extends Statement implements TypedefProvider {
676
+ tokens: {
677
+ const: Token;
678
+ name: Identifier;
679
+ equals: Token;
680
+ };
681
+ value: Expression;
682
+ constructor(tokens: {
683
+ const: Token;
684
+ name: Identifier;
685
+ equals: Token;
686
+ }, value: Expression);
687
+ readonly kind = AstNodeKind.ConstStatement;
688
+ range: Range;
689
+ get name(): string;
690
+ getLeadingTrivia(): Token[];
691
+ /**
692
+ * The name of the statement WITH its leading namespace (if applicable)
693
+ */
694
+ get fullName(): string;
695
+ transpile(state: BrsTranspileState): TranspileResult;
696
+ getTypedef(state: BrsTranspileState): (string | SourceNode)[];
697
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
698
+ getType(options: GetTypeOptions): BscType;
699
+ }
700
+ export declare class ContinueStatement extends Statement {
701
+ tokens: {
702
+ continue: Token;
703
+ loopType: Token;
704
+ };
705
+ constructor(tokens: {
706
+ continue: Token;
707
+ loopType: Token;
708
+ });
709
+ readonly kind = AstNodeKind.ContinueStatement;
710
+ range: Range;
711
+ transpile(state: BrsTranspileState): (string | SourceNode)[];
712
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
627
713
  }