brighterscript 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (381) hide show
  1. package/CHANGELOG.md +542 -253
  2. package/README.md +30 -9
  3. package/bsconfig.schema.json +13 -1
  4. package/dist/BsConfig.d.ts +4 -0
  5. package/dist/Cache.d.ts +3 -8
  6. package/dist/Cache.js +9 -14
  7. package/dist/Cache.js.map +1 -1
  8. package/dist/CodeActionUtil.d.ts +11 -2
  9. package/dist/CodeActionUtil.js +17 -3
  10. package/dist/CodeActionUtil.js.map +1 -1
  11. package/dist/CommentFlagProcessor.d.ts +4 -4
  12. package/dist/CommentFlagProcessor.js +5 -3
  13. package/dist/CommentFlagProcessor.js.map +1 -1
  14. package/dist/DependencyGraph.js +5 -4
  15. package/dist/DependencyGraph.js.map +1 -1
  16. package/dist/DiagnosticFilterer.js +1 -1
  17. package/dist/DiagnosticFilterer.js.map +1 -1
  18. package/dist/DiagnosticMessages.d.ts +59 -4
  19. package/dist/DiagnosticMessages.js +65 -7
  20. package/dist/DiagnosticMessages.js.map +1 -1
  21. package/dist/LanguageServer.d.ts +4 -14
  22. package/dist/LanguageServer.js +40 -26
  23. package/dist/LanguageServer.js.map +1 -1
  24. package/dist/Logger.d.ts +2 -0
  25. package/dist/Logger.js +10 -8
  26. package/dist/Logger.js.map +1 -1
  27. package/dist/PluginInterface.d.ts +7 -3
  28. package/dist/PluginInterface.js +9 -0
  29. package/dist/PluginInterface.js.map +1 -1
  30. package/dist/Program.d.ts +43 -25
  31. package/dist/Program.js +180 -82
  32. package/dist/Program.js.map +1 -1
  33. package/dist/ProgramBuilder.d.ts +4 -0
  34. package/dist/ProgramBuilder.js +30 -14
  35. package/dist/ProgramBuilder.js.map +1 -1
  36. package/dist/Scope.d.ts +100 -28
  37. package/dist/Scope.js +382 -154
  38. package/dist/Scope.js.map +1 -1
  39. package/dist/SemanticTokenUtils.d.ts +14 -0
  40. package/dist/SemanticTokenUtils.js +81 -0
  41. package/dist/SemanticTokenUtils.js.map +1 -0
  42. package/dist/SymbolTable.d.ts +10 -4
  43. package/dist/SymbolTable.js +40 -13
  44. package/dist/SymbolTable.js.map +1 -1
  45. package/dist/XmlScope.d.ts +8 -3
  46. package/dist/XmlScope.js +65 -27
  47. package/dist/XmlScope.js.map +1 -1
  48. package/dist/astUtils/AstEditor.d.ts +33 -0
  49. package/dist/astUtils/AstEditor.js +107 -0
  50. package/dist/astUtils/AstEditor.js.map +1 -0
  51. package/dist/{types/FunctionType.spec.d.ts → astUtils/AstEditor.spec.d.ts} +0 -0
  52. package/dist/astUtils/AstEditor.spec.js +170 -0
  53. package/dist/astUtils/AstEditor.spec.js.map +1 -0
  54. package/dist/astUtils/creators.d.ts +24 -6
  55. package/dist/astUtils/creators.js +130 -19
  56. package/dist/astUtils/creators.js.map +1 -1
  57. package/dist/astUtils/creators.spec.js +14 -4
  58. package/dist/astUtils/creators.spec.js.map +1 -1
  59. package/dist/astUtils/reflection.d.ts +27 -8
  60. package/dist/astUtils/reflection.js +66 -1
  61. package/dist/astUtils/reflection.js.map +1 -1
  62. package/dist/astUtils/reflection.spec.js +130 -119
  63. package/dist/astUtils/reflection.spec.js.map +1 -1
  64. package/dist/astUtils/stackedVisitor.js.map +1 -1
  65. package/dist/astUtils/stackedVisitor.spec.js +13 -13
  66. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  67. package/dist/astUtils/visitors.d.ts +17 -2
  68. package/dist/astUtils/visitors.js +2 -2
  69. package/dist/astUtils/visitors.js.map +1 -1
  70. package/dist/astUtils/visitors.spec.js +31 -29
  71. package/dist/astUtils/visitors.spec.js.map +1 -1
  72. package/dist/astUtils/xml.d.ts +4 -3
  73. package/dist/astUtils/xml.js +8 -3
  74. package/dist/astUtils/xml.js.map +1 -1
  75. package/dist/bscPlugin/BscPlugin.d.ts +7 -1
  76. package/dist/bscPlugin/BscPlugin.js +28 -0
  77. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  78. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +4 -4
  79. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  80. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +26 -26
  81. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  82. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +9 -0
  83. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +97 -0
  84. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
  85. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +1 -0
  86. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +73 -0
  87. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -0
  88. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +8 -0
  89. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +52 -0
  90. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  91. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts +1 -0
  92. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +32 -0
  93. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
  94. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +9 -0
  95. package/dist/bscPlugin/validation/BrsFileValidator.js +66 -0
  96. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  97. package/dist/bscPlugin/validation/ScopeValidator.d.ts +29 -0
  98. package/dist/bscPlugin/validation/ScopeValidator.js +183 -0
  99. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  100. package/dist/cli.js +9 -3
  101. package/dist/cli.js.map +1 -1
  102. package/dist/diagnosticUtils.d.ts +1 -0
  103. package/dist/diagnosticUtils.js +15 -8
  104. package/dist/diagnosticUtils.js.map +1 -1
  105. package/dist/examples/plugins/removePrint.js +12 -14
  106. package/dist/examples/plugins/removePrint.js.map +1 -1
  107. package/dist/files/BrsFile.Class.spec.js +634 -145
  108. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  109. package/dist/files/BrsFile.d.ts +62 -30
  110. package/dist/files/BrsFile.js +683 -335
  111. package/dist/files/BrsFile.js.map +1 -1
  112. package/dist/files/BrsFile.spec.js +1055 -449
  113. package/dist/files/BrsFile.spec.js.map +1 -1
  114. package/dist/files/XmlFile.d.ts +11 -10
  115. package/dist/files/XmlFile.js +33 -26
  116. package/dist/files/XmlFile.js.map +1 -1
  117. package/dist/files/XmlFile.spec.js +302 -237
  118. package/dist/files/XmlFile.spec.js.map +1 -1
  119. package/dist/files/tests/imports.spec.js +44 -42
  120. package/dist/files/tests/imports.spec.js.map +1 -1
  121. package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
  122. package/dist/files/tests/optionalChaning.spec.js +88 -0
  123. package/dist/files/tests/optionalChaning.spec.js.map +1 -0
  124. package/dist/globalCallables.d.ts +3 -1
  125. package/dist/globalCallables.js +424 -152
  126. package/dist/globalCallables.js.map +1 -1
  127. package/dist/index.d.ts +13 -3
  128. package/dist/index.js +23 -4
  129. package/dist/index.js.map +1 -1
  130. package/dist/interfaces.d.ts +129 -16
  131. package/dist/lexer/Lexer.d.ts +19 -1
  132. package/dist/lexer/Lexer.js +127 -21
  133. package/dist/lexer/Lexer.js.map +1 -1
  134. package/dist/lexer/Lexer.spec.js +657 -536
  135. package/dist/lexer/Lexer.spec.js.map +1 -1
  136. package/dist/lexer/Token.d.ts +2 -2
  137. package/dist/lexer/TokenKind.d.ts +13 -1
  138. package/dist/lexer/TokenKind.js +60 -3
  139. package/dist/lexer/TokenKind.js.map +1 -1
  140. package/dist/parser/BrsTranspileState.d.ts +7 -0
  141. package/dist/parser/BrsTranspileState.js +9 -0
  142. package/dist/parser/BrsTranspileState.js.map +1 -1
  143. package/dist/parser/Expression.d.ts +150 -34
  144. package/dist/parser/Expression.js +337 -150
  145. package/dist/parser/Expression.js.map +1 -1
  146. package/dist/parser/Parser.Class.spec.js +189 -89
  147. package/dist/parser/Parser.Class.spec.js.map +1 -1
  148. package/dist/parser/Parser.d.ts +152 -29
  149. package/dist/parser/Parser.js +1095 -501
  150. package/dist/parser/Parser.js.map +1 -1
  151. package/dist/parser/Parser.spec.js +687 -266
  152. package/dist/parser/Parser.spec.js.map +1 -1
  153. package/dist/parser/SGParser.d.ts +41 -4
  154. package/dist/parser/SGParser.js +186 -175
  155. package/dist/parser/SGParser.js.map +1 -1
  156. package/dist/parser/SGParser.spec.js +35 -22
  157. package/dist/parser/SGParser.spec.js.map +1 -1
  158. package/dist/parser/SGTypes.d.ts +206 -38
  159. package/dist/parser/SGTypes.js +470 -161
  160. package/dist/parser/SGTypes.js.map +1 -1
  161. package/dist/parser/SGTypes.spec.d.ts +1 -0
  162. package/dist/parser/SGTypes.spec.js +351 -0
  163. package/dist/parser/SGTypes.spec.js.map +1 -0
  164. package/dist/parser/Statement.d.ts +194 -40
  165. package/dist/parser/Statement.js +597 -160
  166. package/dist/parser/Statement.js.map +1 -1
  167. package/dist/parser/Statement.spec.js +11 -11
  168. package/dist/parser/Statement.spec.js.map +1 -1
  169. package/dist/parser/TranspileState.d.ts +1 -1
  170. package/dist/parser/TranspileState.js +15 -7
  171. package/dist/parser/TranspileState.js.map +1 -1
  172. package/dist/parser/tests/Parser.spec.d.ts +10 -9
  173. package/dist/parser/tests/Parser.spec.js +15 -11
  174. package/dist/parser/tests/Parser.spec.js.map +1 -1
  175. package/dist/parser/tests/controlFlow/For.spec.js +60 -60
  176. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  177. package/dist/parser/tests/controlFlow/ForEach.spec.js +40 -39
  178. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  179. package/dist/parser/tests/controlFlow/If.spec.js +213 -194
  180. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  181. package/dist/parser/tests/controlFlow/While.spec.js +37 -37
  182. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  183. package/dist/parser/tests/expression/Additive.spec.js +30 -30
  184. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  185. package/dist/parser/tests/expression/ArrayLiterals.spec.js +119 -119
  186. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  187. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +162 -138
  188. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  189. package/dist/parser/tests/expression/Boolean.spec.js +24 -24
  190. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  191. package/dist/parser/tests/expression/Call.spec.js +41 -40
  192. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  193. package/dist/parser/tests/expression/Exponential.spec.js +17 -17
  194. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  195. package/dist/parser/tests/expression/Function.spec.js +256 -256
  196. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  197. package/dist/parser/tests/expression/Indexing.spec.js +87 -87
  198. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  199. package/dist/parser/tests/expression/Multiplicative.spec.js +37 -37
  200. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  201. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +75 -63
  202. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  203. package/dist/parser/tests/expression/PrefixUnary.spec.js +41 -41
  204. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  205. package/dist/parser/tests/expression/Primary.spec.js +41 -41
  206. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  207. package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +1 -0
  208. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +171 -0
  209. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -0
  210. package/dist/parser/tests/expression/Relational.spec.js +43 -43
  211. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  212. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +9 -9
  213. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  214. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +28 -28
  215. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  216. package/dist/parser/tests/expression/TernaryExpression.spec.js +102 -102
  217. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  218. package/dist/parser/tests/statement/AssignmentOperators.spec.js +36 -36
  219. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  220. package/dist/parser/tests/statement/Declaration.spec.js +44 -44
  221. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  222. package/dist/parser/tests/statement/Dim.spec.js +21 -21
  223. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  224. package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
  225. package/dist/parser/tests/statement/Enum.spec.js +840 -0
  226. package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
  227. package/dist/parser/tests/statement/For.spec.d.ts +1 -0
  228. package/dist/parser/tests/statement/For.spec.js +46 -0
  229. package/dist/parser/tests/statement/For.spec.js.map +1 -0
  230. package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
  231. package/dist/parser/tests/statement/ForEach.spec.js +37 -0
  232. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
  233. package/dist/parser/tests/statement/Function.spec.js +198 -197
  234. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  235. package/dist/parser/tests/statement/Goto.spec.js +15 -14
  236. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  237. package/dist/parser/tests/statement/Increment.spec.js +50 -50
  238. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  239. package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +1 -0
  240. package/dist/parser/tests/statement/InterfaceStatement.spec.js +254 -0
  241. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -0
  242. package/dist/parser/tests/statement/LibraryStatement.spec.js +17 -17
  243. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  244. package/dist/parser/tests/statement/Misc.spec.js +108 -106
  245. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  246. package/dist/parser/tests/statement/PrintStatement.spec.js +40 -40
  247. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  248. package/dist/parser/tests/statement/ReturnStatement.spec.js +46 -46
  249. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  250. package/dist/parser/tests/statement/Set.spec.js +83 -83
  251. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  252. package/dist/parser/tests/statement/Stop.spec.js +12 -11
  253. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  254. package/dist/parser/tests/statement/Throw.spec.js +5 -5
  255. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  256. package/dist/parser/tests/statement/TryCatch.spec.js +15 -13
  257. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  258. package/dist/preprocessor/Chunk.d.ts +1 -1
  259. package/dist/preprocessor/Chunk.js.map +1 -1
  260. package/dist/preprocessor/Manifest.d.ts +5 -5
  261. package/dist/preprocessor/Manifest.js +14 -35
  262. package/dist/preprocessor/Manifest.js.map +1 -1
  263. package/dist/preprocessor/Manifest.spec.d.ts +1 -0
  264. package/dist/preprocessor/Manifest.spec.js +78 -103
  265. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  266. package/dist/preprocessor/Preprocessor.d.ts +1 -1
  267. package/dist/preprocessor/Preprocessor.js +8 -8
  268. package/dist/preprocessor/Preprocessor.js.map +1 -1
  269. package/dist/preprocessor/Preprocessor.spec.js +49 -49
  270. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  271. package/dist/preprocessor/PreprocessorParser.spec.js +72 -72
  272. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  273. package/dist/roku-types/data.json +21891 -0
  274. package/dist/roku-types/index.d.ts +6776 -0
  275. package/dist/roku-types/index.js +11 -0
  276. package/dist/roku-types/index.js.map +1 -0
  277. package/dist/types/ArrayType.d.ts +8 -5
  278. package/dist/types/ArrayType.js +52 -12
  279. package/dist/types/ArrayType.js.map +1 -1
  280. package/dist/types/ArrayType.spec.js +72 -11
  281. package/dist/types/ArrayType.spec.js.map +1 -1
  282. package/dist/types/BooleanType.d.ts +4 -2
  283. package/dist/types/BooleanType.js +9 -4
  284. package/dist/types/BooleanType.js.map +1 -1
  285. package/dist/types/BooleanType.spec.js +5 -3
  286. package/dist/types/BooleanType.spec.js.map +1 -1
  287. package/dist/types/BscType.d.ts +20 -5
  288. package/dist/types/BscType.js +24 -0
  289. package/dist/types/BscType.js.map +1 -1
  290. package/dist/types/CustomType.d.ts +8 -6
  291. package/dist/types/CustomType.js +20 -11
  292. package/dist/types/CustomType.js.map +1 -1
  293. package/dist/types/DoubleType.d.ts +2 -0
  294. package/dist/types/DoubleType.js +14 -9
  295. package/dist/types/DoubleType.js.map +1 -1
  296. package/dist/types/DoubleType.spec.js +5 -3
  297. package/dist/types/DoubleType.spec.js.map +1 -1
  298. package/dist/types/DynamicType.d.ts +2 -0
  299. package/dist/types/DynamicType.js +6 -2
  300. package/dist/types/DynamicType.js.map +1 -1
  301. package/dist/types/DynamicType.spec.js +2 -2
  302. package/dist/types/DynamicType.spec.js.map +1 -1
  303. package/dist/types/FloatType.d.ts +2 -0
  304. package/dist/types/FloatType.js +14 -9
  305. package/dist/types/FloatType.js.map +1 -1
  306. package/dist/types/FloatType.spec.js +4 -2
  307. package/dist/types/FloatType.spec.js.map +1 -1
  308. package/dist/types/FunctionType.d.ts +7 -31
  309. package/dist/types/FunctionType.js +11 -57
  310. package/dist/types/FunctionType.js.map +1 -1
  311. package/dist/types/IntegerType.d.ts +2 -0
  312. package/dist/types/IntegerType.js +14 -9
  313. package/dist/types/IntegerType.js.map +1 -1
  314. package/dist/types/IntegerType.spec.js +5 -3
  315. package/dist/types/IntegerType.spec.js.map +1 -1
  316. package/dist/types/InterfaceType.d.ts +13 -4
  317. package/dist/types/InterfaceType.js +48 -8
  318. package/dist/types/InterfaceType.js.map +1 -1
  319. package/dist/types/InterfaceType.spec.d.ts +1 -0
  320. package/dist/types/InterfaceType.spec.js +194 -0
  321. package/dist/types/InterfaceType.spec.js.map +1 -0
  322. package/dist/types/InvalidType.d.ts +4 -2
  323. package/dist/types/InvalidType.js +10 -5
  324. package/dist/types/InvalidType.js.map +1 -1
  325. package/dist/types/InvalidType.spec.js +4 -2
  326. package/dist/types/InvalidType.spec.js.map +1 -1
  327. package/dist/types/LazyType.d.ts +8 -7
  328. package/dist/types/LazyType.js +22 -10
  329. package/dist/types/LazyType.js.map +1 -1
  330. package/dist/types/LongIntegerType.d.ts +2 -0
  331. package/dist/types/LongIntegerType.js +14 -9
  332. package/dist/types/LongIntegerType.js.map +1 -1
  333. package/dist/types/LongIntegerType.spec.js +4 -2
  334. package/dist/types/LongIntegerType.spec.js.map +1 -1
  335. package/dist/types/ObjectType.d.ts +8 -4
  336. package/dist/types/ObjectType.js +9 -4
  337. package/dist/types/ObjectType.js.map +1 -1
  338. package/dist/types/ObjectType.spec.js +2 -2
  339. package/dist/types/ObjectType.spec.js.map +1 -1
  340. package/dist/types/StringType.d.ts +4 -2
  341. package/dist/types/StringType.js +9 -4
  342. package/dist/types/StringType.js.map +1 -1
  343. package/dist/types/StringType.spec.js +4 -2
  344. package/dist/types/StringType.spec.js.map +1 -1
  345. package/dist/types/TypedFunctionType.d.ts +28 -0
  346. package/dist/types/TypedFunctionType.js +88 -0
  347. package/dist/types/TypedFunctionType.js.map +1 -0
  348. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  349. package/dist/types/TypedFunctionType.spec.js +37 -0
  350. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  351. package/dist/types/UninitializedType.js +3 -3
  352. package/dist/types/UninitializedType.js.map +1 -1
  353. package/dist/types/VoidType.d.ts +4 -2
  354. package/dist/types/VoidType.js +8 -4
  355. package/dist/types/VoidType.js.map +1 -1
  356. package/dist/types/VoidType.spec.js +2 -2
  357. package/dist/types/VoidType.spec.js.map +1 -1
  358. package/dist/types/helpers.d.ts +42 -0
  359. package/dist/types/helpers.js +118 -0
  360. package/dist/types/helpers.js.map +1 -0
  361. package/dist/util.d.ts +87 -16
  362. package/dist/util.js +339 -94
  363. package/dist/util.js.map +1 -1
  364. package/dist/validators/ClassValidator.d.ts +19 -2
  365. package/dist/validators/ClassValidator.js +163 -102
  366. package/dist/validators/ClassValidator.js.map +1 -1
  367. package/package.json +26 -15
  368. package/dist/astUtils/index.d.ts +0 -7
  369. package/dist/astUtils/index.js +0 -26
  370. package/dist/astUtils/index.js.map +0 -1
  371. package/dist/lexer/index.d.ts +0 -3
  372. package/dist/lexer/index.js +0 -17
  373. package/dist/lexer/index.js.map +0 -1
  374. package/dist/parser/index.d.ts +0 -3
  375. package/dist/parser/index.js +0 -16
  376. package/dist/parser/index.js.map +0 -1
  377. package/dist/preprocessor/index.d.ts +0 -3
  378. package/dist/preprocessor/index.js +0 -16
  379. package/dist/preprocessor/index.js.map +0 -1
  380. package/dist/types/FunctionType.spec.js +0 -23
  381. package/dist/types/FunctionType.spec.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { Token, Identifier } from '../lexer';
1
+ import type { Token, Identifier } from '../lexer/Token';
2
2
  import type { Block, CommentStatement, FunctionStatement, LabelStatement } from './Statement';
3
3
  import type { Range } from 'vscode-languageserver';
4
4
  import type { BrsTranspileState } from './BrsTranspileState';
@@ -6,9 +6,12 @@ import { ParseMode } from './Parser';
6
6
  import type { WalkOptions, WalkVisitor } from '../astUtils/visitors';
7
7
  import { InternalWalkMode } from '../astUtils/visitors';
8
8
  import type { TranspileResult, TypedefProvider } from '../interfaces';
9
- import type { BscType } from '../types/BscType';
9
+ import { VoidType } from '../types/VoidType';
10
+ import { DynamicType } from '../types/DynamicType';
11
+ import type { BscType, SymbolContainer } from '../types/BscType';
10
12
  import { SymbolTable } from '../SymbolTable';
11
- import { FunctionType } from '../types/FunctionType';
13
+ import { TypedFunctionType } from '../types/TypedFunctionType';
14
+ import { ArrayType } from '../types/ArrayType';
12
15
  export declare type ExpressionVisitor = (expression: Expression, parent: Expression) => void;
13
16
  /** A BrightScript expression */
14
17
  export declare abstract class Expression {
@@ -34,6 +37,9 @@ export declare class BinaryExpression extends Expression {
34
37
  }
35
38
  export declare class CallExpression extends Expression {
36
39
  readonly callee: Expression;
40
+ /**
41
+ * Can either be `(`, or `?(` for optional chaining
42
+ */
37
43
  readonly openingParen: Token;
38
44
  readonly closingParen: Token;
39
45
  readonly args: Expression[];
@@ -42,7 +48,11 @@ export declare class CallExpression extends Expression {
42
48
  */
43
49
  readonly namespaceName: NamespacedVariableNameExpression;
44
50
  static MaximumArguments: number;
45
- constructor(callee: Expression, openingParen: Token, closingParen: Token, args: Expression[],
51
+ constructor(callee: Expression,
52
+ /**
53
+ * Can either be `(`, or `?(` for optional chaining
54
+ */
55
+ openingParen: Token, closingParen: Token, args: Expression[],
46
56
  /**
47
57
  * The namespace that currently wraps this call expression. This is NOT the namespace of the callee...that will be represented in the callee expression itself.
48
58
  */
@@ -59,24 +69,31 @@ export declare class FunctionExpression extends Expression implements TypedefPro
59
69
  readonly leftParen: Token;
60
70
  readonly rightParen: Token;
61
71
  readonly asToken?: Token;
62
- readonly returnTypeToken?: Token;
72
+ readonly returnType?: TypeExpression;
63
73
  /**
64
74
  * If this function is enclosed within another function, this will reference that parent function
65
75
  */
66
76
  readonly parentFunction?: FunctionExpression;
67
77
  readonly namespaceName?: NamespacedVariableNameExpression;
68
78
  readonly parentSymbolTable?: SymbolTable;
69
- constructor(parameters: FunctionParameterExpression[], body: Block, functionType: Token | null, end: Token, leftParen: Token, rightParen: Token, asToken?: Token, returnTypeToken?: Token,
79
+ constructor(parameters: FunctionParameterExpression[], body: Block, functionType: Token | null, end: Token, leftParen: Token, rightParen: Token, asToken?: Token, returnType?: TypeExpression,
70
80
  /**
71
81
  * If this function is enclosed within another function, this will reference that parent function
72
82
  */
73
83
  parentFunction?: FunctionExpression, namespaceName?: NamespacedVariableNameExpression, parentSymbolTable?: SymbolTable);
84
+ get range(): Range;
85
+ /**
86
+ * The range of the function
87
+ */
88
+ cacheRange(): Range;
89
+ private _range;
74
90
  readonly symbolTable: SymbolTable;
75
91
  labelStatements: LabelStatement[];
92
+ private _returnType;
76
93
  /**
77
94
  * The type this function returns
78
95
  */
79
- returnType: BscType;
96
+ getReturnType(): BscType;
80
97
  /**
81
98
  * The list of function calls that are declared within this function scope. This excludes CallExpressions
82
99
  * declared in child functions
@@ -91,42 +108,51 @@ export declare class FunctionExpression extends Expression implements TypedefPro
91
108
  */
92
109
  childFunctionExpressions: FunctionExpression[];
93
110
  /**
94
- * The range of the function, starting at the 'f' in function or 's' in sub (or the open paren if the keyword is missing),
95
- * and ending with the last n' in 'end function' or 'b' in 'end sub'
96
- */
97
- get range(): Range;
111
+ * The range of the function declaration, starting at the 'f' in function or 's' in sub (or the open paren if the keyword is missing),
112
+ * and ending with the last character in the returnTypeToken, or the 's' in 'as', or the rightParen
113
+ */
114
+ get functionDeclarationRange(): Range;
98
115
  transpile(state: BrsTranspileState, name?: Identifier, includeBody?: boolean): any[];
99
116
  getTypedef(state: BrsTranspileState, name?: Identifier): any[];
100
117
  walk(visitor: WalkVisitor, options: WalkOptions): void;
101
- getFunctionType(): FunctionType;
118
+ getFunctionType(): TypedFunctionType;
102
119
  }
103
120
  export declare class FunctionParameterExpression extends Expression {
104
121
  name: Identifier;
105
- type: BscType;
122
+ private typeInContext;
106
123
  equalsToken?: Token;
107
124
  defaultValue?: Expression;
108
125
  asToken?: Token;
109
- typeToken?: Token;
126
+ type?: TypeExpression;
110
127
  readonly namespaceName?: NamespacedVariableNameExpression;
111
- constructor(name: Identifier, type: BscType, equalsToken?: Token, defaultValue?: Expression, asToken?: Token, typeToken?: Token, namespaceName?: NamespacedVariableNameExpression);
112
- get range(): Range;
128
+ constructor(name: Identifier, typeInContext: BscType, equalsToken?: Token, defaultValue?: Expression, asToken?: Token, type?: TypeExpression, namespaceName?: NamespacedVariableNameExpression);
129
+ readonly range: Range;
130
+ getType(): BscType;
113
131
  transpile(state: BrsTranspileState): any[];
114
132
  walk(visitor: WalkVisitor, options: WalkOptions): void;
133
+ get isOptional(): boolean;
115
134
  }
116
135
  export declare class NamespacedVariableNameExpression extends Expression {
117
136
  readonly expression: DottedGetExpression | VariableExpression;
118
137
  constructor(expression: DottedGetExpression | VariableExpression);
119
- range: Range;
138
+ readonly range: Range;
120
139
  transpile(state: BrsTranspileState): import("source-map").SourceNode[];
121
140
  getNameParts(): string[];
122
- getName(parseMode: ParseMode): string;
141
+ getName(parseMode?: ParseMode): string;
123
142
  walk(visitor: WalkVisitor, options: WalkOptions): void;
124
143
  }
125
144
  export declare class DottedGetExpression extends Expression {
126
145
  readonly obj: Expression;
127
146
  readonly name: Identifier;
147
+ /**
148
+ * Can either be `.`, or `?.` for optional chaining
149
+ */
128
150
  readonly dot: Token;
129
- constructor(obj: Expression, name: Identifier, dot: Token);
151
+ constructor(obj: Expression, name: Identifier,
152
+ /**
153
+ * Can either be `.`, or `?.` for optional chaining
154
+ */
155
+ dot: Token);
130
156
  readonly range: Range;
131
157
  transpile(state: BrsTranspileState): (string | import("source-map").SourceNode)[];
132
158
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -134,18 +160,33 @@ export declare class DottedGetExpression extends Expression {
134
160
  export declare class XmlAttributeGetExpression extends Expression {
135
161
  readonly obj: Expression;
136
162
  readonly name: Identifier;
163
+ /**
164
+ * Can either be `@`, or `?@` for optional chaining
165
+ */
137
166
  readonly at: Token;
138
- constructor(obj: Expression, name: Identifier, at: Token);
167
+ constructor(obj: Expression, name: Identifier,
168
+ /**
169
+ * Can either be `@`, or `?@` for optional chaining
170
+ */
171
+ at: Token);
139
172
  readonly range: Range;
140
173
  transpile(state: BrsTranspileState): (string | import("source-map").SourceNode)[];
141
174
  walk(visitor: WalkVisitor, options: WalkOptions): void;
142
175
  }
143
176
  export declare class IndexedGetExpression extends Expression {
144
- readonly obj: Expression;
145
- readonly index: Expression;
146
- readonly openingSquare: Token;
147
- readonly closingSquare: Token;
148
- constructor(obj: Expression, index: Expression, openingSquare: Token, closingSquare: Token);
177
+ obj: Expression;
178
+ index: Expression;
179
+ /**
180
+ * Can either be `[` or `?[`. If `?.[` is used, this will be `[` and `optionalChainingToken` will be `?.`
181
+ */
182
+ openingSquare: Token;
183
+ closingSquare: Token;
184
+ questionDotToken?: Token;
185
+ constructor(obj: Expression, index: Expression,
186
+ /**
187
+ * Can either be `[` or `?[`. If `?.[` is used, this will be `[` and `optionalChainingToken` will be `?.`
188
+ */
189
+ openingSquare: Token, closingSquare: Token, questionDotToken?: Token);
149
190
  readonly range: Range;
150
191
  transpile(state: BrsTranspileState): (string | import("source-map").SourceNode)[];
151
192
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -167,7 +208,7 @@ export declare class GroupingExpression extends Expression {
167
208
  export declare class LiteralExpression extends Expression {
168
209
  token: Token;
169
210
  constructor(token: Token);
170
- get range(): Range;
211
+ readonly range: Range;
171
212
  /**
172
213
  * The (data) type of this expression
173
214
  */
@@ -205,19 +246,25 @@ export declare class AAMemberExpression extends Expression {
205
246
  colonToken: Token;
206
247
  /** The expression evaluated to determine the member's initial value. */
207
248
  value: Expression;
249
+ type: BscType;
208
250
  constructor(keyToken: Token, colonToken: Token,
209
251
  /** The expression evaluated to determine the member's initial value. */
210
- value: Expression);
211
- range: Range;
252
+ value: Expression, type: BscType);
253
+ readonly range: Range;
254
+ commaToken?: Token;
212
255
  transpile(state: BrsTranspileState): any[];
213
256
  walk(visitor: WalkVisitor, options: WalkOptions): void;
214
257
  }
215
- export declare class AALiteralExpression extends Expression {
258
+ export declare class AALiteralExpression extends Expression implements SymbolContainer {
216
259
  readonly elements: Array<AAMemberExpression | CommentStatement>;
217
260
  readonly open: Token;
218
261
  readonly close: Token;
219
- constructor(elements: Array<AAMemberExpression | CommentStatement>, open: Token, close: Token);
262
+ readonly functionExpression: FunctionExpression;
263
+ constructor(elements: Array<AAMemberExpression | CommentStatement>, open: Token, close: Token, functionExpression: FunctionExpression);
220
264
  readonly range: Range;
265
+ readonly symbolTable: SymbolTable;
266
+ readonly memberTable: SymbolTable;
267
+ buildSymbolTable(): void;
221
268
  transpile(state: BrsTranspileState): any[];
222
269
  walk(visitor: WalkVisitor, options: WalkOptions): void;
223
270
  }
@@ -234,7 +281,6 @@ export declare class VariableExpression extends Expression {
234
281
  namespaceName: NamespacedVariableNameExpression;
235
282
  constructor(name: Identifier, namespaceName: NamespacedVariableNameExpression);
236
283
  readonly range: Range;
237
- isCalled: boolean;
238
284
  getName(parseMode: ParseMode): string;
239
285
  transpile(state: BrsTranspileState): any[];
240
286
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -256,12 +302,12 @@ export declare class NewExpression extends Expression {
256
302
  readonly newKeyword: Token;
257
303
  readonly call: CallExpression;
258
304
  constructor(newKeyword: Token, call: CallExpression);
305
+ readonly range: Range;
259
306
  /**
260
307
  * The name of the class to initialize (with optional namespace prefixed)
261
308
  */
262
309
  get className(): NamespacedVariableNameExpression;
263
310
  get namespaceName(): NamespacedVariableNameExpression;
264
- readonly range: Range;
265
311
  transpile(state: BrsTranspileState): any[];
266
312
  walk(visitor: WalkVisitor, options: WalkOptions): void;
267
313
  }
@@ -313,8 +359,10 @@ export declare class AnnotationExpression extends Expression {
313
359
  readonly atToken: Token;
314
360
  readonly nameToken: Token;
315
361
  constructor(atToken: Token, nameToken: Token);
362
+ get range(): Range;
363
+ cacheRange(): Range;
364
+ private _range;
316
365
  name: string;
317
- range: Range;
318
366
  call: CallExpression;
319
367
  /**
320
368
  * Convert annotation arguments to JavaScript types
@@ -332,7 +380,7 @@ export declare class TernaryExpression extends Expression {
332
380
  readonly colonToken?: Token;
333
381
  readonly alternate?: Expression;
334
382
  constructor(test: Expression, questionMarkToken: Token, consequent?: Expression, colonToken?: Token, alternate?: Expression);
335
- range: Range;
383
+ readonly range: Range;
336
384
  transpile(state: BrsTranspileState): any[];
337
385
  walk(visitor: WalkVisitor, options: WalkOptions): void;
338
386
  }
@@ -345,6 +393,74 @@ export declare class NullCoalescingExpression extends Expression {
345
393
  transpile(state: BrsTranspileState): any[];
346
394
  walk(visitor: WalkVisitor, options: WalkOptions): void;
347
395
  }
396
+ export declare class RegexLiteralExpression extends Expression {
397
+ tokens: {
398
+ regexLiteral: Token;
399
+ };
400
+ constructor(tokens: {
401
+ regexLiteral: Token;
402
+ });
403
+ readonly range: Range;
404
+ transpile(state: BrsTranspileState): TranspileResult;
405
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
406
+ }
407
+ export declare class TypeExpression extends Expression {
408
+ private tokens;
409
+ namespaceName?: NamespacedVariableNameExpression;
410
+ constructor(tokens: {
411
+ type?: Token;
412
+ }, namespaceName?: NamespacedVariableNameExpression);
413
+ readonly range: Range;
414
+ private _type;
415
+ /**
416
+ * The this TypeExpression refers to
417
+ */
418
+ get type(): BscType;
419
+ /**
420
+ * Derive a BscType from the type token
421
+ * Can deal with multiple brackets to make multidimensional arrays, eg. float[][]
422
+ * Defaults to `DynamicType`
423
+ */
424
+ getType(parseMode?: ParseMode): DynamicType | BscType | import("../types/FloatType").FloatType | import("../types/IntegerType").IntegerType | import("../types/DoubleType").DoubleType | import("../types/LongIntegerType").LongIntegerType | import("../types/StringType").StringType | import("../types/BooleanType").BooleanType | import("../types/FunctionType").FunctionType | import("../types/InvalidType").InvalidType | VoidType;
425
+ /**
426
+ * Is this a valid, (eg. known) type?
427
+ */
428
+ isValidType(parseMode?: ParseMode): boolean;
429
+ /**
430
+ * Gives a human readable string that says the type
431
+ * @returns text to display to show the type
432
+ */
433
+ getText(): string;
434
+ transpile(state: BrsTranspileState): TranspileResult;
435
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
436
+ }
437
+ export declare class ArrayTypeExpression extends TypeExpression {
438
+ innerTypes: TypeExpression[];
439
+ private bracketTokens;
440
+ namespaceName?: NamespacedVariableNameExpression;
441
+ constructor(innerTypes: TypeExpression[], // this is an array so that in the future when we support union types
442
+ bracketTokens: {
443
+ leftBracket?: Token;
444
+ rightBracket?: Token;
445
+ }, namespaceName?: NamespacedVariableNameExpression);
446
+ readonly range: Range;
447
+ private get defaultTypeExpression();
448
+ /**
449
+ * Derive a BscType from the type token
450
+ * Returns an array type with the inner types based on the inner type expressions
451
+ */
452
+ getType(parseMode?: ParseMode): ArrayType;
453
+ /**
454
+ * Is this a valid, (eg. known) type?
455
+ */
456
+ isValidType(parseMode?: ParseMode): boolean;
457
+ /**
458
+ * Gives a human readable string that says the type
459
+ * @returns text to display to show the type
460
+ */
461
+ getText(): string;
462
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
463
+ }
348
464
  declare type ExpressionValue = string | number | boolean | Expression | ExpressionValue[] | {
349
465
  [key: string]: ExpressionValue;
350
466
  };