brighterscript 1.0.0-alpha.2 → 1.0.0-alpha.22

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 (388) hide show
  1. package/CHANGELOG.md +643 -253
  2. package/README.md +33 -9
  3. package/bsconfig.schema.json +22 -2
  4. package/dist/BsConfig.d.ts +9 -0
  5. package/dist/Cache.d.ts +5 -6
  6. package/dist/Cache.js +12 -11
  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.d.ts +2 -2
  15. package/dist/DependencyGraph.js +20 -7
  16. package/dist/DependencyGraph.js.map +1 -1
  17. package/dist/DiagnosticCollection.d.ts +3 -3
  18. package/dist/DiagnosticCollection.js +11 -11
  19. package/dist/DiagnosticCollection.js.map +1 -1
  20. package/dist/DiagnosticFilterer.js +5 -4
  21. package/dist/DiagnosticFilterer.js.map +1 -1
  22. package/dist/DiagnosticMessages.d.ts +59 -4
  23. package/dist/DiagnosticMessages.js +65 -7
  24. package/dist/DiagnosticMessages.js.map +1 -1
  25. package/dist/LanguageServer.d.ts +51 -39
  26. package/dist/LanguageServer.js +316 -232
  27. package/dist/LanguageServer.js.map +1 -1
  28. package/dist/Logger.d.ts +2 -0
  29. package/dist/Logger.js +10 -8
  30. package/dist/Logger.js.map +1 -1
  31. package/dist/PluginInterface.d.ts +7 -3
  32. package/dist/PluginInterface.js +9 -0
  33. package/dist/PluginInterface.js.map +1 -1
  34. package/dist/Program.d.ts +43 -25
  35. package/dist/Program.js +212 -95
  36. package/dist/Program.js.map +1 -1
  37. package/dist/ProgramBuilder.d.ts +4 -0
  38. package/dist/ProgramBuilder.js +36 -20
  39. package/dist/ProgramBuilder.js.map +1 -1
  40. package/dist/Scope.d.ts +126 -29
  41. package/dist/Scope.js +433 -156
  42. package/dist/Scope.js.map +1 -1
  43. package/dist/SemanticTokenUtils.d.ts +14 -0
  44. package/dist/SemanticTokenUtils.js +81 -0
  45. package/dist/SemanticTokenUtils.js.map +1 -0
  46. package/dist/SymbolTable.d.ts +10 -4
  47. package/dist/SymbolTable.js +55 -13
  48. package/dist/SymbolTable.js.map +1 -1
  49. package/dist/XmlScope.d.ts +7 -2
  50. package/dist/XmlScope.js +65 -27
  51. package/dist/XmlScope.js.map +1 -1
  52. package/dist/astUtils/AstEditor.d.ts +65 -0
  53. package/dist/astUtils/AstEditor.js +239 -0
  54. package/dist/astUtils/AstEditor.js.map +1 -0
  55. package/dist/{types/FunctionType.spec.d.ts → astUtils/AstEditor.spec.d.ts} +0 -0
  56. package/dist/astUtils/AstEditor.spec.js +254 -0
  57. package/dist/astUtils/AstEditor.spec.js.map +1 -0
  58. package/dist/astUtils/creators.d.ts +28 -6
  59. package/dist/astUtils/creators.js +137 -19
  60. package/dist/astUtils/creators.js.map +1 -1
  61. package/dist/astUtils/creators.spec.js +14 -4
  62. package/dist/astUtils/creators.spec.js.map +1 -1
  63. package/dist/astUtils/reflection.d.ts +32 -10
  64. package/dist/astUtils/reflection.js +82 -7
  65. package/dist/astUtils/reflection.js.map +1 -1
  66. package/dist/astUtils/reflection.spec.js +130 -119
  67. package/dist/astUtils/reflection.spec.js.map +1 -1
  68. package/dist/astUtils/stackedVisitor.js.map +1 -1
  69. package/dist/astUtils/stackedVisitor.spec.js +13 -13
  70. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  71. package/dist/astUtils/visitors.d.ts +76 -51
  72. package/dist/astUtils/visitors.js +31 -11
  73. package/dist/astUtils/visitors.js.map +1 -1
  74. package/dist/astUtils/visitors.spec.js +126 -32
  75. package/dist/astUtils/visitors.spec.js.map +1 -1
  76. package/dist/astUtils/xml.d.ts +4 -3
  77. package/dist/astUtils/xml.js +8 -3
  78. package/dist/astUtils/xml.js.map +1 -1
  79. package/dist/bscPlugin/BscPlugin.d.ts +7 -1
  80. package/dist/bscPlugin/BscPlugin.js +28 -0
  81. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  82. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +4 -4
  83. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  84. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +26 -26
  85. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  86. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +9 -0
  87. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +108 -0
  88. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
  89. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +1 -0
  90. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +130 -0
  91. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -0
  92. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +8 -0
  93. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +52 -0
  94. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  95. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts +1 -0
  96. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +32 -0
  97. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
  98. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +9 -0
  99. package/dist/bscPlugin/validation/BrsFileValidator.js +66 -0
  100. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  101. package/dist/bscPlugin/validation/ScopeValidator.d.ts +29 -0
  102. package/dist/bscPlugin/validation/ScopeValidator.js +183 -0
  103. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  104. package/dist/cli.js +10 -3
  105. package/dist/cli.js.map +1 -1
  106. package/dist/diagnosticUtils.d.ts +1 -0
  107. package/dist/diagnosticUtils.js +15 -8
  108. package/dist/diagnosticUtils.js.map +1 -1
  109. package/dist/examples/plugins/removePrint.js +12 -14
  110. package/dist/examples/plugins/removePrint.js.map +1 -1
  111. package/dist/files/BrsFile.Class.spec.js +717 -147
  112. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  113. package/dist/files/BrsFile.d.ts +70 -30
  114. package/dist/files/BrsFile.js +719 -353
  115. package/dist/files/BrsFile.js.map +1 -1
  116. package/dist/files/BrsFile.spec.js +1238 -449
  117. package/dist/files/BrsFile.spec.js.map +1 -1
  118. package/dist/files/XmlFile.d.ts +6 -5
  119. package/dist/files/XmlFile.js +38 -30
  120. package/dist/files/XmlFile.js.map +1 -1
  121. package/dist/files/XmlFile.spec.js +302 -237
  122. package/dist/files/XmlFile.spec.js.map +1 -1
  123. package/dist/files/tests/imports.spec.js +44 -42
  124. package/dist/files/tests/imports.spec.js.map +1 -1
  125. package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
  126. package/dist/files/tests/optionalChaning.spec.js +88 -0
  127. package/dist/files/tests/optionalChaning.spec.js.map +1 -0
  128. package/dist/globalCallables.d.ts +3 -1
  129. package/dist/globalCallables.js +424 -152
  130. package/dist/globalCallables.js.map +1 -1
  131. package/dist/index.d.ts +13 -3
  132. package/dist/index.js +28 -5
  133. package/dist/index.js.map +1 -1
  134. package/dist/interfaces.d.ts +133 -16
  135. package/dist/lexer/Lexer.d.ts +19 -1
  136. package/dist/lexer/Lexer.js +127 -21
  137. package/dist/lexer/Lexer.js.map +1 -1
  138. package/dist/lexer/Lexer.spec.js +657 -536
  139. package/dist/lexer/Lexer.spec.js.map +1 -1
  140. package/dist/lexer/Token.d.ts +2 -2
  141. package/dist/lexer/TokenKind.d.ts +13 -1
  142. package/dist/lexer/TokenKind.js +60 -3
  143. package/dist/lexer/TokenKind.js.map +1 -1
  144. package/dist/parser/BrsTranspileState.d.ts +9 -0
  145. package/dist/parser/BrsTranspileState.js +14 -0
  146. package/dist/parser/BrsTranspileState.js.map +1 -1
  147. package/dist/parser/Expression.d.ts +150 -34
  148. package/dist/parser/Expression.js +335 -165
  149. package/dist/parser/Expression.js.map +1 -1
  150. package/dist/parser/Parser.Class.spec.js +189 -89
  151. package/dist/parser/Parser.Class.spec.js.map +1 -1
  152. package/dist/parser/Parser.d.ts +153 -30
  153. package/dist/parser/Parser.js +1100 -503
  154. package/dist/parser/Parser.js.map +1 -1
  155. package/dist/parser/Parser.spec.js +687 -266
  156. package/dist/parser/Parser.spec.js.map +1 -1
  157. package/dist/parser/SGParser.d.ts +41 -4
  158. package/dist/parser/SGParser.js +186 -175
  159. package/dist/parser/SGParser.js.map +1 -1
  160. package/dist/parser/SGParser.spec.js +35 -22
  161. package/dist/parser/SGParser.spec.js.map +1 -1
  162. package/dist/parser/SGTypes.d.ts +206 -38
  163. package/dist/parser/SGTypes.js +470 -161
  164. package/dist/parser/SGTypes.js.map +1 -1
  165. package/dist/parser/SGTypes.spec.d.ts +1 -0
  166. package/dist/parser/SGTypes.spec.js +351 -0
  167. package/dist/parser/SGTypes.spec.js.map +1 -0
  168. package/dist/parser/Statement.d.ts +202 -48
  169. package/dist/parser/Statement.js +648 -193
  170. package/dist/parser/Statement.js.map +1 -1
  171. package/dist/parser/Statement.spec.js +11 -11
  172. package/dist/parser/Statement.spec.js.map +1 -1
  173. package/dist/parser/TranspileState.d.ts +1 -1
  174. package/dist/parser/TranspileState.js +15 -7
  175. package/dist/parser/TranspileState.js.map +1 -1
  176. package/dist/parser/tests/Parser.spec.d.ts +10 -9
  177. package/dist/parser/tests/Parser.spec.js +15 -11
  178. package/dist/parser/tests/Parser.spec.js.map +1 -1
  179. package/dist/parser/tests/controlFlow/For.spec.js +60 -60
  180. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  181. package/dist/parser/tests/controlFlow/ForEach.spec.js +40 -39
  182. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  183. package/dist/parser/tests/controlFlow/If.spec.js +213 -194
  184. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  185. package/dist/parser/tests/controlFlow/While.spec.js +37 -37
  186. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  187. package/dist/parser/tests/expression/Additive.spec.js +30 -30
  188. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  189. package/dist/parser/tests/expression/ArrayLiterals.spec.js +119 -119
  190. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  191. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +162 -138
  192. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  193. package/dist/parser/tests/expression/Boolean.spec.js +24 -24
  194. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  195. package/dist/parser/tests/expression/Call.spec.js +41 -40
  196. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  197. package/dist/parser/tests/expression/Exponential.spec.js +17 -17
  198. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  199. package/dist/parser/tests/expression/Function.spec.js +256 -256
  200. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  201. package/dist/parser/tests/expression/Indexing.spec.js +87 -87
  202. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  203. package/dist/parser/tests/expression/Multiplicative.spec.js +37 -37
  204. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  205. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +75 -63
  206. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  207. package/dist/parser/tests/expression/PrefixUnary.spec.js +41 -41
  208. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  209. package/dist/parser/tests/expression/Primary.spec.js +41 -41
  210. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  211. package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +1 -0
  212. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +171 -0
  213. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -0
  214. package/dist/parser/tests/expression/Relational.spec.js +43 -43
  215. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  216. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +9 -9
  217. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  218. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +28 -28
  219. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  220. package/dist/parser/tests/expression/TernaryExpression.spec.js +102 -102
  221. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  222. package/dist/parser/tests/statement/AssignmentOperators.spec.js +36 -36
  223. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  224. package/dist/parser/tests/statement/Declaration.spec.js +44 -44
  225. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  226. package/dist/parser/tests/statement/Dim.spec.js +21 -21
  227. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  228. package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
  229. package/dist/parser/tests/statement/Enum.spec.js +840 -0
  230. package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
  231. package/dist/parser/tests/statement/For.spec.d.ts +1 -0
  232. package/dist/parser/tests/statement/For.spec.js +46 -0
  233. package/dist/parser/tests/statement/For.spec.js.map +1 -0
  234. package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
  235. package/dist/parser/tests/statement/ForEach.spec.js +37 -0
  236. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
  237. package/dist/parser/tests/statement/Function.spec.js +198 -197
  238. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  239. package/dist/parser/tests/statement/Goto.spec.js +15 -14
  240. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  241. package/dist/parser/tests/statement/Increment.spec.js +50 -50
  242. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  243. package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +1 -0
  244. package/dist/parser/tests/statement/InterfaceStatement.spec.js +254 -0
  245. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -0
  246. package/dist/parser/tests/statement/LibraryStatement.spec.js +17 -17
  247. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  248. package/dist/parser/tests/statement/Misc.spec.js +108 -106
  249. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  250. package/dist/parser/tests/statement/PrintStatement.spec.js +40 -40
  251. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  252. package/dist/parser/tests/statement/ReturnStatement.spec.js +46 -46
  253. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  254. package/dist/parser/tests/statement/Set.spec.js +83 -83
  255. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  256. package/dist/parser/tests/statement/Stop.spec.js +12 -11
  257. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  258. package/dist/parser/tests/statement/Throw.spec.js +5 -5
  259. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  260. package/dist/parser/tests/statement/TryCatch.spec.js +15 -13
  261. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  262. package/dist/preprocessor/Chunk.d.ts +1 -1
  263. package/dist/preprocessor/Chunk.js.map +1 -1
  264. package/dist/preprocessor/Manifest.d.ts +5 -5
  265. package/dist/preprocessor/Manifest.js +14 -35
  266. package/dist/preprocessor/Manifest.js.map +1 -1
  267. package/dist/preprocessor/Manifest.spec.d.ts +1 -0
  268. package/dist/preprocessor/Manifest.spec.js +78 -103
  269. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  270. package/dist/preprocessor/Preprocessor.d.ts +1 -1
  271. package/dist/preprocessor/Preprocessor.js +8 -8
  272. package/dist/preprocessor/Preprocessor.js.map +1 -1
  273. package/dist/preprocessor/Preprocessor.spec.js +49 -49
  274. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  275. package/dist/preprocessor/PreprocessorParser.spec.js +72 -72
  276. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  277. package/dist/roku-types/data.json +21891 -0
  278. package/dist/roku-types/index.d.ts +6776 -0
  279. package/dist/roku-types/index.js +11 -0
  280. package/dist/roku-types/index.js.map +1 -0
  281. package/dist/types/ArrayType.d.ts +8 -5
  282. package/dist/types/ArrayType.js +52 -12
  283. package/dist/types/ArrayType.js.map +1 -1
  284. package/dist/types/ArrayType.spec.js +72 -11
  285. package/dist/types/ArrayType.spec.js.map +1 -1
  286. package/dist/types/BooleanType.d.ts +4 -2
  287. package/dist/types/BooleanType.js +9 -4
  288. package/dist/types/BooleanType.js.map +1 -1
  289. package/dist/types/BooleanType.spec.js +5 -3
  290. package/dist/types/BooleanType.spec.js.map +1 -1
  291. package/dist/types/BscType.d.ts +20 -5
  292. package/dist/types/BscType.js +24 -0
  293. package/dist/types/BscType.js.map +1 -1
  294. package/dist/types/CustomType.d.ts +8 -6
  295. package/dist/types/CustomType.js +20 -11
  296. package/dist/types/CustomType.js.map +1 -1
  297. package/dist/types/DoubleType.d.ts +2 -0
  298. package/dist/types/DoubleType.js +14 -9
  299. package/dist/types/DoubleType.js.map +1 -1
  300. package/dist/types/DoubleType.spec.js +5 -3
  301. package/dist/types/DoubleType.spec.js.map +1 -1
  302. package/dist/types/DynamicType.d.ts +2 -0
  303. package/dist/types/DynamicType.js +6 -2
  304. package/dist/types/DynamicType.js.map +1 -1
  305. package/dist/types/DynamicType.spec.js +2 -2
  306. package/dist/types/DynamicType.spec.js.map +1 -1
  307. package/dist/types/EnumType.d.ts +22 -0
  308. package/dist/types/EnumType.js +55 -0
  309. package/dist/types/EnumType.js.map +1 -0
  310. package/dist/types/FloatType.d.ts +2 -0
  311. package/dist/types/FloatType.js +14 -9
  312. package/dist/types/FloatType.js.map +1 -1
  313. package/dist/types/FloatType.spec.js +4 -2
  314. package/dist/types/FloatType.spec.js.map +1 -1
  315. package/dist/types/FunctionType.d.ts +7 -31
  316. package/dist/types/FunctionType.js +11 -57
  317. package/dist/types/FunctionType.js.map +1 -1
  318. package/dist/types/IntegerType.d.ts +2 -0
  319. package/dist/types/IntegerType.js +14 -9
  320. package/dist/types/IntegerType.js.map +1 -1
  321. package/dist/types/IntegerType.spec.js +5 -3
  322. package/dist/types/IntegerType.spec.js.map +1 -1
  323. package/dist/types/InterfaceType.d.ts +13 -4
  324. package/dist/types/InterfaceType.js +48 -8
  325. package/dist/types/InterfaceType.js.map +1 -1
  326. package/dist/types/InterfaceType.spec.d.ts +1 -0
  327. package/dist/types/InterfaceType.spec.js +194 -0
  328. package/dist/types/InterfaceType.spec.js.map +1 -0
  329. package/dist/types/InvalidType.d.ts +4 -2
  330. package/dist/types/InvalidType.js +10 -5
  331. package/dist/types/InvalidType.js.map +1 -1
  332. package/dist/types/InvalidType.spec.js +4 -2
  333. package/dist/types/InvalidType.spec.js.map +1 -1
  334. package/dist/types/LazyType.d.ts +8 -7
  335. package/dist/types/LazyType.js +22 -10
  336. package/dist/types/LazyType.js.map +1 -1
  337. package/dist/types/LongIntegerType.d.ts +2 -0
  338. package/dist/types/LongIntegerType.js +14 -9
  339. package/dist/types/LongIntegerType.js.map +1 -1
  340. package/dist/types/LongIntegerType.spec.js +4 -2
  341. package/dist/types/LongIntegerType.spec.js.map +1 -1
  342. package/dist/types/ObjectType.d.ts +8 -4
  343. package/dist/types/ObjectType.js +9 -4
  344. package/dist/types/ObjectType.js.map +1 -1
  345. package/dist/types/ObjectType.spec.js +2 -2
  346. package/dist/types/ObjectType.spec.js.map +1 -1
  347. package/dist/types/StringType.d.ts +4 -2
  348. package/dist/types/StringType.js +9 -4
  349. package/dist/types/StringType.js.map +1 -1
  350. package/dist/types/StringType.spec.js +4 -2
  351. package/dist/types/StringType.spec.js.map +1 -1
  352. package/dist/types/TypedFunctionType.d.ts +28 -0
  353. package/dist/types/TypedFunctionType.js +88 -0
  354. package/dist/types/TypedFunctionType.js.map +1 -0
  355. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  356. package/dist/types/TypedFunctionType.spec.js +37 -0
  357. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  358. package/dist/types/UninitializedType.js +3 -3
  359. package/dist/types/UninitializedType.js.map +1 -1
  360. package/dist/types/VoidType.d.ts +4 -2
  361. package/dist/types/VoidType.js +8 -4
  362. package/dist/types/VoidType.js.map +1 -1
  363. package/dist/types/VoidType.spec.js +2 -2
  364. package/dist/types/VoidType.spec.js.map +1 -1
  365. package/dist/types/helpers.d.ts +42 -0
  366. package/dist/types/helpers.js +118 -0
  367. package/dist/types/helpers.js.map +1 -0
  368. package/dist/util.d.ts +91 -21
  369. package/dist/util.js +364 -114
  370. package/dist/util.js.map +1 -1
  371. package/dist/validators/ClassValidator.d.ts +19 -2
  372. package/dist/validators/ClassValidator.js +164 -103
  373. package/dist/validators/ClassValidator.js.map +1 -1
  374. package/package.json +30 -19
  375. package/dist/astUtils/index.d.ts +0 -7
  376. package/dist/astUtils/index.js +0 -26
  377. package/dist/astUtils/index.js.map +0 -1
  378. package/dist/lexer/index.d.ts +0 -3
  379. package/dist/lexer/index.js +0 -17
  380. package/dist/lexer/index.js.map +0 -1
  381. package/dist/parser/index.d.ts +0 -3
  382. package/dist/parser/index.js +0 -16
  383. package/dist/parser/index.js.map +0 -1
  384. package/dist/preprocessor/index.d.ts +0 -3
  385. package/dist/preprocessor/index.js +0 -16
  386. package/dist/preprocessor/index.js.map +0 -1
  387. package/dist/types/FunctionType.spec.js +0 -23
  388. package/dist/types/FunctionType.spec.js.map +0 -1
package/dist/Scope.d.ts CHANGED
@@ -1,13 +1,16 @@
1
1
  import type { CompletionItem, Position, Range } from 'vscode-languageserver';
2
2
  import { Location } from 'vscode-languageserver';
3
- import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap } from './interfaces';
4
- import type { FileLink, Program } from './Program';
5
- import type { NamespaceStatement, Statement, NewExpression, FunctionStatement, ClassStatement } from './parser';
6
- import { ParseMode } from './parser';
3
+ import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink, InheritableStatement, InheritableType, NamedTypeStatement } from './interfaces';
4
+ import type { Program } from './Program';
5
+ import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, EnumStatement, InterfaceStatement } from './parser/Statement';
6
+ import type { FunctionExpression, NewExpression } from './parser/Expression';
7
+ import { ParseMode } from './parser/Parser';
7
8
  import { Cache } from './Cache';
8
- import type { BrsFile } from './files/BrsFile';
9
+ import type { BrsFile, TokenSymbolLookup } from './files/BrsFile';
9
10
  import type { DependencyGraph, DependencyChangedEvent } from './DependencyGraph';
10
11
  import { SymbolTable } from './SymbolTable';
12
+ import type { BscType, TypeContext } from './types/BscType';
13
+ import type { Token } from './lexer/Token';
11
14
  /**
12
15
  * A class to keep track of all declarations within a given scope (like source scope, component scope)
13
16
  */
@@ -21,20 +24,44 @@ export declare class Scope {
21
24
  * Will be true when first constructed, or anytime one of its dependencies changes
22
25
  */
23
26
  isValidated: boolean;
24
- protected cache: Cache;
27
+ protected cache: Cache<any, any>;
25
28
  get dependencyGraphKey(): string;
26
29
  /**
27
30
  * A dictionary of namespaces, indexed by the lower case full name of each namespace.
28
31
  * If a namespace is declared as "NameA.NameB.NameC", there will be 3 entries in this dictionary,
29
32
  * "namea", "namea.nameb", "namea.nameb.namec"
30
33
  */
31
- get namespaceLookup(): Record<string, NamespaceContainer>;
34
+ get namespaceLookup(): Map<string, NamespaceContainer>;
32
35
  /**
33
36
  * Get the class with the specified name.
34
37
  * @param className - The class name, including the namespace of the class if possible
35
38
  * @param containingNamespace - The namespace used to resolve relative class names. (i.e. the namespace around the current statement trying to find a class)
36
39
  */
37
40
  getClass(className: string, containingNamespace?: string): ClassStatement;
41
+ /**
42
+ * Get the interface with the specified name.
43
+ * @param ifaceName - The interface name, including the namespace of the interface if possible
44
+ * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
45
+ */
46
+ getInterface(ifaceName: string, containingNamespace?: string): InterfaceStatement;
47
+ /**
48
+ * Get either the class or interface, etc. with a given name
49
+ * @param name - The name, including the namespace of the interface if possible
50
+ * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find the interface or class)
51
+ */
52
+ getNamedTypeStatement(name: string, containingNamespace?: string): NamedTypeStatement;
53
+ /**
54
+ * A cache of a map of tokens -> TokenSymbolLookups, which are the result of getSymbolTypeFromToken()
55
+ * Sometimes the lookup of symbols may take a while if there are lazyTypes or multiple tokens in a chain
56
+ * By caching the result of this lookup, subsequent lookups of the same tokens are quicker
57
+ */
58
+ get symbolCache(): Map<Token, TokenSymbolLookup>;
59
+ /**
60
+ * Get the enum with the specified name.
61
+ * @param enumName - The enum name, including the namespace if possible
62
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find an enum)
63
+ */
64
+ getEnum(enumName: string, containingNamespace?: string): EnumStatement;
38
65
  /**
39
66
  * Get a class and its containing file by the class name
40
67
  * @param className - The class name, including the namespace of the class if possible
@@ -42,16 +69,85 @@ export declare class Scope {
42
69
  */
43
70
  getClassFileLink(className: string, containingNamespace?: string): FileLink<ClassStatement>;
44
71
  /**
72
+ * Get an interface and its containing file by the interface name
73
+ * @param ifaceName - The interface name, including the namespace of the interface if possible
74
+ * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
75
+ */
76
+ getInterfaceFileLink(ifaceName: string, containingNamespace?: string): FileLink<InterfaceStatement>;
77
+ /**
78
+ * Get an Enum and its containing file by the Enum name
79
+ * @param enumName - The Enum name, including the namespace of the enum if possible
80
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find a enum)
81
+ */
82
+ getEnumFileLink(enumName: string, containingNamespace?: string): FileLink<EnumStatement>;
83
+ /**
84
+ * Get a Named Type (e.g. Class, Interface, Enum) and its containing file by the name
85
+ * @param name - The name of the type, including the namespace of the class/interface/enum, etc. if possible
86
+ * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
87
+ */
88
+ getNamedTypeFileLink(name: string, containingNamespace?: string): FileLink<NamedTypeStatement>;
89
+ /**
90
+ * Get a InheritableStatement and its containing file by the name of the interface or class
91
+ * @param name - The name of the interface or class, including the namespace of the class if possible
92
+ * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
93
+ */
94
+ getInheritableFileLink(name: string, containingNamespace?: string): FileLink<InheritableStatement>;
95
+ /**
96
+ * Gets the parent class of the given class
97
+ * @param klass - The class to get the parent of, if possible
98
+ */
99
+ getParentClass(klass: ClassStatement): ClassStatement;
100
+ /**
101
+ * Gets the parent interface of the given interface
102
+ * @param iface - The interface to get the parent of, if possible
103
+ */
104
+ getParentInterface(iface: InterfaceStatement): InterfaceStatement;
105
+ /**
106
+ * Gets the parent of an Interface or Class
107
+ * @param stmt - The class or interface to get the parent of, if possible
108
+ */
109
+ getParentStatement(stmt: InheritableStatement): InheritableStatement;
110
+ /**
45
111
  * Tests if a class exists with the specified name
46
112
  * @param className - the all-lower-case namespace-included class name
47
- * @param namespaceName - teh current namespace name
113
+ * @param namespaceName - the current namespace name
48
114
  */
49
115
  hasClass(className: string, namespaceName?: string): boolean;
116
+ /**
117
+ * Tests if an interface exists with the specified name
118
+ * @param ifaceName - the all-lower-case namespace-included interface name
119
+ * @param namespaceName - the current namespace name
120
+ */
121
+ hasInterface(ifaceName: string, namespaceName?: string): boolean;
122
+ /**
123
+ * Tests if an enum exists with the specified name
124
+ * @param enumName - the all-lower-case namespace-included enum name
125
+ * @param namespaceName - the current namespace name
126
+ */
127
+ hasEnum(enumName: string, namespaceName?: string): boolean;
128
+ /**
129
+ * Tests if a class OR an interface, etc. exists with the specified name
130
+ * @param name - the all-lower-case namespace-included class or interface name
131
+ * @param namespaceName - the current namespace name
132
+ */
133
+ hasNamedType(name: string, namespaceName?: string): boolean;
50
134
  /**
51
135
  * A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
52
136
  * The key is stored in lower case
53
137
  */
54
138
  getClassMap(): Map<string, FileLink<ClassStatement>>;
139
+ getAncestorTypeListByContext(thisType: BscType, context?: TypeContext): InheritableType[];
140
+ /**
141
+ * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
142
+ * The key is stored in lower case
143
+ */
144
+ getInterfaceMap(): Map<string, FileLink<InterfaceStatement>>;
145
+ getAncestorTypeList(className: string, functionExpression?: FunctionExpression): InheritableType[];
146
+ /**
147
+ * A dictionary of all enums in this scope. This includes namespaced enums always with their full name.
148
+ * The key is stored in lower case
149
+ */
150
+ getEnumMap(): Map<string, FileLink<EnumStatement>>;
55
151
  /**
56
152
  * The list of diagnostics found specifically for this scope. Individual file diagnostics are stored on the files themselves.
57
153
  */
@@ -83,17 +179,17 @@ export declare class Scope {
83
179
  * @param filePath can be a srcPath, a pkgPath, or a destPath (same as pkgPath but without `pkg:/`)
84
180
  * @param normalizePath should this function repair and standardize the path? Passing false should have a performance boost if you can guarantee your path is already sanitized
85
181
  */
86
- getFile(srcPath: string, normalizePath?: boolean): BrsFile | import(".").XmlFile;
182
+ getFile(srcPath: string, normalizePath?: boolean): BscFile;
87
183
  /**
88
184
  * Get the list of files referenced by this scope that are actually loaded in the program.
89
185
  * Excludes files from ancestor scopes
90
186
  */
91
- getOwnFiles(): (BrsFile | import(".").XmlFile)[];
187
+ getOwnFiles(): BscFile[];
92
188
  /**
93
189
  * Get the list of files referenced by this scope that are actually loaded in the program.
94
190
  * Includes files from this scope and all ancestor scopes
95
191
  */
96
- getAllFiles(): (BrsFile | import(".").XmlFile)[];
192
+ getAllFiles(): BscFile[];
97
193
  /**
98
194
  * Get the list of errors for this scope. It's calculated on the fly, so
99
195
  * call this sparingly.
@@ -110,6 +206,12 @@ export declare class Scope {
110
206
  * @param name
111
207
  */
112
208
  getCallableByName(name: string): import("./interfaces").Callable;
209
+ /**
210
+ * Get the global callable with the specified name.
211
+ * If there are overridden callables with the same name, the closest callable to this scope is returned
212
+ * @param name
213
+ */
214
+ getGlobalCallableByName(name: string): import("./interfaces").Callable;
113
215
  /**
114
216
  * Iterate over Brs files not shadowed by typedefs
115
217
  */
@@ -126,7 +228,7 @@ export declare class Scope {
126
228
  /**
127
229
  * Builds a tree of namespace objects
128
230
  */
129
- buildNamespaceLookup(): Record<string, NamespaceContainer>;
231
+ buildNamespaceLookup(): Map<string, NamespaceContainer>;
130
232
  getAllNamespaceStatements(): NamespaceStatement[];
131
233
  protected logDebug(...args: any[]): void;
132
234
  private _debugLogComponentName;
@@ -138,7 +240,9 @@ export declare class Scope {
138
240
  invalidate(): void;
139
241
  get symbolTable(): SymbolTable;
140
242
  private _symbolTable;
141
- private clearSymbolTable;
243
+ protected _memberTable: SymbolTable;
244
+ get memberTable(): SymbolTable;
245
+ protected clearSymbolTable(): void;
142
246
  /**
143
247
  * Builds the current symbol table for the scope, by merging the tables for all the files in this scope.
144
248
  * Also links all file symbols tables to this new table
@@ -155,27 +259,19 @@ export declare class Scope {
155
259
  * Find function parameters and function return types that are neither built-in types or known Class references
156
260
  */
157
261
  private diagnosticDetectInvalidFunctionExpressionTypes;
262
+ /**
263
+ * Find functions with either the wrong type of parameters, or the wrong number of parameters
264
+ */
158
265
  private diagnosticDetectInvalidFunctionCalls;
266
+ private addMismatchParamCountDiagnostic;
159
267
  getNewExpressions(): AugmentedNewExpression[];
160
268
  private validateClasses;
161
- /**
162
- * Detect calls to functions with the incorrect number of parameters
163
- * @param file
164
- * @param callableContainersByLowerName
165
- */
166
- private diagnosticDetectFunctionCallsWithWrongParamCount;
167
269
  /**
168
270
  * Detect local variables (vars declared within a function expression) that have the same name as scope calls
169
271
  * @param file
170
272
  * @param callableContainerMap
171
273
  */
172
274
  private diagnosticDetectShadowedLocalVars;
173
- /**
174
- * Detect calls to functions that are not defined in this scope
175
- * @param file
176
- * @param callablesByLowerName
177
- */
178
- private diagnosticDetectCallsToUnknownFunctions;
179
275
  /**
180
276
  * Create diagnostics for any duplicate function declarations
181
277
  * @param callablesByLowerName
@@ -193,7 +289,7 @@ export declare class Scope {
193
289
  * Find the file with the specified relative path
194
290
  * @param relativePath
195
291
  */
196
- protected getFileByRelativePath(relativePath: string): BrsFile | import(".").XmlFile;
292
+ protected getFileByRelativePath(relativePath: string): BscFile;
197
293
  /**
198
294
  * Determine if this file is included in this scope (excluding parent scopes)
199
295
  * @param file
@@ -217,11 +313,11 @@ export declare class Scope {
217
313
  /**
218
314
  * @param className - The name of the class (including namespace if possible)
219
315
  * @param callsiteNamespace - the name of the namespace where the call site resides (this is NOT the known namespace of the class).
220
- * This is used to help resolve non-namespaced class names that reside in the same namespac as the call site.
316
+ * This is used to help resolve non-namespaced class names that reside in the same namespace as the call site.
221
317
  */
222
318
  getClassHierarchy(className: string, callsiteNamespace?: string): FileLink<ClassStatement>[];
223
319
  }
224
- interface NamespaceContainer {
320
+ export interface NamespaceContainer {
225
321
  file: BscFile;
226
322
  fullName: string;
227
323
  nameRange: Range;
@@ -229,7 +325,8 @@ interface NamespaceContainer {
229
325
  statements: Statement[];
230
326
  classStatements: Record<string, ClassStatement>;
231
327
  functionStatements: Record<string, FunctionStatement>;
232
- namespaces: Record<string, NamespaceContainer>;
328
+ enumStatements: Map<string, EnumStatement>;
329
+ namespaces: Map<string, NamespaceContainer>;
233
330
  symbolTable: SymbolTable;
234
331
  }
235
332
  interface AugmentedNewExpression extends NewExpression {