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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/CHANGELOG.md +521 -233
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +46 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +152 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +40 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +7 -0
  17. package/dist/CacheVerifier.js +20 -0
  18. package/dist/CacheVerifier.js.map +1 -0
  19. package/dist/CodeActionUtil.d.ts +3 -3
  20. package/dist/CodeActionUtil.js.map +1 -1
  21. package/dist/CommentFlagProcessor.d.ts +3 -2
  22. package/dist/CommentFlagProcessor.js +5 -4
  23. package/dist/CommentFlagProcessor.js.map +1 -1
  24. package/dist/DependencyGraph.d.ts +3 -2
  25. package/dist/DependencyGraph.js +11 -10
  26. package/dist/DependencyGraph.js.map +1 -1
  27. package/dist/DiagnosticCollection.js +9 -5
  28. package/dist/DiagnosticCollection.js.map +1 -1
  29. package/dist/DiagnosticFilterer.d.ts +1 -0
  30. package/dist/DiagnosticFilterer.js +5 -3
  31. package/dist/DiagnosticFilterer.js.map +1 -1
  32. package/dist/DiagnosticMessages.d.ts +61 -13
  33. package/dist/DiagnosticMessages.js +116 -19
  34. package/dist/DiagnosticMessages.js.map +1 -1
  35. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  36. package/dist/DiagnosticSeverityAdjuster.js +41 -0
  37. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  38. package/dist/FunctionScope.d.ts +28 -0
  39. package/dist/FunctionScope.js +52 -0
  40. package/dist/FunctionScope.js.map +1 -0
  41. package/dist/KeyedThrottler.d.ts +3 -3
  42. package/dist/KeyedThrottler.js +3 -3
  43. package/dist/KeyedThrottler.js.map +1 -1
  44. package/dist/LanguageServer.d.ts +23 -11
  45. package/dist/LanguageServer.js +150 -69
  46. package/dist/LanguageServer.js.map +1 -1
  47. package/dist/Logger.d.ts +3 -2
  48. package/dist/Logger.js +11 -3
  49. package/dist/Logger.js.map +1 -1
  50. package/dist/PluginInterface.d.ts +21 -3
  51. package/dist/PluginInterface.js +74 -6
  52. package/dist/PluginInterface.js.map +1 -1
  53. package/dist/Program.d.ts +158 -79
  54. package/dist/Program.js +841 -706
  55. package/dist/Program.js.map +1 -1
  56. package/dist/ProgramBuilder.d.ts +22 -12
  57. package/dist/ProgramBuilder.js +130 -103
  58. package/dist/ProgramBuilder.js.map +1 -1
  59. package/dist/Scope.d.ts +86 -137
  60. package/dist/Scope.js +453 -519
  61. package/dist/Scope.js.map +1 -1
  62. package/dist/Stopwatch.js +1 -1
  63. package/dist/Stopwatch.js.map +1 -1
  64. package/dist/SymbolTable.d.ts +89 -34
  65. package/dist/SymbolTable.js +239 -114
  66. package/dist/SymbolTable.js.map +1 -1
  67. package/dist/Throttler.d.ts +12 -0
  68. package/dist/Throttler.js +39 -0
  69. package/dist/Throttler.js.map +1 -1
  70. package/dist/Watcher.d.ts +0 -3
  71. package/dist/Watcher.js +0 -3
  72. package/dist/Watcher.js.map +1 -1
  73. package/dist/XmlScope.d.ts +4 -11
  74. package/dist/XmlScope.js +75 -88
  75. package/dist/XmlScope.js.map +1 -1
  76. package/dist/astUtils/CachedLookups.d.ts +48 -0
  77. package/dist/astUtils/CachedLookups.js +323 -0
  78. package/dist/astUtils/CachedLookups.js.map +1 -0
  79. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +9 -5
  80. package/dist/astUtils/{AstEditor.js → Editor.js} +10 -4
  81. package/dist/astUtils/Editor.js.map +1 -0
  82. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +69 -65
  83. package/dist/astUtils/Editor.spec.js.map +1 -0
  84. package/dist/astUtils/creators.d.ts +10 -10
  85. package/dist/astUtils/creators.js +54 -24
  86. package/dist/astUtils/creators.js.map +1 -1
  87. package/dist/astUtils/creators.spec.js +5 -5
  88. package/dist/astUtils/creators.spec.js.map +1 -1
  89. package/dist/astUtils/reflection.d.ts +132 -104
  90. package/dist/astUtils/reflection.js +220 -174
  91. package/dist/astUtils/reflection.js.map +1 -1
  92. package/dist/astUtils/reflection.spec.js +256 -157
  93. package/dist/astUtils/reflection.spec.js.map +1 -1
  94. package/dist/astUtils/stackedVisitor.spec.js +12 -12
  95. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  96. package/dist/astUtils/visitors.d.ts +53 -35
  97. package/dist/astUtils/visitors.js +29 -3
  98. package/dist/astUtils/visitors.js.map +1 -1
  99. package/dist/astUtils/visitors.spec.js +208 -52
  100. package/dist/astUtils/visitors.spec.js.map +1 -1
  101. package/dist/astUtils/xml.d.ts +9 -9
  102. package/dist/astUtils/xml.js +9 -9
  103. package/dist/astUtils/xml.js.map +1 -1
  104. package/dist/bscPlugin/BscPlugin.d.ts +11 -2
  105. package/dist/bscPlugin/BscPlugin.js +37 -3
  106. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  107. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  108. package/dist/bscPlugin/CallExpressionInfo.js +131 -0
  109. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  110. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  111. package/dist/bscPlugin/FileWriter.js +24 -0
  112. package/dist/bscPlugin/FileWriter.js.map +1 -0
  113. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  114. package/dist/bscPlugin/SignatureHelpUtil.js +136 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +16 -13
  117. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  118. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +16 -16
  119. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  120. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +52 -1
  121. package/dist/bscPlugin/completions/CompletionsProcessor.js +517 -26
  122. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  123. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
  124. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  125. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  126. package/dist/bscPlugin/definition/DefinitionProvider.js +210 -0
  127. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  128. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +88 -0
  129. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  130. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  131. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  132. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  133. package/dist/bscPlugin/hover/HoverProcessor.d.ts +7 -7
  134. package/dist/bscPlugin/hover/HoverProcessor.js +123 -125
  135. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  136. package/dist/bscPlugin/hover/HoverProcessor.spec.js +371 -53
  137. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  138. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +2 -1
  139. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +83 -23
  140. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  141. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +83 -6
  142. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  143. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  144. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  145. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  146. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  147. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  148. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  149. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  150. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  151. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  152. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  153. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +38 -12
  154. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  155. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  156. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  157. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  158. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  159. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  160. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  161. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -5
  162. package/dist/bscPlugin/validation/BrsFileValidator.js +262 -52
  163. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  164. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +230 -14
  165. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  166. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  167. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  168. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  169. package/dist/bscPlugin/validation/ScopeValidator.d.ts +58 -27
  170. package/dist/bscPlugin/validation/ScopeValidator.js +514 -286
  171. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  172. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  173. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2527 -0
  174. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  175. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  176. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  177. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  178. package/dist/cli.js +104 -13
  179. package/dist/cli.js.map +1 -1
  180. package/dist/deferred.d.ts +3 -3
  181. package/dist/deferred.js.map +1 -1
  182. package/dist/diagnosticUtils.d.ts +8 -2
  183. package/dist/diagnosticUtils.js +47 -17
  184. package/dist/diagnosticUtils.js.map +1 -1
  185. package/dist/examples/plugins/removePrint.js +8 -10
  186. package/dist/examples/plugins/removePrint.js.map +1 -1
  187. package/dist/files/AssetFile.d.ts +26 -0
  188. package/dist/files/AssetFile.js +26 -0
  189. package/dist/files/AssetFile.js.map +1 -0
  190. package/dist/files/BrsFile.Class.spec.js +523 -493
  191. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  192. package/dist/files/BrsFile.d.ts +111 -117
  193. package/dist/files/BrsFile.js +684 -1142
  194. package/dist/files/BrsFile.js.map +1 -1
  195. package/dist/files/BrsFile.spec.js +1783 -1233
  196. package/dist/files/BrsFile.spec.js.map +1 -1
  197. package/dist/files/BscFile.d.ts +104 -0
  198. package/dist/files/BscFile.js +16 -0
  199. package/dist/files/BscFile.js.map +1 -0
  200. package/dist/files/Factory.d.ts +25 -0
  201. package/dist/files/Factory.js +22 -0
  202. package/dist/files/Factory.js.map +1 -0
  203. package/dist/files/LazyFileData.d.ts +20 -0
  204. package/dist/files/LazyFileData.js +54 -0
  205. package/dist/files/LazyFileData.js.map +1 -0
  206. package/dist/files/LazyFileData.spec.d.ts +1 -0
  207. package/dist/files/LazyFileData.spec.js +27 -0
  208. package/dist/files/LazyFileData.spec.js.map +1 -0
  209. package/dist/files/XmlFile.d.ts +70 -32
  210. package/dist/files/XmlFile.js +106 -118
  211. package/dist/files/XmlFile.js.map +1 -1
  212. package/dist/files/XmlFile.spec.js +325 -262
  213. package/dist/files/XmlFile.spec.js.map +1 -1
  214. package/dist/files/tests/imports.spec.js +48 -40
  215. package/dist/files/tests/imports.spec.js.map +1 -1
  216. package/dist/files/tests/optionalChaning.spec.js +84 -24
  217. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  218. package/dist/globalCallables.js +16 -21
  219. package/dist/globalCallables.js.map +1 -1
  220. package/dist/index.d.ts +12 -1
  221. package/dist/index.js +12 -1
  222. package/dist/index.js.map +1 -1
  223. package/dist/interfaces.d.ts +421 -162
  224. package/dist/interfaces.js +27 -0
  225. package/dist/interfaces.js.map +1 -1
  226. package/dist/lexer/Character.spec.js +5 -5
  227. package/dist/lexer/Character.spec.js.map +1 -1
  228. package/dist/lexer/Lexer.d.ts +12 -5
  229. package/dist/lexer/Lexer.js +28 -13
  230. package/dist/lexer/Lexer.js.map +1 -1
  231. package/dist/lexer/Lexer.spec.js +181 -135
  232. package/dist/lexer/Lexer.spec.js.map +1 -1
  233. package/dist/lexer/Token.d.ts +9 -1
  234. package/dist/lexer/Token.js +9 -1
  235. package/dist/lexer/Token.js.map +1 -1
  236. package/dist/lexer/TokenKind.d.ts +8 -0
  237. package/dist/lexer/TokenKind.js +24 -4
  238. package/dist/lexer/TokenKind.js.map +1 -1
  239. package/dist/parser/AstNode.d.ts +162 -0
  240. package/dist/parser/AstNode.js +225 -0
  241. package/dist/parser/AstNode.js.map +1 -0
  242. package/dist/parser/AstNode.spec.d.ts +1 -0
  243. package/dist/parser/AstNode.spec.js +165 -0
  244. package/dist/parser/AstNode.spec.js.map +1 -0
  245. package/dist/parser/BrsTranspileState.d.ts +4 -7
  246. package/dist/parser/BrsTranspileState.js +4 -12
  247. package/dist/parser/BrsTranspileState.js.map +1 -1
  248. package/dist/parser/Expression.d.ts +376 -283
  249. package/dist/parser/Expression.js +742 -585
  250. package/dist/parser/Expression.js.map +1 -1
  251. package/dist/parser/Parser.Class.spec.js +151 -145
  252. package/dist/parser/Parser.Class.spec.js.map +1 -1
  253. package/dist/parser/Parser.d.ts +48 -201
  254. package/dist/parser/Parser.js +705 -1026
  255. package/dist/parser/Parser.js.map +1 -1
  256. package/dist/parser/Parser.spec.d.ts +3 -1
  257. package/dist/parser/Parser.spec.js +861 -848
  258. package/dist/parser/Parser.spec.js.map +1 -1
  259. package/dist/parser/SGParser.d.ts +9 -8
  260. package/dist/parser/SGParser.js +10 -8
  261. package/dist/parser/SGParser.js.map +1 -1
  262. package/dist/parser/SGParser.spec.js +27 -38
  263. package/dist/parser/SGParser.spec.js.map +1 -1
  264. package/dist/parser/SGTypes.d.ts +98 -35
  265. package/dist/parser/SGTypes.js +169 -99
  266. package/dist/parser/SGTypes.js.map +1 -1
  267. package/dist/parser/Statement.d.ts +468 -272
  268. package/dist/parser/Statement.js +904 -631
  269. package/dist/parser/Statement.js.map +1 -1
  270. package/dist/parser/Statement.spec.js +47 -23
  271. package/dist/parser/Statement.spec.js.map +1 -1
  272. package/dist/parser/TranspileState.d.ts +1 -1
  273. package/dist/parser/TranspileState.js +7 -12
  274. package/dist/parser/TranspileState.js.map +1 -1
  275. package/dist/parser/tests/Parser.spec.js +3 -2
  276. package/dist/parser/tests/Parser.spec.js.map +1 -1
  277. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  278. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  279. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  280. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  281. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  282. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  283. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  284. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  285. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  286. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  287. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  288. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  289. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +62 -21
  290. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  291. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  292. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  293. package/dist/parser/tests/expression/Call.spec.js +129 -21
  294. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  295. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  296. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  297. package/dist/parser/tests/expression/Function.spec.js +36 -36
  298. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  299. package/dist/parser/tests/expression/Indexing.spec.js +92 -22
  300. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  301. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  302. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  303. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +59 -59
  304. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  305. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  306. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  307. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  308. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  309. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  310. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  311. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  312. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  313. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  314. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  315. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +96 -57
  316. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  317. package/dist/parser/tests/expression/TernaryExpression.spec.js +89 -89
  318. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  319. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  320. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  321. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  322. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  323. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  324. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  325. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  326. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  327. package/dist/parser/tests/statement/ConstStatement.spec.js +82 -33
  328. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  329. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  330. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  331. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  332. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  333. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  335. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/Enum.spec.js +98 -302
  337. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/For.spec.js +9 -10
  339. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  341. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/Function.spec.js +44 -35
  343. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  345. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  347. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  349. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  351. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  353. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/PrintStatement.spec.js +36 -34
  355. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  357. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/Set.spec.js +48 -35
  359. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  360. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  361. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  362. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  363. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  364. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  365. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  366. package/dist/preprocessor/Manifest.d.ts +1 -1
  367. package/dist/preprocessor/Manifest.js +2 -2
  368. package/dist/preprocessor/Manifest.js.map +1 -1
  369. package/dist/preprocessor/Manifest.spec.js +8 -8
  370. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  371. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  372. package/dist/preprocessor/Preprocessor.js +5 -5
  373. package/dist/preprocessor/Preprocessor.js.map +1 -1
  374. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  375. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  376. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  377. package/dist/preprocessor/PreprocessorParser.js +7 -1
  378. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  379. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  380. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  381. package/dist/roku-types/data.json +5892 -10081
  382. package/dist/roku-types/index.d.ts +622 -1719
  383. package/dist/types/ArrayType.d.ts +10 -9
  384. package/dist/types/ArrayType.js +65 -60
  385. package/dist/types/ArrayType.js.map +1 -1
  386. package/dist/types/ArrayType.spec.js +36 -68
  387. package/dist/types/ArrayType.spec.js.map +1 -1
  388. package/dist/types/AssociativeArrayType.d.ts +11 -0
  389. package/dist/types/AssociativeArrayType.js +52 -0
  390. package/dist/types/AssociativeArrayType.js.map +1 -0
  391. package/dist/types/BaseFunctionType.d.ts +9 -0
  392. package/dist/types/BaseFunctionType.js +25 -0
  393. package/dist/types/BaseFunctionType.js.map +1 -0
  394. package/dist/types/BooleanType.d.ts +8 -5
  395. package/dist/types/BooleanType.js +14 -7
  396. package/dist/types/BooleanType.js.map +1 -1
  397. package/dist/types/BooleanType.spec.js +10 -6
  398. package/dist/types/BooleanType.spec.js.map +1 -1
  399. package/dist/types/BscType.d.ts +32 -21
  400. package/dist/types/BscType.js +118 -21
  401. package/dist/types/BscType.js.map +1 -1
  402. package/dist/types/BscTypeKind.d.ts +25 -0
  403. package/dist/types/BscTypeKind.js +30 -0
  404. package/dist/types/BscTypeKind.js.map +1 -0
  405. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  406. package/dist/types/BuiltInInterfaceAdder.js +171 -0
  407. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  408. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  409. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  410. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  411. package/dist/types/ClassType.d.ts +17 -0
  412. package/dist/types/ClassType.js +58 -0
  413. package/dist/types/ClassType.js.map +1 -0
  414. package/dist/types/ClassType.spec.d.ts +1 -0
  415. package/dist/types/ClassType.spec.js +77 -0
  416. package/dist/types/ClassType.spec.js.map +1 -0
  417. package/dist/types/ComponentType.d.ts +26 -0
  418. package/dist/types/ComponentType.js +83 -0
  419. package/dist/types/ComponentType.js.map +1 -0
  420. package/dist/types/DoubleType.d.ts +8 -5
  421. package/dist/types/DoubleType.js +18 -16
  422. package/dist/types/DoubleType.js.map +1 -1
  423. package/dist/types/DoubleType.spec.js +12 -6
  424. package/dist/types/DoubleType.spec.js.map +1 -1
  425. package/dist/types/DynamicType.d.ts +9 -5
  426. package/dist/types/DynamicType.js +15 -4
  427. package/dist/types/DynamicType.js.map +1 -1
  428. package/dist/types/DynamicType.spec.js +16 -5
  429. package/dist/types/DynamicType.spec.js.map +1 -1
  430. package/dist/types/EnumType.d.ts +30 -12
  431. package/dist/types/EnumType.js +43 -17
  432. package/dist/types/EnumType.js.map +1 -1
  433. package/dist/types/EnumType.spec.d.ts +1 -0
  434. package/dist/types/EnumType.spec.js +33 -0
  435. package/dist/types/EnumType.spec.js.map +1 -0
  436. package/dist/types/FloatType.d.ts +8 -5
  437. package/dist/types/FloatType.js +18 -16
  438. package/dist/types/FloatType.js.map +1 -1
  439. package/dist/types/FloatType.spec.js +4 -6
  440. package/dist/types/FloatType.spec.js.map +1 -1
  441. package/dist/types/FunctionType.d.ts +13 -8
  442. package/dist/types/FunctionType.js +30 -14
  443. package/dist/types/FunctionType.js.map +1 -1
  444. package/dist/types/InheritableType.d.ts +28 -0
  445. package/dist/types/InheritableType.js +152 -0
  446. package/dist/types/InheritableType.js.map +1 -0
  447. package/dist/types/IntegerType.d.ts +8 -5
  448. package/dist/types/IntegerType.js +18 -16
  449. package/dist/types/IntegerType.js.map +1 -1
  450. package/dist/types/IntegerType.spec.js +8 -6
  451. package/dist/types/IntegerType.spec.js.map +1 -1
  452. package/dist/types/InterfaceType.d.ts +12 -13
  453. package/dist/types/InterfaceType.js +20 -48
  454. package/dist/types/InterfaceType.js.map +1 -1
  455. package/dist/types/InterfaceType.spec.js +90 -56
  456. package/dist/types/InterfaceType.spec.js.map +1 -1
  457. package/dist/types/InvalidType.d.ts +7 -5
  458. package/dist/types/InvalidType.js +13 -7
  459. package/dist/types/InvalidType.js.map +1 -1
  460. package/dist/types/InvalidType.spec.js +8 -6
  461. package/dist/types/InvalidType.spec.js.map +1 -1
  462. package/dist/types/LongIntegerType.d.ts +8 -5
  463. package/dist/types/LongIntegerType.js +17 -15
  464. package/dist/types/LongIntegerType.js.map +1 -1
  465. package/dist/types/LongIntegerType.spec.js +10 -6
  466. package/dist/types/LongIntegerType.spec.js.map +1 -1
  467. package/dist/types/NamespaceType.d.ts +12 -0
  468. package/dist/types/NamespaceType.js +28 -0
  469. package/dist/types/NamespaceType.js.map +1 -0
  470. package/dist/types/ObjectType.d.ts +9 -8
  471. package/dist/types/ObjectType.js +21 -11
  472. package/dist/types/ObjectType.js.map +1 -1
  473. package/dist/types/ObjectType.spec.js +3 -3
  474. package/dist/types/ObjectType.spec.js.map +1 -1
  475. package/dist/types/ReferenceType.d.ts +63 -0
  476. package/dist/types/ReferenceType.js +423 -0
  477. package/dist/types/ReferenceType.js.map +1 -0
  478. package/dist/types/ReferenceType.spec.d.ts +1 -0
  479. package/dist/types/ReferenceType.spec.js +137 -0
  480. package/dist/types/ReferenceType.spec.js.map +1 -0
  481. package/dist/types/StringType.d.ts +11 -5
  482. package/dist/types/StringType.js +18 -7
  483. package/dist/types/StringType.js.map +1 -1
  484. package/dist/types/StringType.spec.js +3 -5
  485. package/dist/types/StringType.spec.js.map +1 -1
  486. package/dist/types/TypedFunctionType.d.ts +22 -17
  487. package/dist/types/TypedFunctionType.js +78 -60
  488. package/dist/types/TypedFunctionType.js.map +1 -1
  489. package/dist/types/TypedFunctionType.spec.js +105 -20
  490. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  491. package/dist/types/UninitializedType.d.ts +8 -6
  492. package/dist/types/UninitializedType.js +13 -7
  493. package/dist/types/UninitializedType.js.map +1 -1
  494. package/dist/types/UnionType.d.ts +20 -0
  495. package/dist/types/UnionType.js +123 -0
  496. package/dist/types/UnionType.js.map +1 -0
  497. package/dist/types/UnionType.spec.d.ts +1 -0
  498. package/dist/types/UnionType.spec.js +130 -0
  499. package/dist/types/UnionType.spec.js.map +1 -0
  500. package/dist/types/VoidType.d.ts +8 -5
  501. package/dist/types/VoidType.js +14 -7
  502. package/dist/types/VoidType.js.map +1 -1
  503. package/dist/types/VoidType.spec.js +3 -3
  504. package/dist/types/VoidType.spec.js.map +1 -1
  505. package/dist/types/helper.spec.d.ts +1 -0
  506. package/dist/types/helper.spec.js +145 -0
  507. package/dist/types/helper.spec.js.map +1 -0
  508. package/dist/types/helpers.d.ts +19 -37
  509. package/dist/types/helpers.js +159 -99
  510. package/dist/types/helpers.js.map +1 -1
  511. package/dist/types/index.d.ts +22 -0
  512. package/dist/types/index.js +39 -0
  513. package/dist/types/index.js.map +1 -0
  514. package/dist/util.d.ts +143 -139
  515. package/dist/util.js +864 -385
  516. package/dist/util.js.map +1 -1
  517. package/dist/validators/ClassValidator.d.ts +8 -25
  518. package/dist/validators/ClassValidator.js +99 -179
  519. package/dist/validators/ClassValidator.js.map +1 -1
  520. package/package.json +165 -152
  521. package/dist/astUtils/AstEditor.js.map +0 -1
  522. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  523. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  524. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
  525. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  526. package/dist/parser/SGTypes.spec.js +0 -351
  527. package/dist/parser/SGTypes.spec.js.map +0 -1
  528. package/dist/types/CustomType.d.ts +0 -12
  529. package/dist/types/CustomType.js +0 -44
  530. package/dist/types/CustomType.js.map +0 -1
  531. package/dist/types/LazyType.d.ts +0 -16
  532. package/dist/types/LazyType.js +0 -44
  533. package/dist/types/LazyType.js.map +0 -1
  534. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  535. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  536. /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/definition/DefinitionProvider.spec.d.ts} +0 -0
@@ -1,56 +1,33 @@
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';
15
- import { EnumType } from '../types/EnumType';
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';
16
19
  import { InterfaceType } from '../types/InterfaceType';
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
- /**
36
- * The parent node for this statement. This is set dynamically during `onFileValidate`, and should not be set directly.
37
- */
38
- parent?: Statement | Expression;
39
- /**
40
- * Get the closest symbol table for this node. Should be overridden in children that directly contain a symbol table
41
- */
42
- getSymbolTable(): SymbolTable;
43
- }
20
+ import type { BscType } from '../types/BscType';
21
+ import { TypedFunctionType } from '../types/TypedFunctionType';
44
22
  export declare class EmptyStatement extends Statement {
23
+ constructor(options?: {
24
+ range?: Range;
25
+ });
45
26
  /**
46
27
  * Create a negative range to indicate this is an interpolated location
47
28
  */
48
29
  range: Range;
49
- constructor(
50
- /**
51
- * Create a negative range to indicate this is an interpolated location
52
- */
53
- range?: Range);
30
+ readonly kind = AstNodeKind.EmptyStatement;
54
31
  transpile(state: BrsTranspileState): any[];
55
32
  walk(visitor: WalkVisitor, options: WalkOptions): void;
56
33
  }
@@ -58,90 +35,132 @@ export declare class EmptyStatement extends Statement {
58
35
  * This is a top-level statement. Consider this the root of the AST
59
36
  */
60
37
  export declare class Body extends Statement implements TypedefProvider {
38
+ constructor(options?: {
39
+ statements?: Statement[];
40
+ });
61
41
  statements: Statement[];
42
+ readonly kind = AstNodeKind.Body;
62
43
  symbolTable: SymbolTable;
63
- constructor(statements?: Statement[], symbolTable?: SymbolTable);
64
- getSymbolTable(): SymbolTable;
65
44
  get range(): Range;
66
45
  transpile(state: BrsTranspileState): TranspileResult;
67
46
  getTypedef(state: BrsTranspileState): any[];
68
47
  walk(visitor: WalkVisitor, options: WalkOptions): void;
69
48
  }
70
49
  export declare class AssignmentStatement extends Statement {
71
- readonly name: Identifier;
72
- readonly equals: Token;
73
- readonly value: Expression;
74
- readonly containingFunction: FunctionExpression;
75
- constructor(name: Identifier, equals: Token, value: Expression, containingFunction: FunctionExpression);
50
+ constructor(options: {
51
+ name: Identifier;
52
+ equals?: Token;
53
+ value: Expression;
54
+ as?: Token;
55
+ typeExpression?: TypeExpression;
56
+ });
57
+ tokens: {
58
+ equals?: Token;
59
+ name: Identifier;
60
+ as?: Token;
61
+ };
62
+ value: Expression;
63
+ typeExpression: TypeExpression;
64
+ readonly kind = AstNodeKind.AssignmentStatement;
76
65
  readonly range: Range;
77
66
  transpile(state: BrsTranspileState): TranspileResult;
78
67
  walk(visitor: WalkVisitor, options: WalkOptions): void;
68
+ getType(options: GetTypeOptions): BscType;
79
69
  }
80
70
  export declare class Block extends Statement {
71
+ constructor(options: {
72
+ statements: Statement[];
73
+ startingRange: Range;
74
+ });
81
75
  readonly statements: Statement[];
82
76
  readonly startingRange: Range;
83
- constructor(statements: Statement[], startingRange: Range);
77
+ readonly kind = AstNodeKind.Block;
84
78
  readonly range: Range;
85
79
  transpile(state: BrsTranspileState): TranspileResult;
86
80
  walk(visitor: WalkVisitor, options: WalkOptions): void;
87
81
  }
88
82
  export declare class ExpressionStatement extends Statement {
83
+ constructor(options: {
84
+ expression: Expression;
85
+ });
89
86
  readonly expression: Expression;
90
- constructor(expression: Expression);
87
+ readonly kind = AstNodeKind.ExpressionStatement;
91
88
  readonly range: Range;
92
89
  transpile(state: BrsTranspileState): TranspileResult;
93
90
  walk(visitor: WalkVisitor, options: WalkOptions): void;
94
91
  }
95
92
  export declare class CommentStatement extends Statement implements Expression, TypedefProvider {
96
- comments: Token[];
97
- constructor(comments: Token[]);
98
- readonly range: Range;
93
+ constructor(options: {
94
+ comments: Token[];
95
+ });
96
+ tokens: {
97
+ comments: Token[];
98
+ };
99
+ readonly kind = AstNodeKind.CommentStatement;
100
+ range: Range;
99
101
  get text(): string;
100
102
  transpile(state: BrsTranspileState): any[];
101
103
  getTypedef(state: TranspileState): any[];
102
104
  walk(visitor: WalkVisitor, options: WalkOptions): void;
103
105
  }
104
106
  export declare class ExitForStatement extends Statement {
107
+ constructor(options?: {
108
+ exitFor?: Token;
109
+ });
105
110
  readonly tokens: {
106
- exitFor: Token;
111
+ exitFor?: Token;
107
112
  };
108
- constructor(tokens: {
109
- exitFor: Token;
110
- });
113
+ readonly kind = AstNodeKind.ExitForStatement;
111
114
  readonly range: Range;
112
- transpile(state: BrsTranspileState): SourceNode[];
115
+ transpile(state: BrsTranspileState): (string | SourceNode)[];
113
116
  walk(visitor: WalkVisitor, options: WalkOptions): void;
114
117
  }
115
118
  export declare class ExitWhileStatement extends Statement {
119
+ constructor(options?: {
120
+ exitWhile?: Token;
121
+ });
116
122
  readonly tokens: {
117
- exitWhile: Token;
123
+ exitWhile?: Token;
118
124
  };
119
- constructor(tokens: {
120
- exitWhile: Token;
121
- });
125
+ readonly kind = AstNodeKind.ExitWhileStatement;
122
126
  readonly range: Range;
123
- transpile(state: BrsTranspileState): SourceNode[];
127
+ transpile(state: BrsTranspileState): (string | SourceNode)[];
124
128
  walk(visitor: WalkVisitor, options: WalkOptions): void;
125
129
  }
126
130
  export declare class FunctionStatement extends Statement implements TypedefProvider {
127
- name: Identifier;
131
+ constructor(options: {
132
+ name: Identifier;
133
+ func: FunctionExpression;
134
+ });
135
+ tokens: {
136
+ name: Identifier;
137
+ };
128
138
  func: FunctionExpression;
129
- namespaceName: NamespacedVariableNameExpression;
130
- constructor(name: Identifier, func: FunctionExpression, namespaceName: NamespacedVariableNameExpression);
131
- get range(): Range;
132
- cacheRange(): Range;
133
- protected _range: Range;
139
+ readonly kind: AstNodeKind;
140
+ readonly range: Range;
134
141
  /**
135
142
  * Get the name of this expression based on the parse mode
136
143
  */
137
144
  getName(parseMode: ParseMode): string;
145
+ getLeadingTrivia(): Token[];
138
146
  transpile(state: BrsTranspileState): any[];
139
147
  getTypedef(state: BrsTranspileState): any[];
140
148
  walk(visitor: WalkVisitor, options: WalkOptions): void;
149
+ getType(options: GetTypeOptions): TypedFunctionType;
141
150
  }
142
151
  export declare class IfStatement extends Statement {
152
+ constructor(options: {
153
+ if?: Token;
154
+ then?: Token;
155
+ else?: Token;
156
+ endIf?: Token;
157
+ condition: Expression;
158
+ thenBranch: Block;
159
+ elseBranch?: IfStatement | Block;
160
+ isInline?: boolean;
161
+ });
143
162
  readonly tokens: {
144
- if: Token;
163
+ if?: Token;
145
164
  then?: Token;
146
165
  else?: Token;
147
166
  endIf?: Token;
@@ -150,20 +169,21 @@ export declare class IfStatement extends Statement {
150
169
  readonly thenBranch: Block;
151
170
  readonly elseBranch?: IfStatement | Block;
152
171
  readonly isInline?: boolean;
153
- constructor(tokens: {
154
- if: Token;
155
- then?: Token;
156
- else?: Token;
157
- endIf?: Token;
158
- }, condition: Expression, thenBranch: Block, elseBranch?: IfStatement | Block, isInline?: boolean);
172
+ readonly kind = AstNodeKind.IfStatement;
159
173
  readonly range: Range;
160
174
  transpile(state: BrsTranspileState): any[];
161
175
  walk(visitor: WalkVisitor, options: WalkOptions): void;
162
176
  }
163
177
  export declare class IncrementStatement extends Statement {
178
+ constructor(options: {
179
+ value: Expression;
180
+ operator: Token;
181
+ });
164
182
  readonly value: Expression;
165
- readonly operator: Token;
166
- constructor(value: Expression, operator: Token);
183
+ readonly tokens: {
184
+ operator: Token;
185
+ };
186
+ readonly kind = AstNodeKind.IncrementStatement;
167
187
  readonly range: Range;
168
188
  transpile(state: BrsTranspileState): (string | SourceNode)[];
169
189
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -180,180 +200,247 @@ export interface PrintSeparatorSpace extends Token {
180
200
  * Represents a `print` statement within BrightScript.
181
201
  */
182
202
  export declare class PrintStatement extends Statement {
183
- readonly tokens: {
184
- print: Token;
185
- };
186
- readonly expressions: Array<Expression | PrintSeparatorTab | PrintSeparatorSpace>;
187
203
  /**
188
204
  * Creates a new internal representation of a BrightScript `print` statement.
189
- * @param expressions an array of expressions or `PrintSeparator`s to be
190
- * evaluated and printed.
205
+ * @param options the options for this statement
206
+ * @param options.print a print token
207
+ * @param options.expressions an array of expressions or `PrintSeparator`s to be evaluated and printed.
191
208
  */
192
- constructor(tokens: {
209
+ constructor(options: {
193
210
  print: Token;
194
- }, expressions: Array<Expression | PrintSeparatorTab | PrintSeparatorSpace>);
211
+ expressions: Array<Expression | PrintSeparatorTab | PrintSeparatorSpace>;
212
+ });
213
+ readonly tokens: {
214
+ print: Token;
215
+ };
216
+ readonly expressions: Array<Expression | PrintSeparatorTab | PrintSeparatorSpace>;
217
+ readonly kind = AstNodeKind.PrintStatement;
195
218
  readonly range: Range;
196
219
  transpile(state: BrsTranspileState): (string | SourceNode)[];
197
220
  walk(visitor: WalkVisitor, options: WalkOptions): void;
198
221
  }
199
222
  export declare class DimStatement extends Statement {
200
- dimToken: Token;
201
- identifier?: Identifier;
202
- openingSquare?: Token;
203
- dimensions?: Expression[];
204
- closingSquare?: Token;
205
- constructor(dimToken: Token, identifier?: Identifier, openingSquare?: Token, dimensions?: Expression[], closingSquare?: Token);
206
- readonly range: Range;
223
+ constructor(options: {
224
+ dim?: Token;
225
+ name: Identifier;
226
+ openingSquare?: Token;
227
+ dimensions: Expression[];
228
+ closingSquare?: Token;
229
+ });
230
+ readonly tokens: {
231
+ dim?: Token;
232
+ name: Identifier;
233
+ openingSquare?: Token;
234
+ closingSquare?: Token;
235
+ };
236
+ dimensions: Expression[];
237
+ readonly kind = AstNodeKind.DimStatement;
238
+ range: Range;
207
239
  transpile(state: BrsTranspileState): (string | SourceNode)[];
208
240
  walk(visitor: WalkVisitor, options: WalkOptions): void;
241
+ getType(options: GetTypeOptions): BscType;
209
242
  }
210
243
  export declare class GotoStatement extends Statement {
244
+ constructor(options: {
245
+ goto?: Token;
246
+ label: Token;
247
+ });
211
248
  readonly tokens: {
212
- goto: Token;
249
+ goto?: Token;
213
250
  label: Token;
214
251
  };
215
- constructor(tokens: {
216
- goto: Token;
217
- label: Token;
218
- });
252
+ readonly kind = AstNodeKind.GotoStatement;
219
253
  readonly range: Range;
220
254
  transpile(state: BrsTranspileState): (string | SourceNode)[];
221
255
  walk(visitor: WalkVisitor, options: WalkOptions): void;
222
256
  }
223
257
  export declare class LabelStatement extends Statement {
258
+ constructor(options: {
259
+ name: Token;
260
+ colon?: Token;
261
+ });
224
262
  readonly tokens: {
225
- identifier: Token;
263
+ name: Token;
226
264
  colon: Token;
227
265
  };
228
- constructor(tokens: {
229
- identifier: Token;
230
- colon: Token;
231
- });
266
+ readonly kind = AstNodeKind.LabelStatement;
232
267
  readonly range: Range;
268
+ getLeadingTrivia(): Token[];
233
269
  transpile(state: BrsTranspileState): SourceNode[];
234
270
  walk(visitor: WalkVisitor, options: WalkOptions): void;
235
271
  }
236
272
  export declare class ReturnStatement extends Statement {
273
+ constructor(options?: {
274
+ return?: Token;
275
+ value?: Expression;
276
+ });
237
277
  readonly tokens: {
238
278
  return: Token;
239
279
  };
240
280
  readonly value?: Expression;
241
- constructor(tokens: {
242
- return: Token;
243
- }, value?: Expression);
281
+ readonly kind = AstNodeKind.ReturnStatement;
244
282
  readonly range: Range;
245
283
  transpile(state: BrsTranspileState): any[];
246
284
  walk(visitor: WalkVisitor, options: WalkOptions): void;
247
285
  }
248
286
  export declare class EndStatement extends Statement {
287
+ constructor(options?: {
288
+ end?: Token;
289
+ });
249
290
  readonly tokens: {
250
- end: Token;
291
+ end?: Token;
251
292
  };
252
- constructor(tokens: {
253
- end: Token;
254
- });
293
+ readonly kind = AstNodeKind.EndStatement;
255
294
  readonly range: Range;
256
295
  transpile(state: BrsTranspileState): SourceNode[];
257
296
  walk(visitor: WalkVisitor, options: WalkOptions): void;
258
297
  }
259
298
  export declare class StopStatement extends Statement {
299
+ constructor(options?: {
300
+ stop?: Token;
301
+ });
260
302
  readonly tokens: {
261
- stop: Token;
303
+ stop?: Token;
262
304
  };
263
- constructor(tokens: {
264
- stop: Token;
265
- });
305
+ readonly kind = AstNodeKind.StopStatement;
266
306
  readonly range: Range;
267
307
  transpile(state: BrsTranspileState): SourceNode[];
268
308
  walk(visitor: WalkVisitor, options: WalkOptions): void;
269
309
  }
270
310
  export declare class ForStatement extends Statement {
271
- forToken: Token;
311
+ constructor(options: {
312
+ for?: Token;
313
+ counterDeclaration: AssignmentStatement;
314
+ to?: Token;
315
+ finalValue: Expression;
316
+ body: Block;
317
+ endFor?: Token;
318
+ step?: Token;
319
+ increment?: Expression;
320
+ });
321
+ readonly tokens: {
322
+ for?: Token;
323
+ to?: Token;
324
+ endFor?: Token;
325
+ step?: Token;
326
+ };
272
327
  counterDeclaration: AssignmentStatement;
273
- toToken: Token;
274
328
  finalValue: Expression;
275
329
  body: Block;
276
- endForToken: Token;
277
- stepToken?: Token;
278
330
  increment?: Expression;
279
- constructor(forToken: Token, counterDeclaration: AssignmentStatement, toToken: Token, finalValue: Expression, body: Block, endForToken: Token, stepToken?: Token, increment?: Expression);
331
+ readonly kind = AstNodeKind.ForStatement;
280
332
  readonly range: Range;
281
333
  transpile(state: BrsTranspileState): any[];
282
334
  walk(visitor: WalkVisitor, options: WalkOptions): void;
283
335
  }
284
336
  export declare class ForEachStatement extends Statement {
285
- forEachToken: Token;
286
- item: Identifier;
287
- inToken: Token;
288
- target: Expression;
289
- body: Block;
290
- endForToken: Token;
291
- constructor(forEachToken: Token, item: Identifier, inToken: Token, target: Expression, body: Block, endForToken: Token);
337
+ constructor(options: {
338
+ forEach?: Token;
339
+ item: Token;
340
+ in?: Token;
341
+ target: Expression;
342
+ body: Block;
343
+ endFor?: Token;
344
+ });
345
+ readonly tokens: {
346
+ forEach?: Token;
347
+ item: Token;
348
+ in?: Token;
349
+ endFor?: Token;
350
+ };
351
+ readonly body: Block;
352
+ readonly target: Expression;
353
+ readonly kind = AstNodeKind.ForEachStatement;
292
354
  readonly range: Range;
293
355
  transpile(state: BrsTranspileState): any[];
294
356
  walk(visitor: WalkVisitor, options: WalkOptions): void;
295
357
  }
296
358
  export declare class WhileStatement extends Statement {
359
+ constructor(options: {
360
+ while?: Token;
361
+ endWhile?: Token;
362
+ condition: Expression;
363
+ body: Block;
364
+ });
297
365
  readonly tokens: {
298
- while: Token;
299
- endWhile: Token;
366
+ while?: Token;
367
+ endWhile?: Token;
300
368
  };
301
369
  readonly condition: Expression;
302
370
  readonly body: Block;
303
- constructor(tokens: {
304
- while: Token;
305
- endWhile: Token;
306
- }, condition: Expression, body: Block);
371
+ readonly kind = AstNodeKind.WhileStatement;
307
372
  readonly range: Range;
308
373
  transpile(state: BrsTranspileState): any[];
309
374
  walk(visitor: WalkVisitor, options: WalkOptions): void;
310
375
  }
311
376
  export declare class DottedSetStatement extends Statement {
377
+ constructor(options: {
378
+ obj: Expression;
379
+ name: Identifier;
380
+ value: Expression;
381
+ dot?: Token;
382
+ });
383
+ readonly tokens: {
384
+ name: Identifier;
385
+ dot?: Token;
386
+ };
312
387
  readonly obj: Expression;
313
- readonly name: Identifier;
314
388
  readonly value: Expression;
315
- dot: Token;
316
- operator: Token;
317
- constructor(obj: Expression, name: Identifier, value: Expression, dot: Token, operator: Token);
389
+ readonly kind = AstNodeKind.DottedSetStatement;
318
390
  readonly range: Range;
319
391
  transpile(state: BrsTranspileState): TranspileResult;
320
392
  walk(visitor: WalkVisitor, options: WalkOptions): void;
393
+ getType(options: GetTypeOptions): BscType;
321
394
  }
322
395
  export declare class IndexedSetStatement extends Statement {
396
+ constructor(options: {
397
+ obj: Expression;
398
+ indexes: Expression[];
399
+ value: Expression;
400
+ openingSquare?: Token;
401
+ closingSquare?: Token;
402
+ });
403
+ readonly tokens: {
404
+ openingSquare?: Token;
405
+ closingSquare?: Token;
406
+ };
323
407
  readonly obj: Expression;
324
- readonly index: Expression;
408
+ readonly indexes: Expression[];
325
409
  readonly value: Expression;
326
- readonly openingSquare: Token;
327
- readonly closingSquare: Token;
328
- operator: Token;
329
- constructor(obj: Expression, index: Expression, value: Expression, openingSquare: Token, closingSquare: Token, operator: Token);
410
+ readonly kind = AstNodeKind.IndexedSetStatement;
330
411
  readonly range: Range;
331
- transpile(state: BrsTranspileState): TranspileResult;
412
+ transpile(state: BrsTranspileState): any[];
332
413
  walk(visitor: WalkVisitor, options: WalkOptions): void;
333
414
  }
334
415
  export declare class LibraryStatement extends Statement implements TypedefProvider {
416
+ constructor(options: {
417
+ library: Token;
418
+ filePath?: Token;
419
+ });
335
420
  readonly tokens: {
336
421
  library: Token;
337
- filePath: Token | undefined;
422
+ filePath?: Token;
338
423
  };
339
- constructor(tokens: {
340
- library: Token;
341
- filePath: Token | undefined;
342
- });
424
+ readonly kind = AstNodeKind.LibraryStatement;
343
425
  readonly range: Range;
344
426
  transpile(state: BrsTranspileState): any[];
345
427
  getTypedef(state: BrsTranspileState): any[];
346
428
  walk(visitor: WalkVisitor, options: WalkOptions): void;
347
429
  }
348
430
  export declare class NamespaceStatement extends Statement implements TypedefProvider {
349
- keyword: Token;
350
- nameExpression: NamespacedVariableNameExpression;
431
+ constructor(options: {
432
+ namespace?: Token;
433
+ nameExpression: VariableExpression | DottedGetExpression;
434
+ body: Body;
435
+ endNamespace?: Token;
436
+ });
437
+ readonly tokens: {
438
+ namespace?: Token;
439
+ endNamespace?: Token;
440
+ };
441
+ readonly nameExpression: VariableExpression | DottedGetExpression;
351
442
  body: Body;
352
- endKeyword: Token;
353
- readonly parentSymbolTable?: SymbolTable;
354
- constructor(keyword: Token, nameExpression: NamespacedVariableNameExpression, body: Body, endKeyword: Token, parentSymbolTable?: SymbolTable);
355
- symbolTable: SymbolTable;
356
- getSymbolTable(): SymbolTable;
443
+ readonly kind = AstNodeKind.NamespaceStatement;
357
444
  /**
358
445
  * The string name for this namespace
359
446
  */
@@ -362,16 +449,25 @@ export declare class NamespaceStatement extends Statement implements TypedefProv
362
449
  private _range;
363
450
  cacheRange(): Range;
364
451
  getName(parseMode: ParseMode): string;
452
+ getLeadingTrivia(): Token[];
453
+ getNameParts(): Identifier[];
365
454
  transpile(state: BrsTranspileState): TranspileResult;
366
455
  getTypedef(state: BrsTranspileState): string[];
367
456
  walk(visitor: WalkVisitor, options: WalkOptions): void;
457
+ getType(options: GetTypeOptions): NamespaceType;
368
458
  }
369
459
  export declare class ImportStatement extends Statement implements TypedefProvider {
370
- readonly importToken: Token;
371
- readonly filePathToken: Token;
372
- constructor(importToken: Token, filePathToken: Token);
460
+ constructor(options: {
461
+ import?: Token;
462
+ filePath: Token;
463
+ });
464
+ readonly tokens: {
465
+ import?: Token;
466
+ filePath: Token;
467
+ };
468
+ readonly kind = AstNodeKind.ImportStatement;
469
+ range: Range;
373
470
  filePath: string;
374
- readonly range: Range;
375
471
  transpile(state: BrsTranspileState): (string | SourceNode)[];
376
472
  /**
377
473
  * Get the typedef for this statement
@@ -379,87 +475,133 @@ export declare class ImportStatement extends Statement implements TypedefProvide
379
475
  getTypedef(state: BrsTranspileState): string[];
380
476
  walk(visitor: WalkVisitor, options: WalkOptions): void;
381
477
  }
382
- export declare class InterfaceStatement extends Statement implements TypedefProvider, MemberSymbolTableProvider {
383
- name: Identifier;
384
- parentInterfaceName: NamespacedVariableNameExpression;
478
+ export declare class InterfaceStatement extends Statement implements TypedefProvider {
479
+ constructor(options: {
480
+ interface: Token;
481
+ name: Identifier;
482
+ extends?: Token;
483
+ parentInterfaceName?: TypeExpression;
484
+ body: Statement[];
485
+ endInterface?: Token;
486
+ });
487
+ parentInterfaceName?: TypeExpression;
385
488
  body: Statement[];
386
- namespaceName: NamespacedVariableNameExpression;
387
- readonly memberTable: SymbolTable;
388
- constructor(interfaceToken: Token, name: Identifier, extendsToken: Token, parentInterfaceName: NamespacedVariableNameExpression, body: Statement[], endInterfaceToken: Token, namespaceName: NamespacedVariableNameExpression);
489
+ readonly kind = AstNodeKind.InterfaceStatement;
389
490
  tokens: {
390
- interface: Token;
491
+ interface?: Token;
391
492
  name: Identifier;
392
- extends: Token;
393
- endInterface: Token;
493
+ extends?: Token;
494
+ endInterface?: Token;
394
495
  };
395
- readonly range: Range;
396
- memberMap: Record<string, InterfaceMemberStatement>;
397
- methods: InterfaceMethodStatement[];
398
- fields: InterfaceFieldStatement[];
399
- buildSymbolTable(parentIface?: InheritableStatement): void;
400
- hasParent(): boolean;
401
- getParentName(): boolean;
496
+ range: Range;
497
+ get fields(): InterfaceFieldStatement[];
498
+ get methods(): InterfaceMethodStatement[];
499
+ hasParentInterface(): boolean;
500
+ getLeadingTrivia(): Token[];
402
501
  /**
403
- * Gets an array of possible parent interface names, taking into account the namespace this interface was created under
404
- * @returns array of possible parent interface names
502
+ * The name of the interface WITH its leading namespace (if applicable)
405
503
  */
406
- getPossibleFullParentNames(): string[];
407
- getThisBscType(): InterfaceType;
504
+ get fullName(): string;
408
505
  /**
409
- * The name of the interface WITH its leading namespace (if applicable)
506
+ * The name of the interface (without the namespace prefix)
507
+ */
508
+ get name(): string;
509
+ /**
510
+ * Get the name of this expression based on the parse mode
410
511
  */
411
512
  getName(parseMode: ParseMode): string;
412
513
  transpile(state: BrsTranspileState): TranspileResult;
413
514
  getTypedef(state: BrsTranspileState): TranspileResult;
414
515
  walk(visitor: WalkVisitor, options: WalkOptions): void;
516
+ getType(options: GetTypeOptions): InterfaceType;
415
517
  }
416
518
  export declare class InterfaceFieldStatement extends Statement implements TypedefProvider {
417
- type?: TypeExpression;
418
- namespaceName?: NamespacedVariableNameExpression;
419
519
  transpile(state: BrsTranspileState): TranspileResult;
420
- constructor(nameToken: Identifier, asToken: Token, type?: TypeExpression, namespaceName?: NamespacedVariableNameExpression);
421
- readonly range: Range;
520
+ constructor(options: {
521
+ name: Identifier;
522
+ as?: Token;
523
+ typeExpression?: TypeExpression;
524
+ optional?: Token;
525
+ });
526
+ readonly kind = AstNodeKind.InterfaceFieldStatement;
527
+ typeExpression?: TypeExpression;
528
+ range: Range;
422
529
  tokens: {
423
530
  name: Identifier;
424
531
  as: Token;
532
+ optional?: Token;
425
533
  };
426
- getType(): import("../types/BscType").BscType;
427
- get name(): Identifier;
534
+ getLeadingTrivia(): Token[];
535
+ get name(): string;
536
+ get isOptional(): boolean;
428
537
  walk(visitor: WalkVisitor, options: WalkOptions): void;
429
538
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
539
+ getType(options: GetTypeOptions): BscType;
430
540
  }
431
- export declare class InterfaceMethodStatement extends FunctionStatement implements TypedefProvider {
541
+ export declare class InterfaceMethodStatement extends Statement implements TypedefProvider {
432
542
  transpile(state: BrsTranspileState): TranspileResult;
433
- constructor(name: Identifier, func: FunctionExpression);
434
- walk(visitor: WalkVisitor, options: WalkOptions): void;
435
- }
436
- export declare class ClassStatement extends Statement implements TypedefProvider, MemberSymbolTableProvider {
437
- readonly classKeyword: Token;
438
- /**
439
- * The name of the class (without namespace prefix)
440
- */
441
- readonly name: Identifier;
442
- body: Statement[];
443
- readonly end: Token;
444
- readonly extendsKeyword?: Token;
445
- readonly parentClassName?: NamespacedVariableNameExpression;
446
- readonly namespaceName?: NamespacedVariableNameExpression;
447
- readonly currentSymbolTable?: SymbolTable;
448
- readonly symbolTable: SymbolTable;
449
- readonly memberTable: SymbolTable;
450
- constructor(classKeyword: Token,
543
+ constructor(options: {
544
+ functionType?: Token;
545
+ name: Identifier;
546
+ leftParen?: Token;
547
+ params?: FunctionParameterExpression[];
548
+ rightParen?: Token;
549
+ as?: Token;
550
+ returnTypeExpression?: TypeExpression;
551
+ optional?: Token;
552
+ });
553
+ readonly kind = AstNodeKind.InterfaceMethodStatement;
554
+ get range(): Range;
451
555
  /**
452
- * The name of the class (without namespace prefix)
556
+ * Get the name of this method.
453
557
  */
454
- name: Identifier, body: Statement[], end: Token, extendsKeyword?: Token, parentClassName?: NamespacedVariableNameExpression, namespaceName?: NamespacedVariableNameExpression, currentSymbolTable?: SymbolTable);
455
558
  getName(parseMode: ParseMode): string;
559
+ tokens: {
560
+ optional?: Token;
561
+ functionType: Token;
562
+ name: Identifier;
563
+ leftParen?: Token;
564
+ rightParen?: Token;
565
+ as?: Token;
566
+ };
567
+ params: FunctionParameterExpression[];
568
+ returnTypeExpression?: TypeExpression;
569
+ get isOptional(): boolean;
570
+ getLeadingTrivia(): Token[];
571
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
572
+ getTypedef(state: BrsTranspileState): TranspileResult;
573
+ getType(options: GetTypeOptions): TypedFunctionType;
574
+ }
575
+ export declare class ClassStatement extends Statement implements TypedefProvider {
576
+ constructor(options: {
577
+ class?: Token;
578
+ /**
579
+ * The name of the class (without namespace prefix)
580
+ */
581
+ name: Identifier;
582
+ body: Statement[];
583
+ endClass?: Token;
584
+ extends?: Token;
585
+ parentClassName?: TypeExpression;
586
+ });
587
+ readonly kind = AstNodeKind.ClassStatement;
588
+ tokens: {
589
+ class?: Token;
590
+ /**
591
+ * The name of the class (without namespace prefix)
592
+ */
593
+ name: Identifier;
594
+ endClass?: Token;
595
+ extends?: Token;
596
+ };
597
+ readonly body: Statement[];
598
+ readonly parentClassName: TypeExpression;
599
+ getName(parseMode: ParseMode): string;
600
+ getLeadingTrivia(): Token[];
456
601
  memberMap: Record<string, MemberStatement>;
457
602
  methods: MethodStatement[];
458
603
  fields: FieldStatement[];
459
604
  readonly range: Range;
460
- getThisBscType(): CustomType;
461
- getConstructorFunctionType(): import("../types/TypedFunctionType").TypedFunctionType;
462
- buildSymbolTable(parentClass?: InheritableStatement): void;
463
605
  transpile(state: BrsTranspileState): any[];
464
606
  getTypedef(state: BrsTranspileState): TranspileResult;
465
607
  /**
@@ -468,18 +610,14 @@ export declare class ClassStatement extends Statement implements TypedefProvider
468
610
  * The base class is index 0, its child is index 1, and so on.
469
611
  */
470
612
  getParentClassIndex(state: BrsTranspileState): number;
471
- hasParent(): boolean;
472
- /**
473
- * Gets an array of possible parent class names, taking into account the namespace this class was created under
474
- * @returns array of possible parent class names
475
- */
476
- getPossibleFullParentNames(): string[];
613
+ hasParentClass(): boolean;
477
614
  /**
478
615
  * Get all ancestor classes, in closest-to-furthest order (i.e. 0 is parent, 1 is grandparent, etc...).
479
616
  * This will return an empty array if no ancestors were found
480
617
  */
481
618
  getAncestors(state: BrsTranspileState): ClassStatement[];
482
619
  private getBuilderName;
620
+ getConstructorType(): TypedFunctionType;
483
621
  /**
484
622
  * Get the constructor function for this class (if exists), or undefined if not exist
485
623
  */
@@ -501,16 +639,30 @@ export declare class ClassStatement extends Statement implements TypedefProvider
501
639
  */
502
640
  private getTranspiledClassFunction;
503
641
  walk(visitor: WalkVisitor, options: WalkOptions): void;
642
+ getType(options: GetTypeOptions): ClassType;
504
643
  }
505
644
  export declare class MethodStatement extends FunctionStatement {
506
- override: Token;
507
- constructor(modifiers: Token | Token[], name: Identifier, func: FunctionExpression, override: Token);
645
+ constructor(options: {
646
+ modifiers?: Token | Token[];
647
+ name: Identifier;
648
+ func: FunctionExpression;
649
+ override?: Token;
650
+ });
651
+ readonly kind: AstNodeKind;
508
652
  modifiers: Token[];
653
+ readonly tokens: {
654
+ name: Identifier;
655
+ override?: Token;
656
+ };
509
657
  get accessModifier(): Token;
510
- get range(): Range;
511
- cacheRange(): Range;
658
+ readonly range: Range;
659
+ /**
660
+ * Get the name of this method.
661
+ */
662
+ getName(parseMode: ParseMode): string;
663
+ getLeadingTrivia(): Token[];
512
664
  transpile(state: BrsTranspileState): any[];
513
- getTypedef(state: BrsTranspileState): string[];
665
+ getTypedef(state: BrsTranspileState): (string | SourceNode)[];
514
666
  /**
515
667
  * All child classes must call the parent constructor. The type checker will warn users when they don't call it in their own class,
516
668
  * but we still need to call it even if they have omitted it. This injects the super call if it's missing
@@ -523,87 +675,110 @@ export declare class MethodStatement extends FunctionStatement {
523
675
  walk(visitor: WalkVisitor, options: WalkOptions): void;
524
676
  }
525
677
  export declare class FieldStatement extends Statement implements TypedefProvider {
526
- readonly accessModifier?: Token;
527
- readonly name?: Identifier;
528
- readonly as?: Token;
529
- readonly type?: TypeExpression;
530
- readonly equal?: Token;
531
- readonly initialValue?: Expression;
532
- readonly namespaceName?: NamespacedVariableNameExpression;
533
- constructor(accessModifier?: Token, name?: Identifier, as?: Token, type?: TypeExpression, equal?: Token, initialValue?: Expression, namespaceName?: NamespacedVariableNameExpression);
534
- readonly range: Range;
678
+ constructor(options: {
679
+ accessModifier?: Token;
680
+ name: Identifier;
681
+ as?: Token;
682
+ typeExpression?: TypeExpression;
683
+ equals?: Token;
684
+ initialValue?: Expression;
685
+ optional?: Token;
686
+ });
687
+ readonly tokens: {
688
+ accessModifier?: Token;
689
+ name: Identifier;
690
+ as?: Token;
691
+ equals?: Token;
692
+ optional?: Token;
693
+ };
694
+ typeExpression?: TypeExpression;
695
+ initialValue?: Expression;
696
+ readonly kind = AstNodeKind.FieldStatement;
535
697
  /**
536
698
  * Derive a ValueKind from the type token, or the initial value.
537
699
  * Defaults to `DynamicType`
538
700
  */
539
- getType(parseMode?: ParseMode): DynamicType | import("../types/BscType").BscType;
701
+ getType(options: GetTypeOptions): BscType;
702
+ readonly range: Range;
703
+ getLeadingTrivia(): Token[];
704
+ get isOptional(): boolean;
540
705
  transpile(state: BrsTranspileState): TranspileResult;
541
706
  getTypedef(state: BrsTranspileState): any[];
542
707
  walk(visitor: WalkVisitor, options: WalkOptions): void;
543
708
  }
544
709
  export declare type MemberStatement = FieldStatement | MethodStatement;
545
- export declare type InterfaceMemberStatement = InterfaceFieldStatement | InterfaceMethodStatement;
546
- export declare type MemberFieldStatement = FieldStatement | InterfaceFieldStatement;
547
- export declare type MemberMethodStatement = MethodStatement | InterfaceMethodStatement;
548
710
  export declare class TryCatchStatement extends Statement {
549
- tokens: {
550
- try: Token;
711
+ constructor(options?: {
712
+ try?: Token;
551
713
  endTry?: Token;
552
- };
553
- tryBranch?: Block;
554
- catchStatement?: CatchStatement;
555
- constructor(tokens: {
556
- try: Token;
714
+ tryBranch?: Block;
715
+ catchStatement?: CatchStatement;
716
+ });
717
+ readonly tokens: {
718
+ try?: Token;
557
719
  endTry?: Token;
558
- }, tryBranch?: Block, catchStatement?: CatchStatement);
720
+ };
721
+ tryBranch: Block;
722
+ catchStatement: CatchStatement;
723
+ readonly kind = AstNodeKind.TryCatchStatement;
559
724
  readonly range: Range;
560
725
  transpile(state: BrsTranspileState): TranspileResult;
561
726
  walk(visitor: WalkVisitor, options: WalkOptions): void;
562
727
  }
563
728
  export declare class CatchStatement extends Statement {
564
- tokens: {
565
- catch: Token;
729
+ constructor(options?: {
730
+ catch?: Token;
731
+ exceptionVariable?: Identifier;
732
+ catchBranch?: Block;
733
+ });
734
+ readonly tokens: {
735
+ catch?: Token;
736
+ exceptionVariable?: Identifier;
566
737
  };
567
- exceptionVariable?: Identifier;
568
738
  catchBranch?: Block;
569
- constructor(tokens: {
570
- catch: Token;
571
- }, exceptionVariable?: Identifier, catchBranch?: Block);
572
- get range(): Range;
739
+ readonly kind = AstNodeKind.CatchStatement;
740
+ range: Range;
573
741
  transpile(state: BrsTranspileState): TranspileResult;
574
742
  walk(visitor: WalkVisitor, options: WalkOptions): void;
575
743
  }
576
744
  export declare class ThrowStatement extends Statement {
577
- throwToken: Token;
745
+ constructor(options?: {
746
+ throw?: Token;
747
+ expression?: Expression;
748
+ });
749
+ readonly tokens: {
750
+ throw?: Token;
751
+ };
578
752
  expression?: Expression;
579
- constructor(throwToken: Token, expression?: Expression);
580
- readonly range: Range;
753
+ readonly kind = AstNodeKind.ThrowStatement;
754
+ range: Range;
581
755
  transpile(state: BrsTranspileState): (string | SourceNode)[];
582
756
  walk(visitor: WalkVisitor, options: WalkOptions): void;
583
757
  }
584
758
  export declare class EnumStatement extends Statement implements TypedefProvider {
759
+ constructor(options: {
760
+ enum?: Token;
761
+ name: Identifier;
762
+ endEnum?: Token;
763
+ body: Array<EnumMemberStatement | CommentStatement>;
764
+ });
585
765
  tokens: {
586
- enum: Token;
766
+ enum?: Token;
587
767
  name: Identifier;
588
- endEnum: Token;
768
+ endEnum?: Token;
589
769
  };
590
770
  body: Array<EnumMemberStatement | CommentStatement>;
591
- namespaceName?: NamespacedVariableNameExpression;
592
- readonly symbolTable: SymbolTable;
593
- constructor(tokens: {
594
- enum: Token;
595
- name: Identifier;
596
- endEnum: Token;
597
- }, body: Array<EnumMemberStatement | CommentStatement>, namespaceName?: NamespacedVariableNameExpression);
598
- readonly range: Range;
771
+ readonly kind = AstNodeKind.EnumStatement;
772
+ symbolTable: SymbolTable;
773
+ get range(): Range;
599
774
  getMembers(): EnumMemberStatement[];
775
+ getLeadingTrivia(): Token[];
600
776
  /**
601
777
  * Get a map of member names and their values.
602
778
  * All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
603
779
  */
604
780
  getMemberValueMap(): Map<string, string>;
605
781
  getMemberValue(name: string): string;
606
- buildSymbolTable(): void;
607
782
  /**
608
783
  * The name of the enum (without the namespace prefix)
609
784
  */
@@ -612,45 +787,51 @@ export declare class EnumStatement extends Statement implements TypedefProvider
612
787
  * The name of the enum WITH its leading namespace (if applicable)
613
788
  */
614
789
  get fullName(): string;
615
- getThisBscType(): EnumType;
616
790
  transpile(state: BrsTranspileState): any[];
617
791
  getTypedef(state: BrsTranspileState): TranspileResult;
618
792
  walk(visitor: WalkVisitor, options: WalkOptions): void;
793
+ getType(options: GetTypeOptions): EnumType;
619
794
  }
620
795
  export declare class EnumMemberStatement extends Statement implements TypedefProvider {
796
+ constructor(options: {
797
+ name: Identifier;
798
+ equals?: Token;
799
+ value?: Expression;
800
+ });
621
801
  tokens: {
622
802
  name: Identifier;
623
- equal?: Token;
803
+ equals?: Token;
624
804
  };
625
805
  value?: Expression;
626
- constructor(tokens: {
627
- name: Identifier;
628
- equal?: Token;
629
- }, value?: Expression);
630
- readonly range: Range;
806
+ readonly kind = AstNodeKind.EnumMemberStatement;
807
+ get range(): Range;
631
808
  /**
632
809
  * The name of the member
633
810
  */
634
811
  get name(): string;
812
+ getLeadingTrivia(): Token[];
635
813
  transpile(state: BrsTranspileState): TranspileResult;
636
814
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
637
815
  walk(visitor: WalkVisitor, options: WalkOptions): void;
816
+ getType(options: GetTypeOptions): EnumMemberType;
638
817
  }
639
818
  export declare class ConstStatement extends Statement implements TypedefProvider {
819
+ constructor(options: {
820
+ const?: Token;
821
+ name: Identifier;
822
+ equals?: Token;
823
+ value: Expression;
824
+ });
640
825
  tokens: {
641
826
  const: Token;
642
827
  name: Identifier;
643
828
  equals: Token;
644
829
  };
645
830
  value: Expression;
646
- readonly namespaceName?: NamespacedVariableNameExpression;
647
- constructor(tokens: {
648
- const: Token;
649
- name: Identifier;
650
- equals: Token;
651
- }, value: Expression, namespaceName?: NamespacedVariableNameExpression);
831
+ readonly kind = AstNodeKind.ConstStatement;
652
832
  range: Range;
653
833
  get name(): string;
834
+ getLeadingTrivia(): Token[];
654
835
  /**
655
836
  * The name of the statement WITH its leading namespace (if applicable)
656
837
  */
@@ -658,4 +839,19 @@ export declare class ConstStatement extends Statement implements TypedefProvider
658
839
  transpile(state: BrsTranspileState): TranspileResult;
659
840
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
660
841
  walk(visitor: WalkVisitor, options: WalkOptions): void;
842
+ getType(options: GetTypeOptions): BscType;
843
+ }
844
+ export declare class ContinueStatement extends Statement {
845
+ constructor(options: {
846
+ continue?: Token;
847
+ loopType: Token;
848
+ });
849
+ tokens: {
850
+ continue?: Token;
851
+ loopType: Token;
852
+ };
853
+ readonly kind = AstNodeKind.ContinueStatement;
854
+ range: Range;
855
+ transpile(state: BrsTranspileState): (string | SourceNode)[];
856
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
661
857
  }