brighterscript 1.0.0-alpha.23 → 1.0.0-alpha.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/CHANGELOG.md +585 -218
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +41 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +152 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +39 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +7 -0
  17. package/dist/CacheVerifier.js +20 -0
  18. package/dist/CacheVerifier.js.map +1 -0
  19. package/dist/CodeActionUtil.d.ts +3 -3
  20. package/dist/CodeActionUtil.js.map +1 -1
  21. package/dist/CommentFlagProcessor.d.ts +3 -2
  22. package/dist/CommentFlagProcessor.js +5 -4
  23. package/dist/CommentFlagProcessor.js.map +1 -1
  24. package/dist/DependencyGraph.d.ts +3 -2
  25. package/dist/DependencyGraph.js +11 -10
  26. package/dist/DependencyGraph.js.map +1 -1
  27. package/dist/DiagnosticCollection.js +9 -5
  28. package/dist/DiagnosticCollection.js.map +1 -1
  29. package/dist/DiagnosticFilterer.d.ts +1 -0
  30. package/dist/DiagnosticFilterer.js +5 -3
  31. package/dist/DiagnosticFilterer.js.map +1 -1
  32. package/dist/DiagnosticMessages.d.ts +79 -15
  33. package/dist/DiagnosticMessages.js +134 -21
  34. package/dist/DiagnosticMessages.js.map +1 -1
  35. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  36. package/dist/DiagnosticSeverityAdjuster.js +41 -0
  37. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  38. package/dist/FunctionScope.d.ts +28 -0
  39. package/dist/FunctionScope.js +52 -0
  40. package/dist/FunctionScope.js.map +1 -0
  41. package/dist/KeyedThrottler.d.ts +3 -3
  42. package/dist/KeyedThrottler.js +3 -3
  43. package/dist/KeyedThrottler.js.map +1 -1
  44. package/dist/LanguageServer.d.ts +23 -11
  45. package/dist/LanguageServer.js +222 -87
  46. package/dist/LanguageServer.js.map +1 -1
  47. package/dist/Logger.d.ts +3 -2
  48. package/dist/Logger.js +11 -3
  49. package/dist/Logger.js.map +1 -1
  50. package/dist/PluginInterface.d.ts +21 -3
  51. package/dist/PluginInterface.js +74 -6
  52. package/dist/PluginInterface.js.map +1 -1
  53. package/dist/Program.d.ts +162 -81
  54. package/dist/Program.js +903 -732
  55. package/dist/Program.js.map +1 -1
  56. package/dist/ProgramBuilder.d.ts +22 -12
  57. package/dist/ProgramBuilder.js +132 -104
  58. package/dist/ProgramBuilder.js.map +1 -1
  59. package/dist/Scope.d.ts +95 -134
  60. package/dist/Scope.js +477 -551
  61. package/dist/Scope.js.map +1 -1
  62. package/dist/Stopwatch.js +1 -1
  63. package/dist/Stopwatch.js.map +1 -1
  64. package/dist/SymbolTable.d.ts +95 -29
  65. package/dist/SymbolTable.js +256 -102
  66. package/dist/SymbolTable.js.map +1 -1
  67. package/dist/Throttler.d.ts +12 -0
  68. package/dist/Throttler.js +39 -0
  69. package/dist/Throttler.js.map +1 -1
  70. package/dist/Watcher.d.ts +0 -3
  71. package/dist/Watcher.js +0 -3
  72. package/dist/Watcher.js.map +1 -1
  73. package/dist/XmlScope.d.ts +4 -6
  74. package/dist/XmlScope.js +74 -68
  75. package/dist/XmlScope.js.map +1 -1
  76. package/dist/astUtils/CachedLookups.d.ts +48 -0
  77. package/dist/astUtils/CachedLookups.js +323 -0
  78. package/dist/astUtils/CachedLookups.js.map +1 -0
  79. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +9 -5
  80. package/dist/astUtils/{AstEditor.js → Editor.js} +10 -4
  81. package/dist/astUtils/Editor.js.map +1 -0
  82. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +68 -64
  83. package/dist/astUtils/Editor.spec.js.map +1 -0
  84. package/dist/astUtils/creators.d.ts +10 -10
  85. package/dist/astUtils/creators.js +26 -16
  86. package/dist/astUtils/creators.js.map +1 -1
  87. package/dist/astUtils/creators.spec.js +5 -5
  88. package/dist/astUtils/creators.spec.js.map +1 -1
  89. package/dist/astUtils/reflection.d.ts +132 -100
  90. package/dist/astUtils/reflection.js +225 -166
  91. package/dist/astUtils/reflection.js.map +1 -1
  92. package/dist/astUtils/reflection.spec.js +208 -126
  93. package/dist/astUtils/reflection.spec.js.map +1 -1
  94. package/dist/astUtils/stackedVisitor.spec.js +12 -12
  95. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  96. package/dist/astUtils/visitors.d.ts +54 -35
  97. package/dist/astUtils/visitors.js +29 -3
  98. package/dist/astUtils/visitors.js.map +1 -1
  99. package/dist/astUtils/visitors.spec.js +178 -33
  100. package/dist/astUtils/visitors.spec.js.map +1 -1
  101. package/dist/astUtils/xml.d.ts +9 -9
  102. package/dist/astUtils/xml.js +9 -9
  103. package/dist/astUtils/xml.js.map +1 -1
  104. package/dist/bscPlugin/BscPlugin.d.ts +12 -2
  105. package/dist/bscPlugin/BscPlugin.js +41 -3
  106. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  107. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  108. package/dist/bscPlugin/CallExpressionInfo.js +131 -0
  109. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  110. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  111. package/dist/bscPlugin/FileWriter.js +24 -0
  112. package/dist/bscPlugin/FileWriter.js.map +1 -0
  113. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  114. package/dist/bscPlugin/SignatureHelpUtil.js +135 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +1 -1
  117. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +21 -12
  118. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  119. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +86 -12
  120. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  121. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +57 -0
  122. package/dist/bscPlugin/completions/CompletionsProcessor.js +544 -0
  123. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  124. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
  125. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  126. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  127. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  128. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  129. package/dist/bscPlugin/hover/HoverProcessor.d.ts +17 -0
  130. package/dist/bscPlugin/hover/HoverProcessor.js +188 -0
  131. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  132. package/dist/bscPlugin/hover/HoverProcessor.spec.js +513 -0
  133. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
  134. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +3 -1
  135. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +102 -29
  136. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  137. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +167 -6
  138. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  139. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  140. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  141. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  142. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  143. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  144. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  145. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  146. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  147. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  148. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +16 -0
  149. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +123 -0
  150. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  151. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  152. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  153. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  154. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  155. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  156. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  157. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +22 -1
  158. package/dist/bscPlugin/validation/BrsFileValidator.js +316 -29
  159. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  160. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
  161. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +264 -0
  162. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
  163. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  164. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  165. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  166. package/dist/bscPlugin/validation/ScopeValidator.d.ts +56 -8
  167. package/dist/bscPlugin/validation/ScopeValidator.js +514 -116
  168. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  169. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  170. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2454 -0
  171. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  172. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  173. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  174. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  175. package/dist/cli.js +107 -8
  176. package/dist/cli.js.map +1 -1
  177. package/dist/deferred.d.ts +3 -3
  178. package/dist/deferred.js.map +1 -1
  179. package/dist/diagnosticUtils.d.ts +8 -2
  180. package/dist/diagnosticUtils.js +47 -17
  181. package/dist/diagnosticUtils.js.map +1 -1
  182. package/dist/examples/plugins/removePrint.js +8 -10
  183. package/dist/examples/plugins/removePrint.js.map +1 -1
  184. package/dist/files/AssetFile.d.ts +26 -0
  185. package/dist/files/AssetFile.js +26 -0
  186. package/dist/files/AssetFile.js.map +1 -0
  187. package/dist/files/BrsFile.Class.spec.js +529 -486
  188. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  189. package/dist/files/BrsFile.d.ts +124 -112
  190. package/dist/files/BrsFile.js +819 -1131
  191. package/dist/files/BrsFile.js.map +1 -1
  192. package/dist/files/BrsFile.spec.js +1869 -1277
  193. package/dist/files/BrsFile.spec.js.map +1 -1
  194. package/dist/files/BscFile.d.ts +104 -0
  195. package/dist/files/BscFile.js +16 -0
  196. package/dist/files/BscFile.js.map +1 -0
  197. package/dist/files/Factory.d.ts +25 -0
  198. package/dist/files/Factory.js +22 -0
  199. package/dist/files/Factory.js.map +1 -0
  200. package/dist/files/LazyFileData.d.ts +20 -0
  201. package/dist/files/LazyFileData.js +54 -0
  202. package/dist/files/LazyFileData.js.map +1 -0
  203. package/dist/files/LazyFileData.spec.d.ts +1 -0
  204. package/dist/files/LazyFileData.spec.js +27 -0
  205. package/dist/files/LazyFileData.spec.js.map +1 -0
  206. package/dist/files/XmlFile.d.ts +70 -32
  207. package/dist/files/XmlFile.js +106 -117
  208. package/dist/files/XmlFile.js.map +1 -1
  209. package/dist/files/XmlFile.spec.js +325 -262
  210. package/dist/files/XmlFile.spec.js.map +1 -1
  211. package/dist/files/tests/imports.spec.js +49 -41
  212. package/dist/files/tests/imports.spec.js.map +1 -1
  213. package/dist/files/tests/optionalChaning.spec.js +104 -40
  214. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  215. package/dist/globalCallables.js +16 -18
  216. package/dist/globalCallables.js.map +1 -1
  217. package/dist/index.d.ts +13 -2
  218. package/dist/index.js +15 -2
  219. package/dist/index.js.map +1 -1
  220. package/dist/interfaces.d.ts +440 -150
  221. package/dist/interfaces.js +27 -0
  222. package/dist/interfaces.js.map +1 -1
  223. package/dist/lexer/Character.spec.js +5 -5
  224. package/dist/lexer/Character.spec.js.map +1 -1
  225. package/dist/lexer/Lexer.d.ts +12 -5
  226. package/dist/lexer/Lexer.js +28 -13
  227. package/dist/lexer/Lexer.js.map +1 -1
  228. package/dist/lexer/Lexer.spec.js +187 -134
  229. package/dist/lexer/Lexer.spec.js.map +1 -1
  230. package/dist/lexer/Token.d.ts +9 -1
  231. package/dist/lexer/Token.js +9 -1
  232. package/dist/lexer/Token.js.map +1 -1
  233. package/dist/lexer/TokenKind.d.ts +9 -0
  234. package/dist/lexer/TokenKind.js +30 -5
  235. package/dist/lexer/TokenKind.js.map +1 -1
  236. package/dist/parser/AstNode.d.ts +162 -0
  237. package/dist/parser/AstNode.js +225 -0
  238. package/dist/parser/AstNode.js.map +1 -0
  239. package/dist/parser/AstNode.spec.d.ts +1 -0
  240. package/dist/parser/AstNode.spec.js +165 -0
  241. package/dist/parser/AstNode.spec.js.map +1 -0
  242. package/dist/parser/BrsTranspileState.d.ts +4 -7
  243. package/dist/parser/BrsTranspileState.js +4 -12
  244. package/dist/parser/BrsTranspileState.js.map +1 -1
  245. package/dist/parser/Expression.d.ts +126 -167
  246. package/dist/parser/Expression.js +524 -394
  247. package/dist/parser/Expression.js.map +1 -1
  248. package/dist/parser/Parser.Class.spec.js +152 -146
  249. package/dist/parser/Parser.Class.spec.js.map +1 -1
  250. package/dist/parser/Parser.d.ts +45 -196
  251. package/dist/parser/Parser.js +470 -926
  252. package/dist/parser/Parser.js.map +1 -1
  253. package/dist/parser/Parser.spec.d.ts +3 -1
  254. package/dist/parser/Parser.spec.js +1034 -805
  255. package/dist/parser/Parser.spec.js.map +1 -1
  256. package/dist/parser/SGParser.d.ts +9 -8
  257. package/dist/parser/SGParser.js +10 -8
  258. package/dist/parser/SGParser.js.map +1 -1
  259. package/dist/parser/SGParser.spec.js +27 -38
  260. package/dist/parser/SGParser.spec.js.map +1 -1
  261. package/dist/parser/SGTypes.d.ts +98 -35
  262. package/dist/parser/SGTypes.js +169 -99
  263. package/dist/parser/SGTypes.js.map +1 -1
  264. package/dist/parser/Statement.d.ts +208 -122
  265. package/dist/parser/Statement.js +599 -364
  266. package/dist/parser/Statement.js.map +1 -1
  267. package/dist/parser/Statement.spec.js +45 -21
  268. package/dist/parser/Statement.spec.js.map +1 -1
  269. package/dist/parser/TranspileState.d.ts +1 -1
  270. package/dist/parser/TranspileState.js +7 -12
  271. package/dist/parser/TranspileState.js.map +1 -1
  272. package/dist/parser/tests/Parser.spec.js +3 -2
  273. package/dist/parser/tests/Parser.spec.js.map +1 -1
  274. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  275. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  276. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  277. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  278. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  279. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  280. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  281. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  282. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  283. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  284. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  285. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  286. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +61 -20
  287. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  288. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  289. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  290. package/dist/parser/tests/expression/Call.spec.js +129 -21
  291. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  292. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  293. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  294. package/dist/parser/tests/expression/Function.spec.js +36 -36
  295. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  296. package/dist/parser/tests/expression/Indexing.spec.js +67 -22
  297. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  298. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  299. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  300. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +123 -81
  301. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  302. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  303. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  304. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  305. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  306. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  307. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  308. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  309. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  310. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  311. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  312. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +221 -81
  313. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  314. package/dist/parser/tests/expression/TernaryExpression.spec.js +287 -105
  315. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  316. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  317. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  318. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  319. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  320. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  321. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  322. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  323. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  324. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
  325. package/dist/parser/tests/statement/ConstStatement.spec.js +262 -0
  326. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
  327. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  328. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  329. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  330. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  331. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  332. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  333. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/Enum.spec.js +111 -300
  335. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/For.spec.js +9 -10
  337. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  339. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/Function.spec.js +44 -35
  341. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  343. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  345. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  347. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  349. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  351. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/PrintStatement.spec.js +107 -90
  353. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  355. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/Set.spec.js +48 -35
  357. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  359. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  360. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  361. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  362. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  363. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  364. package/dist/preprocessor/Manifest.d.ts +1 -1
  365. package/dist/preprocessor/Manifest.js +3 -3
  366. package/dist/preprocessor/Manifest.js.map +1 -1
  367. package/dist/preprocessor/Manifest.spec.js +8 -8
  368. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  369. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  370. package/dist/preprocessor/Preprocessor.js +15 -11
  371. package/dist/preprocessor/Preprocessor.js.map +1 -1
  372. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  373. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  374. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  375. package/dist/preprocessor/PreprocessorParser.js +7 -1
  376. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  377. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  378. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  379. package/dist/roku-types/data.json +6544 -10519
  380. package/dist/roku-types/index.d.ts +662 -1934
  381. package/dist/types/ArrayType.d.ts +10 -9
  382. package/dist/types/ArrayType.js +65 -60
  383. package/dist/types/ArrayType.js.map +1 -1
  384. package/dist/types/ArrayType.spec.js +36 -68
  385. package/dist/types/ArrayType.spec.js.map +1 -1
  386. package/dist/types/AssociativeArrayType.d.ts +11 -0
  387. package/dist/types/AssociativeArrayType.js +52 -0
  388. package/dist/types/AssociativeArrayType.js.map +1 -0
  389. package/dist/types/BaseFunctionType.d.ts +9 -0
  390. package/dist/types/BaseFunctionType.js +25 -0
  391. package/dist/types/BaseFunctionType.js.map +1 -0
  392. package/dist/types/BooleanType.d.ts +8 -5
  393. package/dist/types/BooleanType.js +14 -7
  394. package/dist/types/BooleanType.js.map +1 -1
  395. package/dist/types/BooleanType.spec.js +10 -6
  396. package/dist/types/BooleanType.spec.js.map +1 -1
  397. package/dist/types/BscType.d.ts +32 -21
  398. package/dist/types/BscType.js +118 -21
  399. package/dist/types/BscType.js.map +1 -1
  400. package/dist/types/BscTypeKind.d.ts +25 -0
  401. package/dist/types/BscTypeKind.js +30 -0
  402. package/dist/types/BscTypeKind.js.map +1 -0
  403. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  404. package/dist/types/BuiltInInterfaceAdder.js +164 -0
  405. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  406. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  407. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  408. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  409. package/dist/types/ClassType.d.ts +17 -0
  410. package/dist/types/ClassType.js +58 -0
  411. package/dist/types/ClassType.js.map +1 -0
  412. package/dist/types/ClassType.spec.d.ts +1 -0
  413. package/dist/types/ClassType.spec.js +77 -0
  414. package/dist/types/ClassType.spec.js.map +1 -0
  415. package/dist/types/ComponentType.d.ts +26 -0
  416. package/dist/types/ComponentType.js +83 -0
  417. package/dist/types/ComponentType.js.map +1 -0
  418. package/dist/types/DoubleType.d.ts +8 -5
  419. package/dist/types/DoubleType.js +18 -16
  420. package/dist/types/DoubleType.js.map +1 -1
  421. package/dist/types/DoubleType.spec.js +12 -6
  422. package/dist/types/DoubleType.spec.js.map +1 -1
  423. package/dist/types/DynamicType.d.ts +10 -5
  424. package/dist/types/DynamicType.js +16 -4
  425. package/dist/types/DynamicType.js.map +1 -1
  426. package/dist/types/DynamicType.spec.js +16 -5
  427. package/dist/types/DynamicType.spec.js.map +1 -1
  428. package/dist/types/EnumType.d.ts +30 -12
  429. package/dist/types/EnumType.js +43 -17
  430. package/dist/types/EnumType.js.map +1 -1
  431. package/dist/types/EnumType.spec.d.ts +1 -0
  432. package/dist/types/EnumType.spec.js +33 -0
  433. package/dist/types/EnumType.spec.js.map +1 -0
  434. package/dist/types/FloatType.d.ts +8 -5
  435. package/dist/types/FloatType.js +18 -16
  436. package/dist/types/FloatType.js.map +1 -1
  437. package/dist/types/FloatType.spec.js +4 -6
  438. package/dist/types/FloatType.spec.js.map +1 -1
  439. package/dist/types/FunctionType.d.ts +13 -8
  440. package/dist/types/FunctionType.js +30 -14
  441. package/dist/types/FunctionType.js.map +1 -1
  442. package/dist/types/InheritableType.d.ts +28 -0
  443. package/dist/types/InheritableType.js +152 -0
  444. package/dist/types/InheritableType.js.map +1 -0
  445. package/dist/types/IntegerType.d.ts +8 -5
  446. package/dist/types/IntegerType.js +18 -16
  447. package/dist/types/IntegerType.js.map +1 -1
  448. package/dist/types/IntegerType.spec.js +8 -6
  449. package/dist/types/IntegerType.spec.js.map +1 -1
  450. package/dist/types/InterfaceType.d.ts +12 -13
  451. package/dist/types/InterfaceType.js +20 -48
  452. package/dist/types/InterfaceType.js.map +1 -1
  453. package/dist/types/InterfaceType.spec.js +90 -56
  454. package/dist/types/InterfaceType.spec.js.map +1 -1
  455. package/dist/types/InvalidType.d.ts +7 -5
  456. package/dist/types/InvalidType.js +13 -7
  457. package/dist/types/InvalidType.js.map +1 -1
  458. package/dist/types/InvalidType.spec.js +8 -6
  459. package/dist/types/InvalidType.spec.js.map +1 -1
  460. package/dist/types/LongIntegerType.d.ts +8 -5
  461. package/dist/types/LongIntegerType.js +17 -15
  462. package/dist/types/LongIntegerType.js.map +1 -1
  463. package/dist/types/LongIntegerType.spec.js +10 -6
  464. package/dist/types/LongIntegerType.spec.js.map +1 -1
  465. package/dist/types/NamespaceType.d.ts +12 -0
  466. package/dist/types/NamespaceType.js +28 -0
  467. package/dist/types/NamespaceType.js.map +1 -0
  468. package/dist/types/ObjectType.d.ts +9 -8
  469. package/dist/types/ObjectType.js +21 -11
  470. package/dist/types/ObjectType.js.map +1 -1
  471. package/dist/types/ObjectType.spec.js +3 -3
  472. package/dist/types/ObjectType.spec.js.map +1 -1
  473. package/dist/types/ReferenceType.d.ts +63 -0
  474. package/dist/types/ReferenceType.js +423 -0
  475. package/dist/types/ReferenceType.js.map +1 -0
  476. package/dist/types/ReferenceType.spec.d.ts +1 -0
  477. package/dist/types/ReferenceType.spec.js +137 -0
  478. package/dist/types/ReferenceType.spec.js.map +1 -0
  479. package/dist/types/StringType.d.ts +11 -5
  480. package/dist/types/StringType.js +18 -7
  481. package/dist/types/StringType.js.map +1 -1
  482. package/dist/types/StringType.spec.js +3 -5
  483. package/dist/types/StringType.spec.js.map +1 -1
  484. package/dist/types/TypedFunctionType.d.ts +22 -17
  485. package/dist/types/TypedFunctionType.js +78 -60
  486. package/dist/types/TypedFunctionType.js.map +1 -1
  487. package/dist/types/TypedFunctionType.spec.js +105 -20
  488. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  489. package/dist/types/UninitializedType.d.ts +8 -6
  490. package/dist/types/UninitializedType.js +13 -7
  491. package/dist/types/UninitializedType.js.map +1 -1
  492. package/dist/types/UnionType.d.ts +20 -0
  493. package/dist/types/UnionType.js +123 -0
  494. package/dist/types/UnionType.js.map +1 -0
  495. package/dist/types/UnionType.spec.d.ts +1 -0
  496. package/dist/types/UnionType.spec.js +130 -0
  497. package/dist/types/UnionType.spec.js.map +1 -0
  498. package/dist/types/VoidType.d.ts +8 -5
  499. package/dist/types/VoidType.js +14 -7
  500. package/dist/types/VoidType.js.map +1 -1
  501. package/dist/types/VoidType.spec.js +3 -3
  502. package/dist/types/VoidType.spec.js.map +1 -1
  503. package/dist/types/helper.spec.d.ts +1 -0
  504. package/dist/types/helper.spec.js +145 -0
  505. package/dist/types/helper.spec.js.map +1 -0
  506. package/dist/types/helpers.d.ts +19 -37
  507. package/dist/types/helpers.js +159 -99
  508. package/dist/types/helpers.js.map +1 -1
  509. package/dist/types/index.d.ts +22 -0
  510. package/dist/types/index.js +39 -0
  511. package/dist/types/index.js.map +1 -0
  512. package/dist/util.d.ts +167 -131
  513. package/dist/util.js +890 -350
  514. package/dist/util.js.map +1 -1
  515. package/dist/validators/ClassValidator.d.ts +7 -25
  516. package/dist/validators/ClassValidator.js +103 -194
  517. package/dist/validators/ClassValidator.js.map +1 -1
  518. package/package.json +165 -149
  519. package/dist/astUtils/AstEditor.js.map +0 -1
  520. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  521. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +0 -8
  522. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +0 -40
  523. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  524. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
  525. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  526. package/dist/parser/SGTypes.spec.js +0 -351
  527. package/dist/parser/SGTypes.spec.js.map +0 -1
  528. package/dist/types/CustomType.d.ts +0 -12
  529. package/dist/types/CustomType.js +0 -44
  530. package/dist/types/CustomType.js.map +0 -1
  531. package/dist/types/LazyType.d.ts +0 -16
  532. package/dist/types/LazyType.js +0 -44
  533. package/dist/types/LazyType.js.map +0 -1
  534. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  535. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  536. /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/hover/HoverProcessor.spec.d.ts} +0 -0
package/dist/Scope.d.ts CHANGED
@@ -1,15 +1,14 @@
1
- import type { CompletionItem, Position, Range } from 'vscode-languageserver';
2
- import { Location } from 'vscode-languageserver';
3
- import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink, InheritableStatement, InheritableType, NamedTypeStatement } from './interfaces';
1
+ import type { Position, Location } from 'vscode-languageserver';
2
+ import { type CallableContainer, type BsDiagnosticWithOrigin, type CallableContainerMap, type FileLink, type Callable, type NamespaceContainer, type ScopeValidationOptions, type BsDiagnostic } from './interfaces';
4
3
  import type { Program } from './Program';
5
- import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, EnumStatement, InterfaceStatement, EnumMemberStatement } from './parser/Statement';
6
- import type { FunctionExpression, NewExpression } from './parser/Expression';
7
- import { ParseMode } from './parser/Parser';
4
+ import type { NamespaceStatement, ClassStatement, EnumStatement, InterfaceStatement, EnumMemberStatement, ConstStatement } from './parser/Statement';
5
+ import { type NewExpression } from './parser/Expression';
8
6
  import { Cache } from './Cache';
9
- import type { BrsFile, TokenSymbolLookup } from './files/BrsFile';
7
+ import type { BrsFile } from './files/BrsFile';
10
8
  import type { DependencyGraph, DependencyChangedEvent } from './DependencyGraph';
11
9
  import { SymbolTable } from './SymbolTable';
12
- import type { BscType, TypeContext } from './types/BscType';
10
+ import type { BscFile } from './files/BscFile';
11
+ import { type AstNode, type Statement } from './parser/AstNode';
13
12
  import type { Token } from './lexer/Token';
14
13
  /**
15
14
  * A class to keep track of all declarations within a given scope (like source scope, component scope)
@@ -23,7 +22,7 @@ export declare class Scope {
23
22
  * Indicates whether this scope needs to be validated.
24
23
  * Will be true when first constructed, or anytime one of its dependencies changes
25
24
  */
26
- isValidated: boolean;
25
+ readonly isValidated: boolean;
27
26
  protected cache: Cache<any, any>;
28
27
  get dependencyGraphKey(): string;
29
28
  /**
@@ -32,6 +31,14 @@ export declare class Scope {
32
31
  * "namea", "namea.nameb", "namea.nameb.namec"
33
32
  */
34
33
  get namespaceLookup(): Map<string, NamespaceContainer>;
34
+ /**
35
+ * Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
36
+ */
37
+ getNamespace(name: string, containingNamespace?: string): NamespaceContainer;
38
+ /**
39
+ * Get a NamespaceContainer by its name, looking for a fully qualified version first, then global version next if not found
40
+ */
41
+ getNamespacesWithRoot(rootName: string, containingNamespace?: string): NamespaceContainer[];
35
42
  /**
36
43
  * Get the class with the specified name.
37
44
  * @param className - The class name, including the namespace of the class if possible
@@ -44,18 +51,6 @@ export declare class Scope {
44
51
  * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
45
52
  */
46
53
  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
54
  /**
60
55
  * Get the enum with the specified name.
61
56
  * @param enumName - The enum name, including the namespace if possible
@@ -69,10 +64,10 @@ export declare class Scope {
69
64
  */
70
65
  getClassFileLink(className: string, containingNamespace?: string): FileLink<ClassStatement>;
71
66
  /**
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
- */
67
+ * Get an interface and its containing file by the interface name
68
+ * @param ifaceName - The interface name, including the namespace of the interface if possible
69
+ * @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
70
+ */
76
71
  getInterfaceFileLink(ifaceName: string, containingNamespace?: string): FileLink<InterfaceStatement>;
77
72
  /**
78
73
  * Get an Enum and its containing file by the Enum name
@@ -81,78 +76,66 @@ export declare class Scope {
81
76
  */
82
77
  getEnumFileLink(enumName: string, containingNamespace?: string): FileLink<EnumStatement>;
83
78
  /**
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)
79
+ * Get an Enum and its containing file by the Enum name
80
+ * @param enumMemberName - The Enum name, including the namespace of the enum if possible
81
+ * @param containingNamespace - The namespace used to resolve relative enum names. (i.e. the namespace around the current statement trying to find a enum)
93
82
  */
94
- getInheritableFileLink(name: string, containingNamespace?: string): FileLink<InheritableStatement>;
83
+ getEnumMemberFileLink(enumMemberName: string, containingNamespace?: string): FileLink<EnumMemberStatement>;
95
84
  /**
96
- * Gets the parent class of the given class
97
- * @param klass - The class to get the parent of, if possible
85
+ * Get a constant and its containing file by the constant name
86
+ * @param constName - The constant name, including the namespace of the constant if possible
87
+ * @param containingNamespace - The namespace used to resolve relative constant names. (i.e. the namespace around the current statement trying to find a constant)
98
88
  */
99
- getParentClass(klass: ClassStatement): ClassStatement;
89
+ getConstFileLink(constName: string, containingNamespace?: string): FileLink<ConstStatement>;
90
+ getAllFileLinks(name: string, containingNamespace?: string): FileLink<Statement>[];
100
91
  /**
101
- * Gets the parent interface of the given interface
102
- * @param iface - The interface to get the parent of, if possible
92
+ * Get a map of all enums by their member name.
93
+ * The keys are lower-case fully-qualified paths to the enum and its member. For example:
94
+ * namespace.enum.value
103
95
  */
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
96
  getEnumMemberMap(): Map<string, EnumMemberStatement>;
111
97
  /**
112
- * Tests if a class exists with the specified name
113
- * @param className - the all-lower-case namespace-included class name
114
- * @param namespaceName - the current namespace name
115
- */
98
+ * Tests if a class exists with the specified name
99
+ * @param className - the all-lower-case namespace-included class name
100
+ * @param namespaceName - The namespace used to resolve relative class names. (i.e. the namespace around the current statement trying to find a class)
101
+ */
116
102
  hasClass(className: string, namespaceName?: string): boolean;
117
103
  /**
118
- * Tests if an interface exists with the specified name
119
- * @param ifaceName - the all-lower-case namespace-included interface name
120
- * @param namespaceName - the current namespace name
121
- */
104
+ * Tests if an interface exists with the specified name
105
+ * @param ifaceName - the all-lower-case namespace-included interface name
106
+ * @param namespaceName - the current namespace name
107
+ */
122
108
  hasInterface(ifaceName: string, namespaceName?: string): boolean;
123
109
  /**
124
- * Tests if an enum exists with the specified name
125
- * @param enumName - the all-lower-case namespace-included enum name
126
- * @param namespaceName - the current namespace name
127
- */
128
- hasEnum(enumName: string, namespaceName?: string): boolean;
129
- /**
130
- * Tests if a class OR an interface, etc. exists with the specified name
131
- * @param name - the all-lower-case namespace-included class or interface name
110
+ * Tests if an enum exists with the specified name
111
+ * @param enumName - the all-lower-case namespace-included enum name
132
112
  * @param namespaceName - the current namespace name
133
113
  */
134
- hasNamedType(name: string, namespaceName?: string): boolean;
114
+ hasEnum(enumName: string, namespaceName?: string): boolean;
135
115
  /**
136
116
  * A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
137
117
  * The key is stored in lower case
138
118
  */
139
119
  getClassMap(): Map<string, FileLink<ClassStatement>>;
140
- getAncestorTypeListByContext(thisType: BscType, context?: TypeContext): InheritableType[];
141
120
  /**
142
- * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
143
- * The key is stored in lower case
144
- */
121
+ * A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
122
+ * The key is stored in lower case
123
+ */
145
124
  getInterfaceMap(): Map<string, FileLink<InterfaceStatement>>;
146
- getAncestorTypeList(className: string, functionExpression?: FunctionExpression): InheritableType[];
147
125
  /**
148
126
  * A dictionary of all enums in this scope. This includes namespaced enums always with their full name.
149
127
  * The key is stored in lower case
150
128
  */
151
129
  getEnumMap(): Map<string, FileLink<EnumStatement>>;
130
+ /**
131
+ * A dictionary of all constants in this scope. This includes namespaced constants always with their full name.
132
+ * The key is stored in lower case
133
+ */
134
+ getConstMap(): Map<string, FileLink<ConstStatement>>;
152
135
  /**
153
136
  * The list of diagnostics found specifically for this scope. Individual file diagnostics are stored on the files themselves.
154
137
  */
155
- protected diagnostics: BsDiagnostic[];
138
+ protected diagnostics: BsDiagnosticWithOrigin[];
156
139
  protected onDependenciesChanged(event: DependencyChangedEvent): void;
157
140
  /**
158
141
  * Clean up all event handles
@@ -168,7 +151,7 @@ export declare class Scope {
168
151
  * XmlScope overrides this to return the parent xml scope if available.
169
152
  * For globalScope this will return null.
170
153
  */
171
- getParentScope(): Scope;
154
+ getParentScope(): Scope | null;
172
155
  private dependencyGraph;
173
156
  /**
174
157
  * An unsubscribe function for the dependencyGraph subscription
@@ -176,11 +159,11 @@ export declare class Scope {
176
159
  private unsubscribeFromDependencyGraph;
177
160
  attachDependencyGraph(dependencyGraph: DependencyGraph): void;
178
161
  /**
179
- * Get the file with the specified pkgPath
180
- * @param filePath can be a srcPath, a pkgPath, or a destPath (same as pkgPath but without `pkg:/`)
162
+ * Get the file from this scope with the given path.
163
+ * @param filePath can be a srcPath or destPath
181
164
  * @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
182
165
  */
183
- getFile(srcPath: string, normalizePath?: boolean): BscFile;
166
+ getFile<TFile extends BscFile>(filePath: string, normalizePath?: boolean): TFile;
184
167
  /**
185
168
  * Get the list of files referenced by this scope that are actually loaded in the program.
186
169
  * Excludes files from ancestor scopes
@@ -192,11 +175,10 @@ export declare class Scope {
192
175
  */
193
176
  getAllFiles(): BscFile[];
194
177
  /**
195
- * Get the list of errors for this scope. It's calculated on the fly, so
196
- * call this sparingly.
178
+ * Get the list of errors for this scope. It's calculated on the fly, so call this sparingly.
197
179
  */
198
180
  getDiagnostics(): BsDiagnostic[];
199
- addDiagnostics(diagnostics: BsDiagnostic[]): void;
181
+ addDiagnostics(diagnostics: BsDiagnosticWithOrigin[]): void;
200
182
  /**
201
183
  * Get the list of callables available in this scope (either declared in this scope or in a parent scope)
202
184
  */
@@ -204,15 +186,9 @@ export declare class Scope {
204
186
  /**
205
187
  * Get the callable with the specified name.
206
188
  * If there are overridden callables with the same name, the closest callable to this scope is returned
207
- * @param name
208
189
  */
209
- getCallableByName(name: string): import("./interfaces").Callable;
210
- /**
211
- * Get the global callable with the specified name.
212
- * If there are overridden callables with the same name, the closest callable to this scope is returned
213
- * @param name
214
- */
215
- getGlobalCallableByName(name: string): import("./interfaces").Callable;
190
+ getCallableByName(name: string): Callable;
191
+ getCallableMap(): Map<string, Callable>;
216
192
  /**
217
193
  * Iterate over Brs files not shadowed by typedefs
218
194
  */
@@ -229,26 +205,46 @@ export declare class Scope {
229
205
  /**
230
206
  * Builds a tree of namespace objects
231
207
  */
232
- buildNamespaceLookup(): Map<string, NamespaceContainer>;
208
+ buildNamespaceLookup(options?: {
209
+ okToCache?: boolean;
210
+ }): Map<string, NamespaceContainer>;
233
211
  getAllNamespaceStatements(): NamespaceStatement[];
234
212
  protected logDebug(...args: any[]): void;
235
213
  private _debugLogComponentName;
236
- validate(): void;
214
+ validate(validationOptions?: ScopeValidationOptions): void;
237
215
  protected _validate(callableContainerMap: CallableContainerMap): void;
216
+ clearAstSegmentDiagnostics(astSegment: AstNode): void;
217
+ clearAstSegmentDiagnosticsByFile(file: BscFile): void;
218
+ clearScopeLevelDiagnostics(): void;
238
219
  /**
239
220
  * Mark this scope as invalid, which means its `validate()` function needs to be called again before use.
240
221
  */
241
222
  invalidate(): void;
242
223
  get symbolTable(): SymbolTable;
243
- private _symbolTable;
244
- protected _memberTable: SymbolTable;
245
- get memberTable(): SymbolTable;
246
- protected clearSymbolTable(): void;
247
- /**
248
- * Builds the current symbol table for the scope, by merging the tables for all the files in this scope.
249
- * Also links all file symbols tables to this new table
250
- * This will only rebuilt if the symbol table has not been built before
251
- */
224
+ /**
225
+ * A list of functions that will be called whenever `unlinkSymbolTable` is called
226
+ */
227
+ private linkSymbolTableDisposables;
228
+ private symbolsAddedDuringLinking;
229
+ /**
230
+ * Builds the current symbol table for the scope, by merging the tables for all the files in this scope.
231
+ * Also links all file symbols tables to this new table
232
+ * This will only rebuilt if the symbol table has not been built before
233
+ *
234
+ * Tree of symbol tables:
235
+ * ```
236
+ * Global Scope Symbol Table
237
+ * - Source Scope Symbol Table :: Aggregate Namespaces Symbol Table (Siblings)
238
+ * - File 1 Symbol Table
239
+ * - File 2 Symbol Table
240
+ * - Component A Scope Symbol Table :: Aggregate Namespaces Symbol Table (Siblings)
241
+ * - File 1 Symbol Table
242
+ * - File 2 Symbol Table
243
+ * - Component B Scope Symbol Table :: Aggregate Namespaces Symbol Table (Siblings)
244
+ * - File 1 Symbol Table
245
+ * - File 2 Symbol Table
246
+ * ```
247
+ */
252
248
  linkSymbolTable(): void;
253
249
  unlinkSymbolTable(): void;
254
250
  private detectVariableNamespaceCollisions;
@@ -256,26 +252,16 @@ export declare class Scope {
256
252
  * Find various function collisions
257
253
  */
258
254
  private diagnosticDetectFunctionCollisions;
259
- /**
260
- * Find function parameters and function return types that are neither built-in types or known Class references
261
- */
262
- private diagnosticDetectInvalidFunctionExpressionTypes;
263
- /**
264
- * Find functions with either the wrong type of parameters, or the wrong number of parameters
265
- */
266
- private diagnosticDetectInvalidFunctionCalls;
267
- private addMismatchParamCountDiagnostic;
255
+ private detectNameCollisions;
256
+ validateNameCollision(file: BrsFile, node: AstNode, nameIdentifier: Token): void;
268
257
  getNewExpressions(): AugmentedNewExpression[];
269
258
  private validateClasses;
270
259
  /**
271
- * Detect local variables (vars declared within a function expression) that have the same name as scope calls
272
- * @param file
273
- * @param callableContainerMap
260
+ * Detect local variables (function scope) that have the same name as scope calls
274
261
  */
275
262
  private diagnosticDetectShadowedLocalVars;
276
263
  /**
277
264
  * Create diagnostics for any duplicate function declarations
278
- * @param callablesByLowerName
279
265
  */
280
266
  private diagnosticFindDuplicateFunctionDeclarations;
281
267
  /**
@@ -288,48 +274,23 @@ export declare class Scope {
288
274
  private diagnosticValidateScriptImportPaths;
289
275
  /**
290
276
  * Find the file with the specified relative path
291
- * @param relativePath
292
277
  */
293
278
  protected getFileByRelativePath(relativePath: string): BscFile;
294
279
  /**
295
280
  * Determine if this file is included in this scope (excluding parent scopes)
296
- * @param file
297
281
  */
298
282
  hasFile(file: BscFile): boolean;
299
- /**
300
- * Get all callables as completionItems
301
- */
302
- getCallablesAsCompletions(parseMode: ParseMode): CompletionItem[];
303
- createCompletionFromCallable(callableContainer: CallableContainer): CompletionItem;
304
- createCompletionFromFunctionStatement(statement: FunctionStatement): CompletionItem;
305
283
  /**
306
284
  * Get the definition (where was this thing first defined) of the symbol under the position
307
285
  */
308
286
  getDefinition(file: BscFile, position: Position): Location[];
309
- /**
310
- * Scan all files for property names, and return them as completions
311
- */
312
- getPropertyNameCompletions(): CompletionItem[];
313
- getAllClassMemberCompletions(): Map<string, CompletionItem>;
314
287
  /**
315
288
  * @param className - The name of the class (including namespace if possible)
316
289
  * @param callsiteNamespace - the name of the namespace where the call site resides (this is NOT the known namespace of the class).
317
- * This is used to help resolve non-namespaced class names that reside in the same namespace as the call site.
290
+ * This is used to help resolve non-namespaced class names that reside in the same namespac as the call site.
318
291
  */
319
292
  getClassHierarchy(className: string, callsiteNamespace?: string): FileLink<ClassStatement>[];
320
293
  }
321
- export interface NamespaceContainer {
322
- file: BscFile;
323
- fullName: string;
324
- nameRange: Range;
325
- lastPartName: string;
326
- statements: Statement[];
327
- classStatements: Record<string, ClassStatement>;
328
- functionStatements: Record<string, FunctionStatement>;
329
- enumStatements: Map<string, EnumStatement>;
330
- namespaces: Map<string, NamespaceContainer>;
331
- symbolTable: SymbolTable;
332
- }
333
294
  interface AugmentedNewExpression extends NewExpression {
334
295
  file: BscFile;
335
296
  }