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
package/dist/Scope.d.ts CHANGED
@@ -1,15 +1,14 @@
1
- import type { CompletionItem, Position, Range, Location } from 'vscode-languageserver';
2
- import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink, InheritableStatement, InheritableType, NamedTypeStatement } from './interfaces';
1
+ import { type CallableContainer, type BsDiagnosticWithOrigin, type CallableContainerMap, type FileLink, type Callable, type NamespaceContainer, type ScopeValidationOptions, type BsDiagnostic } from './interfaces';
3
2
  import type { Program } from './Program';
4
- import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, EnumStatement, InterfaceStatement, EnumMemberStatement, ConstStatement } from './parser/Statement';
5
- import type { FunctionExpression, NewExpression } from './parser/Expression';
6
- import { ParseMode } from './parser/Parser';
3
+ import type { NamespaceStatement, ClassStatement, EnumStatement, InterfaceStatement, EnumMemberStatement, ConstStatement } from './parser/Statement';
4
+ import { type NewExpression } from './parser/Expression';
7
5
  import { Cache } from './Cache';
8
- import type { BrsFile, TokenSymbolLookup } from './files/BrsFile';
6
+ import type { BrsFile } from './files/BrsFile';
9
7
  import type { DependencyGraph, DependencyChangedEvent } from './DependencyGraph';
10
8
  import { SymbolTable } from './SymbolTable';
9
+ import type { BscFile } from './files/BscFile';
10
+ import { type AstNode, type Statement } from './parser/AstNode';
11
11
  import type { Token } from './lexer/Token';
12
- import type { BscType, TypeContext } from './types/BscType';
13
12
  /**
14
13
  * A class to keep track of all declarations within a given scope (like source scope, component scope)
15
14
  */
@@ -22,7 +21,7 @@ export declare class Scope {
22
21
  * Indicates whether this scope needs to be validated.
23
22
  * Will be true when first constructed, or anytime one of its dependencies changes
24
23
  */
25
- isValidated: boolean;
24
+ readonly isValidated: boolean;
26
25
  protected cache: Cache<any, any>;
27
26
  get dependencyGraphKey(): string;
28
27
  /**
@@ -31,6 +30,14 @@ export declare class Scope {
31
30
  * "namea", "namea.nameb", "namea.nameb.namec"
32
31
  */
33
32
  get namespaceLookup(): Map<string, NamespaceContainer>;
33
+ /**
34
+ * Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
35
+ */
36
+ getNamespace(name: string, containingNamespace?: string): NamespaceContainer;
37
+ /**
38
+ * Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
39
+ */
40
+ getNamespacesWithRoot(rootName: string, containingNamespace?: string): NamespaceContainer[];
34
41
  /**
35
42
  * Get the class with the specified name.
36
43
  * @param className - The class name, including the namespace of the class if possible
@@ -43,18 +50,6 @@ export declare class Scope {
43
50
  * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
44
51
  */
45
52
  getInterface(ifaceName: string, containingNamespace?: string): InterfaceStatement;
46
- /**
47
- * Get either the class or interface, etc. with a given name
48
- * @param name - The name, including the namespace of the interface if possible
49
- * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find the interface or class)
50
- */
51
- getNamedTypeStatement(name: string, containingNamespace?: string): NamedTypeStatement;
52
- /**
53
- * A cache of a map of tokens -> TokenSymbolLookups, which are the result of getSymbolTypeFromToken()
54
- * Sometimes the lookup of symbols may take a while if there are lazyTypes or multiple tokens in a chain
55
- * By caching the result of this lookup, subsequent lookups of the same tokens are quicker
56
- */
57
- get symbolCache(): Map<Token, TokenSymbolLookup>;
58
53
  /**
59
54
  * Get the enum with the specified name.
60
55
  * @param enumName - The enum name, including the namespace if possible
@@ -68,10 +63,10 @@ export declare class Scope {
68
63
  */
69
64
  getClassFileLink(className: string, containingNamespace?: string): FileLink<ClassStatement>;
70
65
  /**
71
- * Get an interface and its containing file by the interface name
72
- * @param ifaceName - The interface name, including the namespace of the interface if possible
73
- * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
74
- */
66
+ * Get an interface and its containing file by the interface name
67
+ * @param ifaceName - The interface name, including the namespace of the interface if possible
68
+ * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
69
+ */
75
70
  getInterfaceFileLink(ifaceName: string, containingNamespace?: string): FileLink<InterfaceStatement>;
76
71
  /**
77
72
  * Get an Enum and its containing file by the Enum name
@@ -80,75 +75,52 @@ export declare class Scope {
80
75
  */
81
76
  getEnumFileLink(enumName: string, containingNamespace?: string): FileLink<EnumStatement>;
82
77
  /**
83
- * Get a Named Type (e.g. Class, Interface, Enum) and its containing file by the name
84
- * @param name - The name of the type, including the namespace of the class/interface/enum, etc. if possible
85
- * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
86
- */
87
- getNamedTypeFileLink(name: string, containingNamespace?: string): FileLink<NamedTypeStatement>;
88
- /**
89
- * Get a InheritableStatement and its containing file by the name of the interface or class
90
- * @param name - The name of the interface or class, including the namespace of the class if possible
91
- * @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
92
- */
93
- getInheritableFileLink(name: string, containingNamespace?: string): FileLink<InheritableStatement>;
94
- /**
95
- * Gets the parent class of the given class
96
- * @param klass - The class to get the parent of, if possible
78
+ * Get an Enum and its containing file by the Enum name
79
+ * @param enumMemberName - 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)
97
81
  */
98
- getParentClass(klass: ClassStatement): ClassStatement;
82
+ getEnumMemberFileLink(enumMemberName: string, containingNamespace?: string): FileLink<EnumMemberStatement>;
99
83
  /**
100
84
  * Get a constant and its containing file by the constant name
101
85
  * @param constName - The constant name, including the namespace of the constant if possible
102
86
  * @param containingNamespace - The namespace used to resolve relative constant names. (i.e. the namespace around the current statement trying to find a constant)
103
87
  */
104
88
  getConstFileLink(constName: string, containingNamespace?: string): FileLink<ConstStatement>;
89
+ getAllFileLinks(name: string, containingNamespace?: string): FileLink<Statement>[];
105
90
  /**
106
- * Gets the parent interface of the given interface
107
- * @param iface - The interface to get the parent of, if possible
91
+ * Get a map of all enums by their member name.
92
+ * The keys are lower-case fully-qualified paths to the enum and its member. For example:
93
+ * namespace.enum.value
108
94
  */
109
- getParentInterface(iface: InterfaceStatement): InterfaceStatement;
110
- /**
111
- * Gets the parent of an Interface or Class
112
- * @param stmt - The class or interface to get the parent of, if possible
113
- */
114
- getParentStatement(stmt: InheritableStatement): InheritableStatement;
115
95
  getEnumMemberMap(): Map<string, EnumMemberStatement>;
116
96
  /**
117
- * Tests if a class exists with the specified name
118
- * @param className - the all-lower-case namespace-included class name
119
- * @param namespaceName - the current namespace name
120
- */
97
+ * Tests if a class exists with the specified name
98
+ * @param className - the all-lower-case namespace-included class name
99
+ * @param namespaceName - The namespace used to resolve relative class names. (i.e. the namespace around the current statement trying to find a class)
100
+ */
121
101
  hasClass(className: string, namespaceName?: string): boolean;
122
102
  /**
123
- * Tests if an interface exists with the specified name
124
- * @param ifaceName - the all-lower-case namespace-included interface name
125
- * @param namespaceName - the current namespace name
126
- */
103
+ * Tests if an interface exists with the specified name
104
+ * @param ifaceName - the all-lower-case namespace-included interface name
105
+ * @param namespaceName - the current namespace name
106
+ */
127
107
  hasInterface(ifaceName: string, namespaceName?: string): boolean;
128
108
  /**
129
- * Tests if an enum exists with the specified name
130
- * @param enumName - the all-lower-case namespace-included enum name
131
- * @param namespaceName - the current namespace name
132
- */
133
- hasEnum(enumName: string, namespaceName?: string): boolean;
134
- /**
135
- * Tests if a class OR an interface, etc. exists with the specified name
136
- * @param name - the all-lower-case namespace-included class or interface name
109
+ * Tests if an enum exists with the specified name
110
+ * @param enumName - the all-lower-case namespace-included enum name
137
111
  * @param namespaceName - the current namespace name
138
112
  */
139
- hasNamedType(name: string, namespaceName?: string): boolean;
113
+ hasEnum(enumName: string, namespaceName?: string): boolean;
140
114
  /**
141
115
  * A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
142
116
  * The key is stored in lower case
143
117
  */
144
118
  getClassMap(): Map<string, FileLink<ClassStatement>>;
145
- getAncestorTypeListByContext(thisType: BscType, context?: TypeContext): InheritableType[];
146
119
  /**
147
- * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
148
- * The key is stored in lower case
149
- */
120
+ * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
121
+ * The key is stored in lower case
122
+ */
150
123
  getInterfaceMap(): Map<string, FileLink<InterfaceStatement>>;
151
- getAncestorTypeList(className: string, functionExpression?: FunctionExpression): InheritableType[];
152
124
  /**
153
125
  * A dictionary of all enums in this scope. This includes namespaced enums always with their full name.
154
126
  * The key is stored in lower case
@@ -162,7 +134,7 @@ export declare class Scope {
162
134
  /**
163
135
  * The list of diagnostics found specifically for this scope. Individual file diagnostics are stored on the files themselves.
164
136
  */
165
- protected diagnostics: BsDiagnostic[];
137
+ protected diagnostics: BsDiagnosticWithOrigin[];
166
138
  protected onDependenciesChanged(event: DependencyChangedEvent): void;
167
139
  /**
168
140
  * Clean up all event handles
@@ -178,7 +150,7 @@ export declare class Scope {
178
150
  * XmlScope overrides this to return the parent xml scope if available.
179
151
  * For globalScope this will return null.
180
152
  */
181
- getParentScope(): Scope;
153
+ getParentScope(): Scope | null;
182
154
  private dependencyGraph;
183
155
  /**
184
156
  * An unsubscribe function for the dependencyGraph subscription
@@ -186,11 +158,11 @@ export declare class Scope {
186
158
  private unsubscribeFromDependencyGraph;
187
159
  attachDependencyGraph(dependencyGraph: DependencyGraph): void;
188
160
  /**
189
- * Get the file with the specified pkgPath
190
- * @param filePath can be a srcPath, a pkgPath, or a destPath (same as pkgPath but without `pkg:/`)
161
+ * Get the file from this scope with the given path.
162
+ * @param filePath can be a srcPath or destPath
191
163
  * @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
192
164
  */
193
- getFile(srcPath: string, normalizePath?: boolean): BscFile;
165
+ getFile<TFile extends BscFile>(filePath: string, normalizePath?: boolean): TFile;
194
166
  /**
195
167
  * Get the list of files referenced by this scope that are actually loaded in the program.
196
168
  * Excludes files from ancestor scopes
@@ -202,11 +174,10 @@ export declare class Scope {
202
174
  */
203
175
  getAllFiles(): BscFile[];
204
176
  /**
205
- * Get the list of errors for this scope. It's calculated on the fly, so
206
- * call this sparingly.
177
+ * Get the list of errors for this scope. It's calculated on the fly, so call this sparingly.
207
178
  */
208
179
  getDiagnostics(): BsDiagnostic[];
209
- addDiagnostics(diagnostics: BsDiagnostic[]): void;
180
+ addDiagnostics(diagnostics: BsDiagnosticWithOrigin[]): void;
210
181
  /**
211
182
  * Get the list of callables available in this scope (either declared in this scope or in a parent scope)
212
183
  */
@@ -214,15 +185,9 @@ export declare class Scope {
214
185
  /**
215
186
  * Get the callable with the specified name.
216
187
  * If there are overridden callables with the same name, the closest callable to this scope is returned
217
- * @param name
218
188
  */
219
- getCallableByName(name: string): import("./interfaces").Callable;
220
- /**
221
- * Get the global callable with the specified name.
222
- * If there are overridden callables with the same name, the closest callable to this scope is returned
223
- * @param name
224
- */
225
- getGlobalCallableByName(name: string): import("./interfaces").Callable;
189
+ getCallableByName(name: string): Callable;
190
+ getCallableMap(): Map<string, Callable>;
226
191
  /**
227
192
  * Iterate over Brs files not shadowed by typedefs
228
193
  */
@@ -239,26 +204,46 @@ export declare class Scope {
239
204
  /**
240
205
  * Builds a tree of namespace objects
241
206
  */
242
- buildNamespaceLookup(): Map<string, NamespaceContainer>;
207
+ buildNamespaceLookup(options?: {
208
+ okToCache?: boolean;
209
+ }): Map<string, NamespaceContainer>;
243
210
  getAllNamespaceStatements(): NamespaceStatement[];
244
211
  protected logDebug(...args: any[]): void;
245
212
  private _debugLogComponentName;
246
- validate(): void;
247
- getCallableContainerMap(): CallableContainerMap;
213
+ validate(validationOptions?: ScopeValidationOptions): void;
248
214
  protected _validate(callableContainerMap: CallableContainerMap): void;
215
+ clearAstSegmentDiagnostics(astSegment: AstNode): void;
216
+ clearAstSegmentDiagnosticsByFile(file: BscFile): void;
217
+ clearScopeLevelDiagnostics(): void;
249
218
  /**
250
219
  * Mark this scope as invalid, which means its `validate()` function needs to be called again before use.
251
220
  */
252
221
  invalidate(): void;
253
- get symbolTable(): any;
254
- protected _memberTable: SymbolTable;
255
- get memberTable(): SymbolTable;
256
- protected clearSymbolTable(): void;
257
- /**
258
- * Builds the current symbol table for the scope, by merging the tables for all the files in this scope.
259
- * Also links all file symbols tables to this new table
260
- * This will only rebuilt if the symbol table has not been built before
261
- */
222
+ get symbolTable(): SymbolTable;
223
+ /**
224
+ * A list of functions that will be called whenever `unlinkSymbolTable` is called
225
+ */
226
+ private linkSymbolTableDisposables;
227
+ private symbolsAddedDuringLinking;
228
+ /**
229
+ * Builds the current symbol table for the scope, by merging the tables for all the files in this scope.
230
+ * Also links all file symbols tables to this new table
231
+ * This will only rebuilt if the symbol table has not been built before
232
+ *
233
+ * Tree of symbol tables:
234
+ * ```
235
+ * Global Scope Symbol Table
236
+ * - Source Scope Symbol Table :: Aggregate Namespaces Symbol Table (Siblings)
237
+ * - File 1 Symbol Table
238
+ * - File 2 Symbol Table
239
+ * - Component A Scope Symbol Table :: Aggregate Namespaces Symbol Table (Siblings)
240
+ * - File 1 Symbol Table
241
+ * - File 2 Symbol Table
242
+ * - Component B Scope Symbol Table :: Aggregate Namespaces Symbol Table (Siblings)
243
+ * - File 1 Symbol Table
244
+ * - File 2 Symbol Table
245
+ * ```
246
+ */
262
247
  linkSymbolTable(): void;
263
248
  unlinkSymbolTable(): void;
264
249
  private detectVariableNamespaceCollisions;
@@ -266,21 +251,16 @@ export declare class Scope {
266
251
  * Find various function collisions
267
252
  */
268
253
  private diagnosticDetectFunctionCollisions;
269
- /**
270
- * Find function parameters and function return types that are neither built-in types or known Class references
271
- */
272
- private diagnosticDetectInvalidFunctionExpressionTypes;
254
+ private detectNameCollisions;
255
+ validateNameCollision(file: BrsFile, node: AstNode, nameIdentifier: Token): void;
273
256
  getNewExpressions(): AugmentedNewExpression[];
274
257
  private validateClasses;
275
258
  /**
276
- * Detect local variables (vars declared within a function expression) that have the same name as scope calls
277
- * @param file
278
- * @param callableContainerMap
259
+ * Detect local variables (function scope) that have the same name as scope calls
279
260
  */
280
261
  private diagnosticDetectShadowedLocalVars;
281
262
  /**
282
263
  * Create diagnostics for any duplicate function declarations
283
- * @param callablesByLowerName
284
264
  */
285
265
  private diagnosticFindDuplicateFunctionDeclarations;
286
266
  /**
@@ -293,50 +273,19 @@ export declare class Scope {
293
273
  private diagnosticValidateScriptImportPaths;
294
274
  /**
295
275
  * Find the file with the specified relative path
296
- * @param relativePath
297
276
  */
298
277
  protected getFileByRelativePath(relativePath: string): BscFile;
299
278
  /**
300
279
  * Determine if this file is included in this scope (excluding parent scopes)
301
- * @param file
302
280
  */
303
281
  hasFile(file: BscFile): boolean;
304
- /**
305
- * Get all callables as completionItems
306
- */
307
- getCallablesAsCompletions(parseMode: ParseMode): CompletionItem[];
308
- createCompletionFromCallable(callableContainer: CallableContainer): CompletionItem;
309
- createCompletionFromFunctionStatement(statement: FunctionStatement): CompletionItem;
310
- /**
311
- * Get the definition (where was this thing first defined) of the symbol under the position
312
- */
313
- getDefinition(file: BscFile, position: Position): Location[];
314
- /**
315
- * Scan all files for property names, and return them as completions
316
- */
317
- getPropertyNameCompletions(): CompletionItem[];
318
- getAllClassMemberCompletions(): Map<string, CompletionItem>;
319
282
  /**
320
283
  * @param className - The name of the class (including namespace if possible)
321
284
  * @param callsiteNamespace - the name of the namespace where the call site resides (this is NOT the known namespace of the class).
322
- * This is used to help resolve non-namespaced class names that reside in the same namespace as the call site.
285
+ * This is used to help resolve non-namespaced class names that reside in the same namespac as the call site.
323
286
  */
324
287
  getClassHierarchy(className: string, callsiteNamespace?: string): FileLink<ClassStatement>[];
325
288
  }
326
- export interface NamespaceContainer {
327
- file: BscFile;
328
- fullName: string;
329
- nameRange: Range;
330
- lastPartName: string;
331
- statements: Statement[];
332
- classStatements: Record<string, ClassStatement>;
333
- interfaceStatements: Record<string, InterfaceStatement>;
334
- functionStatements: Record<string, FunctionStatement>;
335
- enumStatements: Map<string, EnumStatement>;
336
- constStatements: Map<string, ConstStatement>;
337
- namespaces: Map<string, NamespaceContainer>;
338
- symbolTable: SymbolTable;
339
- }
340
289
  interface AugmentedNewExpression extends NewExpression {
341
290
  file: BscFile;
342
291
  }