brighterscript 1.0.0-alpha.5 → 1.0.0-alpha.50

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 (715) hide show
  1. package/README.md +76 -138
  2. package/bsconfig.schema.json +121 -5
  3. package/dist/ActionPipeline.d.ts +10 -0
  4. package/dist/ActionPipeline.js +40 -0
  5. package/dist/ActionPipeline.js.map +1 -0
  6. package/dist/AstValidationSegmenter.d.ts +45 -0
  7. package/dist/AstValidationSegmenter.js +322 -0
  8. package/dist/AstValidationSegmenter.js.map +1 -0
  9. package/dist/BsConfig.d.ts +72 -39
  10. package/dist/BusyStatusTracker.d.ts +61 -0
  11. package/dist/BusyStatusTracker.js +148 -0
  12. package/dist/BusyStatusTracker.js.map +1 -0
  13. package/dist/Cache.d.ts +3 -8
  14. package/dist/Cache.js +9 -14
  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 +12 -4
  20. package/dist/CodeActionUtil.js +22 -5
  21. package/dist/CodeActionUtil.js.map +1 -1
  22. package/dist/CommentFlagProcessor.d.ts +7 -6
  23. package/dist/CommentFlagProcessor.js +11 -8
  24. package/dist/CommentFlagProcessor.js.map +1 -1
  25. package/dist/CrossScopeValidator.d.ts +68 -0
  26. package/dist/CrossScopeValidator.js +642 -0
  27. package/dist/CrossScopeValidator.js.map +1 -0
  28. package/dist/DependencyGraph.d.ts +8 -3
  29. package/dist/DependencyGraph.js +49 -16
  30. package/dist/DependencyGraph.js.map +1 -1
  31. package/dist/DiagnosticCollection.d.ts +21 -5
  32. package/dist/DiagnosticCollection.js +77 -24
  33. package/dist/DiagnosticCollection.js.map +1 -1
  34. package/dist/DiagnosticFilterer.d.ts +27 -6
  35. package/dist/DiagnosticFilterer.js +273 -60
  36. package/dist/DiagnosticFilterer.js.map +1 -1
  37. package/dist/DiagnosticManager.d.ts +82 -0
  38. package/dist/DiagnosticManager.js +406 -0
  39. package/dist/DiagnosticManager.js.map +1 -0
  40. package/dist/DiagnosticMessages.d.ts +558 -196
  41. package/dist/DiagnosticMessages.js +870 -340
  42. package/dist/DiagnosticMessages.js.map +1 -1
  43. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  44. package/dist/DiagnosticSeverityAdjuster.js +45 -0
  45. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  46. package/dist/FunctionScope.d.ts +28 -0
  47. package/dist/FunctionScope.js +52 -0
  48. package/dist/FunctionScope.js.map +1 -0
  49. package/dist/KeyedThrottler.d.ts +3 -3
  50. package/dist/KeyedThrottler.js +3 -3
  51. package/dist/KeyedThrottler.js.map +1 -1
  52. package/dist/LanguageServer.d.ts +100 -105
  53. package/dist/LanguageServer.js +444 -745
  54. package/dist/LanguageServer.js.map +1 -1
  55. package/dist/Logger.d.ts +17 -13
  56. package/dist/Logger.js +64 -34
  57. package/dist/Logger.js.map +1 -1
  58. package/dist/PluginInterface.d.ts +32 -10
  59. package/dist/PluginInterface.js +117 -7
  60. package/dist/PluginInterface.js.map +1 -1
  61. package/dist/Program.d.ts +241 -98
  62. package/dist/Program.js +1432 -717
  63. package/dist/Program.js.map +1 -1
  64. package/dist/ProgramBuilder.d.ts +47 -23
  65. package/dist/ProgramBuilder.js +224 -178
  66. package/dist/ProgramBuilder.js.map +1 -1
  67. package/dist/Scope.d.ts +149 -109
  68. package/dist/Scope.js +557 -550
  69. package/dist/Scope.js.map +1 -1
  70. package/dist/SemanticTokenUtils.js +5 -1
  71. package/dist/SemanticTokenUtils.js.map +1 -1
  72. package/dist/Stopwatch.d.ts +4 -0
  73. package/dist/Stopwatch.js +8 -1
  74. package/dist/Stopwatch.js.map +1 -1
  75. package/dist/SymbolTable.d.ts +136 -24
  76. package/dist/SymbolTable.js +565 -64
  77. package/dist/SymbolTable.js.map +1 -1
  78. package/dist/SymbolTypeFlag.d.ts +9 -0
  79. package/dist/SymbolTypeFlag.js +14 -0
  80. package/dist/SymbolTypeFlag.js.map +1 -0
  81. package/dist/Throttler.d.ts +12 -0
  82. package/dist/Throttler.js +39 -0
  83. package/dist/Throttler.js.map +1 -1
  84. package/dist/Watcher.d.ts +0 -3
  85. package/dist/Watcher.js +0 -3
  86. package/dist/Watcher.js.map +1 -1
  87. package/dist/XmlScope.d.ts +5 -15
  88. package/dist/XmlScope.js +34 -90
  89. package/dist/XmlScope.js.map +1 -1
  90. package/dist/astUtils/CachedLookups.d.ts +50 -0
  91. package/dist/astUtils/CachedLookups.js +334 -0
  92. package/dist/astUtils/CachedLookups.js.map +1 -0
  93. package/dist/astUtils/CachedLookups.spec.js +39 -0
  94. package/dist/astUtils/CachedLookups.spec.js.map +1 -0
  95. package/dist/astUtils/Editor.d.ts +69 -0
  96. package/dist/astUtils/Editor.js +245 -0
  97. package/dist/astUtils/Editor.js.map +1 -0
  98. package/dist/astUtils/Editor.spec.js +258 -0
  99. package/dist/astUtils/Editor.spec.js.map +1 -0
  100. package/dist/astUtils/creators.d.ts +54 -19
  101. package/dist/astUtils/creators.js +242 -42
  102. package/dist/astUtils/creators.js.map +1 -1
  103. package/dist/astUtils/creators.spec.js +5 -5
  104. package/dist/astUtils/creators.spec.js.map +1 -1
  105. package/dist/astUtils/reflection.d.ts +196 -85
  106. package/dist/astUtils/reflection.js +497 -144
  107. package/dist/astUtils/reflection.js.map +1 -1
  108. package/dist/astUtils/reflection.spec.js +267 -167
  109. package/dist/astUtils/reflection.spec.js.map +1 -1
  110. package/dist/astUtils/stackedVisitor.js.map +1 -1
  111. package/dist/astUtils/stackedVisitor.spec.js +14 -14
  112. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  113. package/dist/astUtils/visitors.d.ts +116 -53
  114. package/dist/astUtils/visitors.js +95 -15
  115. package/dist/astUtils/visitors.js.map +1 -1
  116. package/dist/astUtils/visitors.spec.js +629 -51
  117. package/dist/astUtils/visitors.spec.js.map +1 -1
  118. package/dist/astUtils/xml.d.ts +9 -8
  119. package/dist/astUtils/xml.js +12 -7
  120. package/dist/astUtils/xml.js.map +1 -1
  121. package/dist/bscPlugin/BscPlugin.d.ts +24 -4
  122. package/dist/bscPlugin/BscPlugin.js +88 -4
  123. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  124. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  125. package/dist/bscPlugin/CallExpressionInfo.js +143 -0
  126. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  127. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  128. package/dist/bscPlugin/FileWriter.js +24 -0
  129. package/dist/bscPlugin/FileWriter.js.map +1 -0
  130. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  131. package/dist/bscPlugin/SignatureHelpUtil.js +137 -0
  132. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  133. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +6 -5
  134. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +173 -27
  135. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  136. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +138 -21
  137. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  138. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +65 -0
  139. package/dist/bscPlugin/completions/CompletionsProcessor.js +633 -0
  140. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  141. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +2512 -0
  142. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  143. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  144. package/dist/bscPlugin/definition/DefinitionProvider.js +212 -0
  145. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  146. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
  147. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  148. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  149. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  150. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  151. package/dist/bscPlugin/hover/HoverProcessor.d.ts +18 -0
  152. package/dist/bscPlugin/hover/HoverProcessor.js +230 -0
  153. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  154. package/dist/bscPlugin/hover/HoverProcessor.spec.js +991 -0
  155. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
  156. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  157. package/dist/bscPlugin/references/ReferencesProvider.js +57 -0
  158. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  159. package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +1 -0
  160. package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
  161. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
  162. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +14 -0
  163. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +164 -0
  164. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
  165. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +1 -0
  166. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +564 -0
  167. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -0
  168. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  169. package/dist/bscPlugin/serialize/BslibInjector.spec.js +33 -0
  170. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  171. package/dist/bscPlugin/serialize/BslibManager.d.ts +12 -0
  172. package/dist/bscPlugin/serialize/BslibManager.js +46 -0
  173. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  174. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  175. package/dist/bscPlugin/serialize/FileSerializer.js +75 -0
  176. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  177. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  178. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  179. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  180. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +1 -0
  181. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +291 -0
  182. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
  183. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  184. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  185. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  186. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +1 -0
  187. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
  188. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
  189. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  190. package/dist/bscPlugin/symbols/symbolUtils.js +141 -0
  191. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  192. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +27 -0
  193. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +418 -0
  194. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  195. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  196. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +75 -0
  197. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  198. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  199. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  200. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  201. package/dist/bscPlugin/validation/BrsFileAfterValidator.d.ts +7 -0
  202. package/dist/bscPlugin/validation/BrsFileAfterValidator.js +18 -0
  203. package/dist/bscPlugin/validation/BrsFileAfterValidator.js.map +1 -0
  204. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +37 -0
  205. package/dist/bscPlugin/validation/BrsFileValidator.js +638 -0
  206. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  207. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
  208. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1517 -0
  209. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
  210. package/dist/bscPlugin/validation/ProgramValidator.d.ts +11 -0
  211. package/dist/bscPlugin/validation/ProgramValidator.js +33 -0
  212. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  213. package/dist/bscPlugin/validation/ScopeValidator.d.ts +141 -0
  214. package/dist/bscPlugin/validation/ScopeValidator.js +1323 -0
  215. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  216. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  217. package/dist/bscPlugin/validation/ScopeValidator.spec.js +6135 -0
  218. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  219. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  220. package/dist/bscPlugin/validation/XmlFileValidator.js +36 -0
  221. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  222. package/dist/cli.js +126 -27
  223. package/dist/cli.js.map +1 -1
  224. package/dist/common/Sequencer.d.ts +53 -0
  225. package/dist/common/Sequencer.js +233 -0
  226. package/dist/common/Sequencer.js.map +1 -0
  227. package/dist/common/Sequencer.spec.d.ts +1 -0
  228. package/dist/common/Sequencer.spec.js +75 -0
  229. package/dist/common/Sequencer.spec.js.map +1 -0
  230. package/dist/deferred.d.ts +5 -3
  231. package/dist/deferred.js +10 -0
  232. package/dist/deferred.js.map +1 -1
  233. package/dist/diagnosticUtils.d.ts +10 -3
  234. package/dist/diagnosticUtils.js +64 -25
  235. package/dist/diagnosticUtils.js.map +1 -1
  236. package/dist/examples/plugins/removePrint.d.ts +2 -2
  237. package/dist/examples/plugins/removePrint.js +8 -12
  238. package/dist/examples/plugins/removePrint.js.map +1 -1
  239. package/dist/files/AssetFile.d.ts +24 -0
  240. package/dist/files/AssetFile.js +25 -0
  241. package/dist/files/AssetFile.js.map +1 -0
  242. package/dist/files/BrsFile.Class.spec.js +1213 -259
  243. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  244. package/dist/files/BrsFile.d.ts +145 -87
  245. package/dist/files/BrsFile.js +836 -934
  246. package/dist/files/BrsFile.js.map +1 -1
  247. package/dist/files/BrsFile.spec.js +4226 -902
  248. package/dist/files/BrsFile.spec.js.map +1 -1
  249. package/dist/files/BscFile.d.ts +102 -0
  250. package/dist/files/BscFile.js +15 -0
  251. package/dist/files/BscFile.js.map +1 -0
  252. package/dist/files/Factory.d.ts +25 -0
  253. package/dist/files/Factory.js +22 -0
  254. package/dist/files/Factory.js.map +1 -0
  255. package/dist/files/LazyFileData.d.ts +21 -0
  256. package/dist/files/LazyFileData.js +54 -0
  257. package/dist/files/LazyFileData.js.map +1 -0
  258. package/dist/files/LazyFileData.spec.d.ts +1 -0
  259. package/dist/files/LazyFileData.spec.js +27 -0
  260. package/dist/files/LazyFileData.spec.js.map +1 -0
  261. package/dist/files/XmlFile.d.ts +80 -41
  262. package/dist/files/XmlFile.js +161 -137
  263. package/dist/files/XmlFile.js.map +1 -1
  264. package/dist/files/XmlFile.spec.js +444 -336
  265. package/dist/files/XmlFile.spec.js.map +1 -1
  266. package/dist/files/tests/imports.spec.js +62 -52
  267. package/dist/files/tests/imports.spec.js.map +1 -1
  268. package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
  269. package/dist/files/tests/optionalChaning.spec.js +152 -0
  270. package/dist/files/tests/optionalChaning.spec.js.map +1 -0
  271. package/dist/globalCallables.d.ts +3 -1
  272. package/dist/globalCallables.js +424 -184
  273. package/dist/globalCallables.js.map +1 -1
  274. package/dist/index.d.ts +32 -4
  275. package/dist/index.js +54 -7
  276. package/dist/index.js.map +1 -1
  277. package/dist/interfaces.d.ts +942 -125
  278. package/dist/interfaces.js +21 -0
  279. package/dist/interfaces.js.map +1 -1
  280. package/dist/lexer/Character.spec.js +5 -5
  281. package/dist/lexer/Character.spec.js.map +1 -1
  282. package/dist/lexer/Lexer.d.ts +51 -12
  283. package/dist/lexer/Lexer.js +215 -65
  284. package/dist/lexer/Lexer.js.map +1 -1
  285. package/dist/lexer/Lexer.spec.js +812 -568
  286. package/dist/lexer/Lexer.spec.js.map +1 -1
  287. package/dist/lexer/Token.d.ts +27 -11
  288. package/dist/lexer/Token.js +10 -2
  289. package/dist/lexer/Token.js.map +1 -1
  290. package/dist/lexer/TokenKind.d.ts +40 -2
  291. package/dist/lexer/TokenKind.js +147 -10
  292. package/dist/lexer/TokenKind.js.map +1 -1
  293. package/dist/logging.d.ts +14 -0
  294. package/dist/logging.js +29 -0
  295. package/dist/logging.js.map +1 -0
  296. package/dist/lsp/ActionQueue.d.ts +35 -0
  297. package/dist/lsp/ActionQueue.js +115 -0
  298. package/dist/lsp/ActionQueue.js.map +1 -0
  299. package/dist/lsp/ActionQueue.spec.d.ts +1 -0
  300. package/dist/lsp/ActionQueue.spec.js +80 -0
  301. package/dist/lsp/ActionQueue.spec.js.map +1 -0
  302. package/dist/lsp/DocumentManager.d.ts +63 -0
  303. package/dist/lsp/DocumentManager.js +122 -0
  304. package/dist/lsp/DocumentManager.js.map +1 -0
  305. package/dist/lsp/DocumentManager.spec.d.ts +1 -0
  306. package/dist/lsp/DocumentManager.spec.js +103 -0
  307. package/dist/lsp/DocumentManager.spec.js.map +1 -0
  308. package/dist/lsp/LspProject.d.ts +239 -0
  309. package/dist/lsp/LspProject.js +3 -0
  310. package/dist/lsp/LspProject.js.map +1 -0
  311. package/dist/lsp/PathFilterer.d.ts +75 -0
  312. package/dist/lsp/PathFilterer.js +196 -0
  313. package/dist/lsp/PathFilterer.js.map +1 -0
  314. package/dist/lsp/PathFilterer.spec.d.ts +1 -0
  315. package/dist/lsp/PathFilterer.spec.js +182 -0
  316. package/dist/lsp/PathFilterer.spec.js.map +1 -0
  317. package/dist/lsp/Project.d.ts +168 -0
  318. package/dist/lsp/Project.js +437 -0
  319. package/dist/lsp/Project.js.map +1 -0
  320. package/dist/lsp/Project.spec.d.ts +1 -0
  321. package/dist/lsp/Project.spec.js +267 -0
  322. package/dist/lsp/Project.spec.js.map +1 -0
  323. package/dist/lsp/ProjectManager.d.ts +242 -0
  324. package/dist/lsp/ProjectManager.js +824 -0
  325. package/dist/lsp/ProjectManager.js.map +1 -0
  326. package/dist/lsp/ProjectManager.spec.d.ts +1 -0
  327. package/dist/lsp/ProjectManager.spec.js +913 -0
  328. package/dist/lsp/ProjectManager.spec.js.map +1 -0
  329. package/dist/lsp/ReaderWriterManager.d.ts +21 -0
  330. package/dist/lsp/ReaderWriterManager.js +60 -0
  331. package/dist/lsp/ReaderWriterManager.js.map +1 -0
  332. package/dist/lsp/worker/MessageHandler.d.ts +99 -0
  333. package/dist/lsp/worker/MessageHandler.js +138 -0
  334. package/dist/lsp/worker/MessageHandler.js.map +1 -0
  335. package/dist/lsp/worker/MessageHandler.spec.d.ts +1 -0
  336. package/dist/lsp/worker/MessageHandler.spec.js +64 -0
  337. package/dist/lsp/worker/MessageHandler.spec.js.map +1 -0
  338. package/dist/lsp/worker/WorkerPool.d.ts +38 -0
  339. package/dist/lsp/worker/WorkerPool.js +78 -0
  340. package/dist/lsp/worker/WorkerPool.js.map +1 -0
  341. package/dist/lsp/worker/WorkerPool.spec.d.ts +1 -0
  342. package/dist/lsp/worker/WorkerPool.spec.js +59 -0
  343. package/dist/lsp/worker/WorkerPool.spec.js.map +1 -0
  344. package/dist/lsp/worker/WorkerThreadProject.d.ts +143 -0
  345. package/dist/lsp/worker/WorkerThreadProject.js +189 -0
  346. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
  347. package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +2 -0
  348. package/dist/lsp/worker/WorkerThreadProject.spec.js +71 -0
  349. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -0
  350. package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
  351. package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
  352. package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
  353. package/dist/lsp/worker/run.d.ts +1 -0
  354. package/dist/lsp/worker/run.js +14 -0
  355. package/dist/lsp/worker/run.js.map +1 -0
  356. package/dist/parser/AstNode.d.ts +203 -0
  357. package/dist/parser/AstNode.js +303 -0
  358. package/dist/parser/AstNode.js.map +1 -0
  359. package/dist/parser/AstNode.spec.d.ts +1 -0
  360. package/dist/parser/AstNode.spec.js +1455 -0
  361. package/dist/parser/AstNode.spec.js.map +1 -0
  362. package/dist/parser/BrightScriptDocParser.d.ts +56 -0
  363. package/dist/parser/BrightScriptDocParser.js +294 -0
  364. package/dist/parser/BrightScriptDocParser.js.map +1 -0
  365. package/dist/parser/BrightScriptDocParser.spec.d.ts +1 -0
  366. package/dist/parser/BrightScriptDocParser.spec.js +310 -0
  367. package/dist/parser/BrightScriptDocParser.spec.js.map +1 -0
  368. package/dist/parser/BrsTranspileState.d.ts +22 -3
  369. package/dist/parser/BrsTranspileState.js +19 -0
  370. package/dist/parser/BrsTranspileState.js.map +1 -1
  371. package/dist/parser/Expression.d.ts +553 -221
  372. package/dist/parser/Expression.js +1414 -505
  373. package/dist/parser/Expression.js.map +1 -1
  374. package/dist/parser/Expression.spec.d.ts +1 -0
  375. package/dist/parser/Expression.spec.js +40 -0
  376. package/dist/parser/Expression.spec.js.map +1 -0
  377. package/dist/parser/Parser.Class.spec.js +255 -125
  378. package/dist/parser/Parser.Class.spec.js.map +1 -1
  379. package/dist/parser/Parser.d.ts +117 -124
  380. package/dist/parser/Parser.js +1669 -982
  381. package/dist/parser/Parser.js.map +1 -1
  382. package/dist/parser/Parser.spec.d.ts +3 -1
  383. package/dist/parser/Parser.spec.js +2111 -525
  384. package/dist/parser/Parser.spec.js.map +1 -1
  385. package/dist/parser/SGParser.d.ts +29 -13
  386. package/dist/parser/SGParser.js +85 -56
  387. package/dist/parser/SGParser.js.map +1 -1
  388. package/dist/parser/SGParser.spec.js +30 -45
  389. package/dist/parser/SGParser.spec.js.map +1 -1
  390. package/dist/parser/SGTypes.d.ts +134 -46
  391. package/dist/parser/SGTypes.js +206 -115
  392. package/dist/parser/SGTypes.js.map +1 -1
  393. package/dist/parser/Statement.d.ts +849 -267
  394. package/dist/parser/Statement.js +2412 -625
  395. package/dist/parser/Statement.js.map +1 -1
  396. package/dist/parser/Statement.spec.js +133 -36
  397. package/dist/parser/Statement.spec.js.map +1 -1
  398. package/dist/parser/TranspileState.d.ts +26 -12
  399. package/dist/parser/TranspileState.js +115 -24
  400. package/dist/parser/TranspileState.js.map +1 -1
  401. package/dist/parser/tests/Parser.spec.d.ts +3 -9
  402. package/dist/parser/tests/Parser.spec.js +7 -13
  403. package/dist/parser/tests/Parser.spec.js.map +1 -1
  404. package/dist/parser/tests/controlFlow/For.spec.js +83 -75
  405. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  406. package/dist/parser/tests/controlFlow/ForEach.spec.js +85 -51
  407. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  408. package/dist/parser/tests/controlFlow/If.spec.js +382 -239
  409. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  410. package/dist/parser/tests/controlFlow/While.spec.js +52 -45
  411. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  412. package/dist/parser/tests/expression/Additive.spec.js +51 -43
  413. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  414. package/dist/parser/tests/expression/ArrayLiterals.spec.js +192 -142
  415. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  416. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +236 -160
  417. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  418. package/dist/parser/tests/expression/Boolean.spec.js +41 -34
  419. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  420. package/dist/parser/tests/expression/Call.spec.js +173 -55
  421. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  422. package/dist/parser/tests/expression/Exponential.spec.js +20 -20
  423. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  424. package/dist/parser/tests/expression/Function.spec.js +291 -282
  425. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  426. package/dist/parser/tests/expression/Indexing.spec.js +193 -110
  427. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  428. package/dist/parser/tests/expression/Multiplicative.spec.js +42 -42
  429. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  430. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +260 -115
  431. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  432. package/dist/parser/tests/expression/PrefixUnary.spec.js +58 -52
  433. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  434. package/dist/parser/tests/expression/Primary.spec.js +76 -60
  435. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  436. package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +1 -0
  437. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +171 -0
  438. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -0
  439. package/dist/parser/tests/expression/Relational.spec.js +50 -50
  440. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  441. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +31 -31
  442. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  443. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +281 -94
  444. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  445. package/dist/parser/tests/expression/TernaryExpression.spec.js +747 -192
  446. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  447. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  448. package/dist/parser/tests/expression/TypeExpression.spec.js +126 -0
  449. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  450. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  451. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  452. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  453. package/dist/parser/tests/statement/AssignmentOperators.spec.js +44 -44
  454. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  455. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
  456. package/dist/parser/tests/statement/ConstStatement.spec.js +500 -0
  457. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
  458. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  459. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  460. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  461. package/dist/parser/tests/statement/Declaration.spec.js +61 -55
  462. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  463. package/dist/parser/tests/statement/Dim.spec.js +29 -22
  464. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  465. package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
  466. package/dist/parser/tests/statement/Enum.spec.js +744 -0
  467. package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
  468. package/dist/parser/tests/statement/For.spec.d.ts +1 -0
  469. package/dist/parser/tests/statement/For.spec.js +45 -0
  470. package/dist/parser/tests/statement/For.spec.js.map +1 -0
  471. package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
  472. package/dist/parser/tests/statement/ForEach.spec.js +36 -0
  473. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
  474. package/dist/parser/tests/statement/Function.spec.js +226 -215
  475. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  476. package/dist/parser/tests/statement/Goto.spec.js +16 -15
  477. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  478. package/dist/parser/tests/statement/Increment.spec.js +64 -61
  479. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  480. package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +1 -0
  481. package/dist/parser/tests/statement/InterfaceStatement.spec.js +110 -0
  482. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -0
  483. package/dist/parser/tests/statement/LibraryStatement.spec.js +22 -22
  484. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  485. package/dist/parser/tests/statement/Misc.spec.js +127 -168
  486. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  487. package/dist/parser/tests/statement/PrintStatement.spec.js +133 -114
  488. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  489. package/dist/parser/tests/statement/ReturnStatement.spec.js +57 -54
  490. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  491. package/dist/parser/tests/statement/Set.spec.js +131 -117
  492. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  493. package/dist/parser/tests/statement/Stop.spec.js +14 -13
  494. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  495. package/dist/parser/tests/statement/Throw.spec.js +11 -8
  496. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  497. package/dist/parser/tests/statement/TryCatch.spec.js +26 -15
  498. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  499. package/dist/preprocessor/Manifest.d.ts +6 -6
  500. package/dist/preprocessor/Manifest.js +17 -38
  501. package/dist/preprocessor/Manifest.js.map +1 -1
  502. package/dist/preprocessor/Manifest.spec.d.ts +1 -0
  503. package/dist/preprocessor/Manifest.spec.js +78 -103
  504. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  505. package/dist/roku-types/data.json +20347 -0
  506. package/dist/roku-types/index.d.ts +5726 -0
  507. package/dist/roku-types/index.js +11 -0
  508. package/dist/roku-types/index.js.map +1 -0
  509. package/dist/types/ArrayType.d.ts +12 -5
  510. package/dist/types/ArrayType.js +89 -24
  511. package/dist/types/ArrayType.js.map +1 -1
  512. package/dist/types/ArrayType.spec.js +39 -11
  513. package/dist/types/ArrayType.spec.js.map +1 -1
  514. package/dist/types/AssociativeArrayType.d.ts +15 -0
  515. package/dist/types/AssociativeArrayType.js +64 -0
  516. package/dist/types/AssociativeArrayType.js.map +1 -0
  517. package/dist/types/BaseFunctionType.d.ts +10 -0
  518. package/dist/types/BaseFunctionType.js +26 -0
  519. package/dist/types/BaseFunctionType.js.map +1 -0
  520. package/dist/types/BooleanType.d.ts +9 -5
  521. package/dist/types/BooleanType.js +19 -8
  522. package/dist/types/BooleanType.js.map +1 -1
  523. package/dist/types/BooleanType.spec.js +10 -4
  524. package/dist/types/BooleanType.spec.js.map +1 -1
  525. package/dist/types/BscType.d.ts +41 -3
  526. package/dist/types/BscType.js +152 -0
  527. package/dist/types/BscType.js.map +1 -1
  528. package/dist/types/BscTypeKind.d.ts +28 -0
  529. package/dist/types/BscTypeKind.js +33 -0
  530. package/dist/types/BscTypeKind.js.map +1 -0
  531. package/dist/types/BuiltInInterfaceAdder.d.ts +28 -0
  532. package/dist/types/BuiltInInterfaceAdder.js +212 -0
  533. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  534. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  535. package/dist/types/BuiltInInterfaceAdder.spec.js +115 -0
  536. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  537. package/dist/types/CallFuncableType.d.ts +24 -0
  538. package/dist/types/CallFuncableType.js +91 -0
  539. package/dist/types/CallFuncableType.js.map +1 -0
  540. package/dist/types/ClassType.d.ts +17 -0
  541. package/dist/types/ClassType.js +60 -0
  542. package/dist/types/ClassType.js.map +1 -0
  543. package/dist/types/ClassType.spec.d.ts +1 -0
  544. package/dist/types/ClassType.spec.js +76 -0
  545. package/dist/types/ClassType.spec.js.map +1 -0
  546. package/dist/types/ComponentType.d.ts +22 -0
  547. package/dist/types/ComponentType.js +107 -0
  548. package/dist/types/ComponentType.js.map +1 -0
  549. package/dist/types/DoubleType.d.ts +10 -5
  550. package/dist/types/DoubleType.js +21 -17
  551. package/dist/types/DoubleType.js.map +1 -1
  552. package/dist/types/DoubleType.spec.js +12 -4
  553. package/dist/types/DoubleType.spec.js.map +1 -1
  554. package/dist/types/DynamicType.d.ts +13 -5
  555. package/dist/types/DynamicType.js +26 -5
  556. package/dist/types/DynamicType.js.map +1 -1
  557. package/dist/types/DynamicType.spec.js +16 -5
  558. package/dist/types/DynamicType.spec.js.map +1 -1
  559. package/dist/types/EnumType.d.ts +42 -0
  560. package/dist/types/EnumType.js +98 -0
  561. package/dist/types/EnumType.js.map +1 -0
  562. package/dist/types/EnumType.spec.d.ts +1 -0
  563. package/dist/types/EnumType.spec.js +33 -0
  564. package/dist/types/EnumType.spec.js.map +1 -0
  565. package/dist/types/FloatType.d.ts +10 -5
  566. package/dist/types/FloatType.js +21 -17
  567. package/dist/types/FloatType.js.map +1 -1
  568. package/dist/types/FloatType.spec.js +4 -4
  569. package/dist/types/FloatType.spec.js.map +1 -1
  570. package/dist/types/FunctionType.d.ts +8 -22
  571. package/dist/types/FunctionType.js +25 -63
  572. package/dist/types/FunctionType.js.map +1 -1
  573. package/dist/types/InheritableType.d.ts +29 -0
  574. package/dist/types/InheritableType.js +173 -0
  575. package/dist/types/InheritableType.js.map +1 -0
  576. package/dist/types/InlineInterfaceType.d.ts +5 -0
  577. package/dist/types/InlineInterfaceType.js +17 -0
  578. package/dist/types/InlineInterfaceType.js.map +1 -0
  579. package/dist/types/IntegerType.d.ts +10 -5
  580. package/dist/types/IntegerType.js +21 -17
  581. package/dist/types/IntegerType.js.map +1 -1
  582. package/dist/types/IntegerType.spec.js +8 -4
  583. package/dist/types/IntegerType.spec.js.map +1 -1
  584. package/dist/types/InterfaceType.d.ts +14 -6
  585. package/dist/types/InterfaceType.js +30 -15
  586. package/dist/types/InterfaceType.js.map +1 -1
  587. package/dist/types/InterfaceType.spec.d.ts +1 -0
  588. package/dist/types/InterfaceType.spec.js +227 -0
  589. package/dist/types/InterfaceType.spec.js.map +1 -0
  590. package/dist/types/IntersectionType.d.ts +29 -0
  591. package/dist/types/IntersectionType.js +253 -0
  592. package/dist/types/IntersectionType.js.map +1 -0
  593. package/dist/types/IntersectionType.spec.d.ts +1 -0
  594. package/dist/types/IntersectionType.spec.js +150 -0
  595. package/dist/types/IntersectionType.spec.js.map +1 -0
  596. package/dist/types/InvalidType.d.ts +10 -5
  597. package/dist/types/InvalidType.js +21 -9
  598. package/dist/types/InvalidType.js.map +1 -1
  599. package/dist/types/InvalidType.spec.js +8 -4
  600. package/dist/types/InvalidType.spec.js.map +1 -1
  601. package/dist/types/LongIntegerType.d.ts +10 -5
  602. package/dist/types/LongIntegerType.js +21 -17
  603. package/dist/types/LongIntegerType.js.map +1 -1
  604. package/dist/types/LongIntegerType.spec.js +10 -4
  605. package/dist/types/LongIntegerType.spec.js.map +1 -1
  606. package/dist/types/NamespaceType.d.ts +12 -0
  607. package/dist/types/NamespaceType.js +28 -0
  608. package/dist/types/NamespaceType.js.map +1 -0
  609. package/dist/types/ObjectType.d.ts +12 -5
  610. package/dist/types/ObjectType.js +25 -8
  611. package/dist/types/ObjectType.js.map +1 -1
  612. package/dist/types/ObjectType.spec.js +3 -3
  613. package/dist/types/ObjectType.spec.js.map +1 -1
  614. package/dist/types/ReferenceType.d.ts +123 -0
  615. package/dist/types/ReferenceType.js +720 -0
  616. package/dist/types/ReferenceType.js.map +1 -0
  617. package/dist/types/ReferenceType.spec.d.ts +1 -0
  618. package/dist/types/ReferenceType.spec.js +151 -0
  619. package/dist/types/ReferenceType.spec.js.map +1 -0
  620. package/dist/types/StringType.d.ts +12 -5
  621. package/dist/types/StringType.js +23 -8
  622. package/dist/types/StringType.js.map +1 -1
  623. package/dist/types/StringType.spec.js +3 -3
  624. package/dist/types/StringType.spec.js.map +1 -1
  625. package/dist/types/TypeStatementType.d.ts +18 -0
  626. package/dist/types/TypeStatementType.js +45 -0
  627. package/dist/types/TypeStatementType.js.map +1 -0
  628. package/dist/types/TypedFunctionType.d.ts +34 -0
  629. package/dist/types/TypedFunctionType.js +147 -0
  630. package/dist/types/TypedFunctionType.js.map +1 -0
  631. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  632. package/dist/types/TypedFunctionType.spec.js +122 -0
  633. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  634. package/dist/types/UninitializedType.d.ts +11 -6
  635. package/dist/types/UninitializedType.js +20 -11
  636. package/dist/types/UninitializedType.js.map +1 -1
  637. package/dist/types/UnionType.d.ts +27 -0
  638. package/dist/types/UnionType.js +193 -0
  639. package/dist/types/UnionType.js.map +1 -0
  640. package/dist/types/UnionType.spec.d.ts +1 -0
  641. package/dist/types/UnionType.spec.js +205 -0
  642. package/dist/types/UnionType.spec.js.map +1 -0
  643. package/dist/types/VoidType.d.ts +11 -5
  644. package/dist/types/VoidType.js +22 -8
  645. package/dist/types/VoidType.js.map +1 -1
  646. package/dist/types/VoidType.spec.js +3 -3
  647. package/dist/types/VoidType.spec.js.map +1 -1
  648. package/dist/types/helper.spec.d.ts +1 -0
  649. package/dist/types/helper.spec.js +174 -0
  650. package/dist/types/helper.spec.js.map +1 -0
  651. package/dist/types/helpers.d.ts +51 -0
  652. package/dist/types/helpers.js +323 -0
  653. package/dist/types/helpers.js.map +1 -0
  654. package/dist/types/index.d.ts +22 -0
  655. package/dist/types/index.js +39 -0
  656. package/dist/types/index.js.map +1 -0
  657. package/dist/types/roFunctionType.d.ts +11 -0
  658. package/dist/types/roFunctionType.js +37 -0
  659. package/dist/types/roFunctionType.js.map +1 -0
  660. package/dist/types/roFunctionType.spec.d.ts +1 -0
  661. package/dist/types/roFunctionType.spec.js +20 -0
  662. package/dist/types/roFunctionType.spec.js.map +1 -0
  663. package/dist/util.d.ts +288 -187
  664. package/dist/util.js +2018 -575
  665. package/dist/util.js.map +1 -1
  666. package/dist/validators/ClassValidator.d.ts +9 -15
  667. package/dist/validators/ClassValidator.js +93 -138
  668. package/dist/validators/ClassValidator.js.map +1 -1
  669. package/package.json +185 -138
  670. package/CHANGELOG.md +0 -1188
  671. package/dist/astUtils/index.d.ts +0 -7
  672. package/dist/astUtils/index.js +0 -26
  673. package/dist/astUtils/index.js.map +0 -1
  674. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
  675. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +0 -63
  676. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
  677. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +0 -45
  678. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
  679. package/dist/lexer/index.d.ts +0 -3
  680. package/dist/lexer/index.js +0 -17
  681. package/dist/lexer/index.js.map +0 -1
  682. package/dist/parser/SGTypes.spec.js +0 -351
  683. package/dist/parser/SGTypes.spec.js.map +0 -1
  684. package/dist/parser/index.d.ts +0 -3
  685. package/dist/parser/index.js +0 -16
  686. package/dist/parser/index.js.map +0 -1
  687. package/dist/preprocessor/Chunk.d.ts +0 -82
  688. package/dist/preprocessor/Chunk.js +0 -77
  689. package/dist/preprocessor/Chunk.js.map +0 -1
  690. package/dist/preprocessor/Preprocessor.d.ts +0 -60
  691. package/dist/preprocessor/Preprocessor.js +0 -156
  692. package/dist/preprocessor/Preprocessor.js.map +0 -1
  693. package/dist/preprocessor/Preprocessor.spec.js +0 -152
  694. package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
  695. package/dist/preprocessor/PreprocessorParser.d.ts +0 -61
  696. package/dist/preprocessor/PreprocessorParser.js +0 -194
  697. package/dist/preprocessor/PreprocessorParser.js.map +0 -1
  698. package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
  699. package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
  700. package/dist/preprocessor/index.d.ts +0 -3
  701. package/dist/preprocessor/index.js +0 -16
  702. package/dist/preprocessor/index.js.map +0 -1
  703. package/dist/types/CustomType.d.ts +0 -10
  704. package/dist/types/CustomType.js +0 -35
  705. package/dist/types/CustomType.js.map +0 -1
  706. package/dist/types/FunctionType.spec.js +0 -29
  707. package/dist/types/FunctionType.spec.js.map +0 -1
  708. package/dist/types/LazyType.d.ts +0 -15
  709. package/dist/types/LazyType.js +0 -32
  710. package/dist/types/LazyType.js.map +0 -1
  711. /package/dist/{bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts → astUtils/CachedLookups.spec.d.ts} +0 -0
  712. /package/dist/{parser/SGTypes.spec.d.ts → astUtils/Editor.spec.d.ts} +0 -0
  713. /package/dist/{preprocessor/Preprocessor.spec.d.ts → bscPlugin/completions/CompletionsProcessor.spec.d.ts} +0 -0
  714. /package/dist/{preprocessor/PreprocessorParser.spec.d.ts → bscPlugin/definition/DefinitionProvider.spec.d.ts} +0 -0
  715. /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/hover/HoverProcessor.spec.d.ts} +0 -0
@@ -0,0 +1,633 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeTypeCompletions = exports.KeywordCompletions = exports.CompletionsProcessor = void 0;
4
+ const reflection_1 = require("../../astUtils/reflection");
5
+ const TokenKind_1 = require("../../lexer/TokenKind");
6
+ const util_1 = require("../../util");
7
+ const Parser_1 = require("../../parser/Parser");
8
+ const vscode_languageserver_1 = require("vscode-languageserver");
9
+ const BooleanType_1 = require("../../types/BooleanType");
10
+ const InvalidType_1 = require("../../types/InvalidType");
11
+ const creators_1 = require("../../astUtils/creators");
12
+ const Logger_1 = require("../../Logger");
13
+ const SCOPES_FOR_COMPLETION = 3;
14
+ class CompletionsProcessor {
15
+ constructor(event) {
16
+ this.event = event;
17
+ }
18
+ process() {
19
+ let file = this.event.file;
20
+ this.event.program.logger.time(Logger_1.LogLevel.log, ['Processing completions'], () => {
21
+ // Find the scopes for this file - Only process the first few scopes
22
+ const scopesToProcess = this.getScopesForCompletion();
23
+ //get the completions from all scopes for this file
24
+ let completionResults = [];
25
+ let globalResults = [];
26
+ if ((0, reflection_1.isXmlFile)(file)) {
27
+ completionResults = this.getXmlFileCompletions(this.event.position, file);
28
+ }
29
+ else if ((0, reflection_1.isBrsFile)(file)) {
30
+ //handle script import completions
31
+ let scriptImport = util_1.util.getScriptImportAtPosition(file.ownScriptImports, this.event.position);
32
+ if (scriptImport) {
33
+ this.event.completions.push(...this.getScriptImportCompletions(file.program, file.pkgPath, scriptImport));
34
+ return;
35
+ }
36
+ const results = this.getBrsFileCompletions(this.event.position, file, scopesToProcess);
37
+ completionResults = results.scoped;
38
+ globalResults = results.global;
39
+ }
40
+ //push any global results to the completions array
41
+ this.event.completions.push(...globalResults);
42
+ //only keep completions common to every scope for this file (the global results are not considered in this filter and will always be included)
43
+ let allCompletions = completionResults.flat();
44
+ let keyCounts = new Map();
45
+ for (let completion of allCompletions) {
46
+ let key = `${completion.label}-${completion.kind}`;
47
+ keyCounts.set(key, keyCounts.has(key) ? keyCounts.get(key) + 1 : 1);
48
+ if (keyCounts.get(key) === scopesToProcess.length) {
49
+ this.event.completions.push(completion);
50
+ }
51
+ }
52
+ });
53
+ }
54
+ getScopesForCompletion() {
55
+ var _a;
56
+ //the scopes for this file
57
+ let scopesForFile = (_a = this.event.scopes) !== null && _a !== void 0 ? _a : [];
58
+ // //if there are no scopes, include the global scope so we at least get the built-in functions
59
+ // if (this.event.program) {
60
+ // scopesForFile = scopesForFile.length > 0 ? scopesForFile : [];
61
+ // }
62
+ // Only process the first few scopes. This might result in missing completions,
63
+ // but it's better than wasting TONS of cycles building essentially the same completions over and over
64
+ const scopesToProcess = scopesForFile.slice(0, SCOPES_FOR_COMPLETION);
65
+ // always include the source scope if applicable to this file
66
+ let sourceScope = scopesForFile.find(x => x.name === 'source');
67
+ if (sourceScope && !scopesToProcess.includes(sourceScope)) {
68
+ //replace the first scope with the source scope so we process a consistent number of scopes if possible
69
+ scopesToProcess[0] = sourceScope;
70
+ }
71
+ return scopesToProcess;
72
+ }
73
+ /**
74
+ * Get all available completions for the specified position
75
+ * @param position the position to get completions
76
+ */
77
+ getXmlFileCompletions(position, file) {
78
+ let scriptImport = util_1.util.getScriptImportAtPosition(file.scriptTagImports, position);
79
+ if (scriptImport) {
80
+ return this.getScriptImportCompletions(file.program, file.pkgPath, scriptImport);
81
+ }
82
+ else {
83
+ return [];
84
+ }
85
+ }
86
+ /**
87
+ * Get a list of all script imports, relative to the specified pkgPath
88
+ * @param program - reference to the program
89
+ * @param sourcePkgPath - the pkgPath of the source that wants to resolve script imports
90
+ * @param scriptImport - example script import
91
+ */
92
+ getScriptImportCompletions(program, sourcePkgPath, scriptImport) {
93
+ let lowerSourcePkgPath = sourcePkgPath.toLowerCase();
94
+ let result = [];
95
+ /**
96
+ * hashtable to prevent duplicate results
97
+ */
98
+ let resultPkgPaths = {};
99
+ //restrict to only .brs files
100
+ for (let key in program.files) {
101
+ let file = program.files[key];
102
+ const ext = util_1.util.getExtension(file.srcPath);
103
+ if (
104
+ //is a BrightScript or BrighterScript file
105
+ (ext === '.bs' || ext === '.brs') &&
106
+ //this file is not the current file
107
+ lowerSourcePkgPath !== file.pkgPath.toLowerCase()) {
108
+ //add the relative path
109
+ let relativePath = util_1.util.getRelativePath(sourcePkgPath, file.destPath).replace(/\\/g, '/');
110
+ let pkgPathStandardized = file.pkgPath.replace(/\\/g, '/');
111
+ let filePkgPath = `pkg:/${pkgPathStandardized}`;
112
+ let importPkgPath = util_1.util.getImportPackagePath(file.srcPath, filePkgPath);
113
+ let lowerFilePkgPath = filePkgPath.toLowerCase();
114
+ if (!resultPkgPaths[lowerFilePkgPath]) {
115
+ resultPkgPaths[lowerFilePkgPath] = true;
116
+ result.push({
117
+ label: relativePath,
118
+ detail: file.srcPath,
119
+ kind: vscode_languageserver_1.CompletionItemKind.File,
120
+ textEdit: {
121
+ newText: relativePath,
122
+ range: scriptImport.filePathRange
123
+ }
124
+ });
125
+ //add the absolute path
126
+ result.push({
127
+ label: importPkgPath,
128
+ detail: file.srcPath,
129
+ kind: vscode_languageserver_1.CompletionItemKind.File,
130
+ textEdit: {
131
+ newText: importPkgPath,
132
+ range: scriptImport.filePathRange
133
+ }
134
+ });
135
+ }
136
+ }
137
+ }
138
+ return result;
139
+ }
140
+ /**
141
+ * Get completions available at the given cursor. This aggregates all values from this file and the current scope.
142
+ */
143
+ getBrsFileCompletions(position, file, scopesToProcess) {
144
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
145
+ let result = [];
146
+ const currentTokenByFilePosition = file.getTokenAt(position);
147
+ const currentToken = currentTokenByFilePosition !== null && currentTokenByFilePosition !== void 0 ? currentTokenByFilePosition : file.getTokenAt((_b = (_a = file.getClosestExpression(position)) === null || _a === void 0 ? void 0 : _a.location) === null || _b === void 0 ? void 0 : _b.range.start);
148
+ const emptyResult = { global: [], scoped: [] };
149
+ if (!currentToken) {
150
+ return emptyResult;
151
+ }
152
+ const tokenKind = currentToken === null || currentToken === void 0 ? void 0 : currentToken.kind;
153
+ //if cursor is after a comment, disable completions
154
+ if (this.isPostionInComment(file, position)) {
155
+ return emptyResult;
156
+ }
157
+ let expression;
158
+ let shouldLookForMembers = false;
159
+ let shouldLookForCallFuncMembers = false;
160
+ let symbolTableLookupFlag = 1 /* SymbolTypeFlag.runtime */;
161
+ let beforeDotToken;
162
+ if (file.tokenFollows(currentToken, TokenKind_1.TokenKind.Goto)) {
163
+ let functionScope = file.getFunctionScopeAtPosition(position);
164
+ return { global: [], scoped: this.getLabelCompletion(functionScope) };
165
+ }
166
+ if (this.isTokenAdjacentTo(file, currentToken, TokenKind_1.TokenKind.Dot)) {
167
+ const dotToken = this.getAdjacentToken(file, currentToken, TokenKind_1.TokenKind.Dot);
168
+ beforeDotToken = file.getTokenBefore(dotToken);
169
+ expression = file.getClosestExpression((_c = beforeDotToken === null || beforeDotToken === void 0 ? void 0 : beforeDotToken.location) === null || _c === void 0 ? void 0 : _c.range.end);
170
+ shouldLookForMembers = true;
171
+ }
172
+ else if (this.isTokenAdjacentTo(file, currentToken, TokenKind_1.TokenKind.Callfunc)) {
173
+ const dotToken = this.getAdjacentToken(file, currentToken, TokenKind_1.TokenKind.Callfunc);
174
+ beforeDotToken = file.getTokenBefore(dotToken);
175
+ expression = file.getClosestExpression((_d = beforeDotToken === null || beforeDotToken === void 0 ? void 0 : beforeDotToken.location) === null || _d === void 0 ? void 0 : _d.range.end);
176
+ shouldLookForCallFuncMembers = true;
177
+ }
178
+ else if (this.isTokenAdjacentTo(file, currentToken, TokenKind_1.TokenKind.As)) {
179
+ if (file.parseMode === Parser_1.ParseMode.BrightScript) {
180
+ return { global: exports.NativeTypeCompletions, scoped: [] };
181
+ }
182
+ expression = file.getClosestExpression(this.event.position);
183
+ symbolTableLookupFlag = 2 /* SymbolTypeFlag.typetime */;
184
+ }
185
+ else if (this.isTokenAdjacentTo(file, currentToken, TokenKind_1.TokenKind.Equal)) {
186
+ expression = file.getClosestExpression(this.event.position);
187
+ if (expression === null || expression === void 0 ? void 0 : expression.findAncestor(reflection_1.isAliasStatement)) {
188
+ // allow runtime and typetime lookups in alias statements
189
+ // eslint-disable-next-line no-bitwise
190
+ symbolTableLookupFlag = 1 /* SymbolTypeFlag.runtime */ | 2 /* SymbolTypeFlag.typetime */;
191
+ }
192
+ }
193
+ else {
194
+ expression = file.getClosestExpression(this.event.position);
195
+ }
196
+ if ((0, reflection_1.isFunctionExpression)(expression)) {
197
+ // if completion is the last character of the function, use the completions of the body of the function
198
+ expression = expression.body;
199
+ }
200
+ if (!expression) {
201
+ return emptyResult;
202
+ }
203
+ const tokenBefore = file.getTokenBefore(file.getClosestToken((_f = (_e = expression.location) === null || _e === void 0 ? void 0 : _e.range) === null || _f === void 0 ? void 0 : _f.start));
204
+ // helper to check get correct symbol tables for look ups
205
+ function getSymbolTableForLookups() {
206
+ if (shouldLookForMembers) {
207
+ let type = expression.getType({ flags: 1 /* SymbolTypeFlag.runtime */ });
208
+ if ((0, reflection_1.isEnumType)(type) && !(0, reflection_1.isEnumType)(expression.getType({ flags: 2 /* SymbolTypeFlag.typetime */ }))) {
209
+ // enum members are registered in the symbol table as enum type
210
+ // an enum type should ONLY use the enum type's members when called directly
211
+ // since this is not a typetime enum, the actual type is actually an enum member!
212
+ type = type.defaultMemberType;
213
+ }
214
+ // Make sure built in interfaces are added.
215
+ if (type.isResolvable()) {
216
+ type.addBuiltInInterfaces();
217
+ }
218
+ return type === null || type === void 0 ? void 0 : type.getMemberTable();
219
+ }
220
+ else if (shouldLookForCallFuncMembers) {
221
+ let type = expression.getType({ flags: 1 /* SymbolTypeFlag.runtime */ });
222
+ if ((0, reflection_1.isComponentType)(type)) {
223
+ // it's a component and you're doing a callFunc - only let it do functions from that table
224
+ return type.getCallFuncTable();
225
+ }
226
+ // this is not a component type - there should be no callfunc members
227
+ return undefined;
228
+ }
229
+ const symbolTableToUse = expression.getSymbolTable();
230
+ return symbolTableToUse;
231
+ }
232
+ const areMembers = (shouldLookForMembers || shouldLookForCallFuncMembers);
233
+ const notMembers = !areMembers;
234
+ const isAfterNew = (tokenBefore === null || tokenBefore === void 0 ? void 0 : tokenBefore.kind) === TokenKind_1.TokenKind.New;
235
+ const shouldLookInNamespace = notMembers && expression.findAncestor(reflection_1.isNamespaceStatement);
236
+ const containingClassStmt = expression.findAncestor(reflection_1.isClassStatement);
237
+ const containingNamespace = expression.findAncestor(reflection_1.isNamespaceStatement);
238
+ const containingNamespaceName = containingNamespace === null || containingNamespace === void 0 ? void 0 : containingNamespace.getName(Parser_1.ParseMode.BrighterScript);
239
+ const containingFunctionExpression = expression.findAncestor(reflection_1.isFunctionExpression);
240
+ const tokenIsLiteralString = (tokenKind === TokenKind_1.TokenKind.StringLiteral || tokenKind === TokenKind_1.TokenKind.TemplateStringQuasi);
241
+ const globalCompletions = [];
242
+ if (!tokenIsLiteralString && notMembers && !isAfterNew && ((_g = this.event.program) === null || _g === void 0 ? void 0 : _g.globalScope)) {
243
+ let globalSymbols = (_h = this.event.program.globalScope.symbolTable.getAllSymbols(symbolTableLookupFlag)) !== null && _h !== void 0 ? _h : [];
244
+ if (symbolTableLookupFlag === 1 /* SymbolTypeFlag.runtime */) {
245
+ globalSymbols.push(...this.getGlobalValues());
246
+ }
247
+ globalCompletions.push(...this.getSymbolsCompletion(globalSymbols));
248
+ }
249
+ for (const scope of scopesToProcess) {
250
+ if (tokenKind === TokenKind_1.TokenKind.StringLiteral || tokenKind === TokenKind_1.TokenKind.TemplateStringQuasi) {
251
+ result.push(...this.getStringLiteralCompletions(scope, currentToken));
252
+ continue;
253
+ }
254
+ scope.linkSymbolTable();
255
+ const symbolTable = getSymbolTableForLookups();
256
+ let currentSymbols = [];
257
+ if (areMembers) {
258
+ currentSymbols = (_j = symbolTable === null || symbolTable === void 0 ? void 0 : symbolTable.getAllSymbols(symbolTableLookupFlag)) !== null && _j !== void 0 ? _j : [];
259
+ const tokenType = expression.getType({ flags: 1 /* SymbolTypeFlag.runtime */ });
260
+ if ((0, reflection_1.isClassType)(tokenType)) {
261
+ currentSymbols = currentSymbols.filter((symbol) => {
262
+ if (symbol.name === 'new') {
263
+ // don't return the constructor as a property
264
+ return false;
265
+ }
266
+ return this.isMemberAccessible(scope, symbol, containingClassStmt, containingNamespaceName);
267
+ });
268
+ }
269
+ }
270
+ else {
271
+ currentSymbols = (_k = symbolTable === null || symbolTable === void 0 ? void 0 : symbolTable.getOwnSymbols(symbolTableLookupFlag)) !== null && _k !== void 0 ? _k : [];
272
+ if (containingFunctionExpression) {
273
+ if (symbolTable !== containingFunctionExpression.body.symbolTable) {
274
+ // this is a pocket table - get all symbols defined in full function
275
+ currentSymbols.push(...containingFunctionExpression.body.getSymbolTable().getOwnSymbols(symbolTableLookupFlag));
276
+ }
277
+ currentSymbols.push(...containingFunctionExpression.getSymbolTable().getOwnSymbols(symbolTableLookupFlag));
278
+ }
279
+ if (shouldLookInNamespace) {
280
+ const nsNameParts = shouldLookInNamespace.getNameParts();
281
+ let nameSpaceTypeSofar;
282
+ let nsNameLookupTable = scope.symbolTable;
283
+ for (const namePart of nsNameParts) {
284
+ nameSpaceTypeSofar = nsNameLookupTable === null || nsNameLookupTable === void 0 ? void 0 : nsNameLookupTable.getSymbolType(namePart.text, { flags: symbolTableLookupFlag });
285
+ if ((0, reflection_1.isNamespaceType)(nameSpaceTypeSofar)) {
286
+ nsNameLookupTable = nameSpaceTypeSofar.getMemberTable();
287
+ }
288
+ else {
289
+ break;
290
+ }
291
+ }
292
+ if ((0, reflection_1.isNamespaceType)(nameSpaceTypeSofar)) {
293
+ currentSymbols.push(...nameSpaceTypeSofar.getMemberTable().getAllSymbols(symbolTableLookupFlag));
294
+ }
295
+ }
296
+ currentSymbols.push(...this.getScopeSymbolCompletions(file, scope, symbolTableLookupFlag));
297
+ }
298
+ let ignoreAllPropertyNames = false;
299
+ if (isAfterNew) {
300
+ //we are after a new keyword; so we can only be namespaces that have a class or classes at this point
301
+ currentSymbols = currentSymbols.filter(symbol => (0, reflection_1.isClassType)(symbol.type) || this.isNamespaceTypeWithMemberType(symbol.type, reflection_1.isClassType));
302
+ ignoreAllPropertyNames = true;
303
+ }
304
+ result.push(...this.getSymbolsCompletion(currentSymbols, areMembers));
305
+ if (shouldLookForMembers && currentSymbols.length === 0 && !ignoreAllPropertyNames) {
306
+ // could not find members of actual known types.. just try everything
307
+ result.push(...this.getPropertyNameCompletions(scope), ...this.getAllClassMemberCompletions(scope).values());
308
+ }
309
+ else if (shouldLookForCallFuncMembers && currentSymbols.length === 0) {
310
+ // could not find members of actual known types.. just try everything
311
+ result.push(...this.getCallFuncNameCompletions(scope));
312
+ }
313
+ scope.unlinkSymbolTable();
314
+ }
315
+ return { global: globalCompletions, scoped: result };
316
+ }
317
+ getScopeSymbolCompletions(file, scope, symbolTableLookupFlag) {
318
+ // get all scope available symbols
319
+ const scopeSymbols = file.parseMode === Parser_1.ParseMode.BrighterScript
320
+ ? [...scope.symbolTable.getOwnSymbols(symbolTableLookupFlag), ...scope.allNamespaceTypeTable.getOwnSymbols(symbolTableLookupFlag)]
321
+ : scope.symbolTable.getOwnSymbols(symbolTableLookupFlag);
322
+ const fileSymbols = file.ast.getSymbolTable().getOwnSymbols(symbolTableLookupFlag);
323
+ scopeSymbols.push(...fileSymbols);
324
+ const scopeAvailableSymbols = scopeSymbols.filter(sym => {
325
+ if (file.parseMode === Parser_1.ParseMode.BrighterScript) {
326
+ // eslint-disable-next-line no-bitwise
327
+ if (sym.flags & 32 /* SymbolTypeFlag.postTranspile */) {
328
+ // underscored symbols should not be available in Brighterscript files
329
+ return false;
330
+ }
331
+ }
332
+ else if (file.parseMode === Parser_1.ParseMode.BrightScript) {
333
+ if ((0, reflection_1.isNamespaceType)(sym.type)) {
334
+ return false;
335
+ }
336
+ }
337
+ return true;
338
+ });
339
+ return scopeAvailableSymbols;
340
+ }
341
+ getSymbolsCompletion(symbols, areMembers = false) {
342
+ return symbols.map(symbol => {
343
+ var _a, _b, _c;
344
+ // if this is low priority, sort it at the end of the list
345
+ const sortText = ((_a = symbol.data) === null || _a === void 0 ? void 0 : _a.completionPriority) ? 'z'.repeat((_b = symbol.data) === null || _b === void 0 ? void 0 : _b.completionPriority) + symbol.name : undefined;
346
+ return {
347
+ label: symbol.name,
348
+ kind: this.getCompletionKindFromSymbol(symbol, areMembers),
349
+ detail: (_c = symbol === null || symbol === void 0 ? void 0 : symbol.type) === null || _c === void 0 ? void 0 : _c.toString(),
350
+ documentation: this.getDocumentation(symbol),
351
+ sortText: sortText
352
+ };
353
+ });
354
+ }
355
+ getDocumentation(symbol) {
356
+ var _a, _b, _c;
357
+ if ((_a = symbol.data) === null || _a === void 0 ? void 0 : _a.description) {
358
+ return (_b = symbol.data) === null || _b === void 0 ? void 0 : _b.description;
359
+ }
360
+ return util_1.util.getNodeDocumentation((_c = symbol.data) === null || _c === void 0 ? void 0 : _c.definingNode);
361
+ }
362
+ getCompletionKindFromSymbol(symbol, areMembers = false) {
363
+ var _a;
364
+ let type = symbol === null || symbol === void 0 ? void 0 : symbol.type;
365
+ if ((0, reflection_1.isTypeStatementType)(type)) {
366
+ type = type.wrappedType;
367
+ }
368
+ const extraData = symbol === null || symbol === void 0 ? void 0 : symbol.data;
369
+ let definingNode = extraData === null || extraData === void 0 ? void 0 : extraData.definingNode;
370
+ let isAlias = extraData === null || extraData === void 0 ? void 0 : extraData.isAlias;
371
+ let isInstance = extraData === null || extraData === void 0 ? void 0 : extraData.isInstance;
372
+ if ((0, reflection_1.isAliasStatement)(extraData === null || extraData === void 0 ? void 0 : extraData.definingNode)) {
373
+ isAlias = true;
374
+ const aliasExtraData = {};
375
+ type = extraData.definingNode.value.getType({ flags: symbol.flags, data: aliasExtraData });
376
+ definingNode = aliasExtraData === null || aliasExtraData === void 0 ? void 0 : aliasExtraData.definingNode;
377
+ }
378
+ if ((0, reflection_1.isConstStatement)(definingNode)) {
379
+ return vscode_languageserver_1.CompletionItemKind.Constant;
380
+ }
381
+ else if ((0, reflection_1.isClassType)(type) && !isInstance) {
382
+ return vscode_languageserver_1.CompletionItemKind.Class;
383
+ }
384
+ else if ((0, reflection_1.isCallableType)(type)) {
385
+ const finalTypeNameLower = type === null || type === void 0 ? void 0 : type.toString().split('.').pop().toLowerCase();
386
+ const symbolNameLower = symbol === null || symbol === void 0 ? void 0 : symbol.name.toLowerCase();
387
+ let nameMatchesType = symbolNameLower === finalTypeNameLower;
388
+ if ((0, reflection_1.isTypedFunctionType)(type) && !nameMatchesType) {
389
+ if (symbolNameLower === ((_a = type.name) === null || _a === void 0 ? void 0 : _a.replace(/\./gi, '_').toLowerCase())) {
390
+ nameMatchesType = true;
391
+ }
392
+ }
393
+ if (nameMatchesType || isAlias) {
394
+ return areMembers ? vscode_languageserver_1.CompletionItemKind.Method : vscode_languageserver_1.CompletionItemKind.Function;
395
+ }
396
+ }
397
+ else if ((0, reflection_1.isInterfaceType)(type) && !isInstance) {
398
+ return vscode_languageserver_1.CompletionItemKind.Interface;
399
+ }
400
+ else if ((0, reflection_1.isEnumType)(type) && !isInstance) {
401
+ return vscode_languageserver_1.CompletionItemKind.Enum;
402
+ }
403
+ else if ((0, reflection_1.isEnumMemberType)(type)) {
404
+ return vscode_languageserver_1.CompletionItemKind.EnumMember;
405
+ }
406
+ else if ((0, reflection_1.isNamespaceType)(type)) {
407
+ return vscode_languageserver_1.CompletionItemKind.Module;
408
+ }
409
+ else if ((0, reflection_1.isComponentType)(type) && (!isInstance)) {
410
+ return vscode_languageserver_1.CompletionItemKind.Interface;
411
+ }
412
+ if (areMembers) {
413
+ return vscode_languageserver_1.CompletionItemKind.Field;
414
+ }
415
+ const lowerSymbolName = symbol.name.toLowerCase();
416
+ if (lowerSymbolName === 'true' ||
417
+ lowerSymbolName === 'false' ||
418
+ lowerSymbolName === 'invalid') {
419
+ return vscode_languageserver_1.CompletionItemKind.Value;
420
+ }
421
+ const tokenIdentifier = util_1.util.tokenToBscType((0, creators_1.createIdentifier)(symbol.name));
422
+ if ((0, reflection_1.isNativeType)(tokenIdentifier)) {
423
+ return vscode_languageserver_1.CompletionItemKind.Keyword;
424
+ }
425
+ return vscode_languageserver_1.CompletionItemKind.Variable;
426
+ }
427
+ isNamespaceTypeWithMemberType(nsType, predicate) {
428
+ if (!(0, reflection_1.isNamespaceType)(nsType)) {
429
+ return false;
430
+ }
431
+ const members = nsType.memberTable.getAllSymbols(1 /* SymbolTypeFlag.runtime */);
432
+ for (const member of members) {
433
+ if (predicate(member.type)) {
434
+ return true;
435
+ }
436
+ else if ((0, reflection_1.isNamespaceType)(member.type)) {
437
+ if (this.isNamespaceTypeWithMemberType(member.type, predicate)) {
438
+ return true;
439
+ }
440
+ }
441
+ }
442
+ return false;
443
+ }
444
+ isMemberAccessible(scope, member, containingClassStmt, containingNamespaceName) {
445
+ var _a, _b;
446
+ // eslint-disable-next-line no-bitwise
447
+ const isPrivate = member.flags & 8 /* SymbolTypeFlag.private */;
448
+ // eslint-disable-next-line no-bitwise
449
+ const isProtected = member.flags & 16 /* SymbolTypeFlag.protected */;
450
+ if (!containingClassStmt || !(isPrivate || isProtected)) {
451
+ // not in a class - no private or protected members allowed
452
+ return !(isPrivate || isProtected);
453
+ }
454
+ const containingClassName = containingClassStmt.getName(Parser_1.ParseMode.BrighterScript);
455
+ const classStmtThatDefinedMember = (_b = (_a = member.data) === null || _a === void 0 ? void 0 : _a.definingNode) === null || _b === void 0 ? void 0 : _b.findAncestor(reflection_1.isClassStatement);
456
+ if (isPrivate) {
457
+ return containingClassStmt === classStmtThatDefinedMember;
458
+ }
459
+ else if (isProtected) {
460
+ const ancestorClasses = scope.getClassHierarchy(containingClassName, containingNamespaceName).map(link => link.item);
461
+ return ancestorClasses.includes(classStmtThatDefinedMember);
462
+ }
463
+ return true;
464
+ }
465
+ getLabelCompletion(functionScope) {
466
+ return functionScope.labelStatements.map(label => ({
467
+ label: label.name,
468
+ kind: vscode_languageserver_1.CompletionItemKind.Reference
469
+ }));
470
+ }
471
+ createCompletionFromFunctionStatement(statement, completionKind = vscode_languageserver_1.CompletionItemKind.Function) {
472
+ const funcType = statement.getType({ flags: 1 /* SymbolTypeFlag.runtime */ });
473
+ return {
474
+ label: statement.getName(Parser_1.ParseMode.BrighterScript),
475
+ kind: completionKind,
476
+ detail: funcType.toString(),
477
+ documentation: util_1.util.getNodeDocumentation(statement)
478
+ };
479
+ }
480
+ getStringLiteralCompletions(scope, currentToken) {
481
+ var _a, _b, _c, _d;
482
+ const match = /^("?)(pkg|libpkg):/.exec(currentToken.text);
483
+ let result = [];
484
+ if (match) {
485
+ // Get file path locations
486
+ const [, openingQuote, fileProtocol] = match;
487
+ //include every absolute file path from this scope
488
+ for (const file of scope.getAllFiles()) {
489
+ const pkgPath = `${fileProtocol}:/${file.pkgPath.replace(/\\/g, '/')}`;
490
+ result.push({
491
+ label: pkgPath,
492
+ textEdit: vscode_languageserver_1.TextEdit.replace(util_1.util.createRange((_a = currentToken.location) === null || _a === void 0 ? void 0 : _a.range.start.line,
493
+ //+1 to step past the opening quote
494
+ ((_b = currentToken.location) === null || _b === void 0 ? void 0 : _b.range.start.character) + (openingQuote ? 1 : 0), (_c = currentToken.location) === null || _c === void 0 ? void 0 : _c.range.end.line,
495
+ //-1 to exclude the closing quotemark (or the end character if there is no closing quotemark)
496
+ ((_d = currentToken.location) === null || _d === void 0 ? void 0 : _d.range.end.character) + (currentToken.text.endsWith('"') ? -1 : 0)), pkgPath),
497
+ kind: vscode_languageserver_1.CompletionItemKind.File
498
+ });
499
+ }
500
+ return result;
501
+ }
502
+ else {
503
+ //do nothing. we don't want to show completions inside of strings...
504
+ return [];
505
+ }
506
+ }
507
+ /**
508
+ * Scan all files for property names, and return them as completions
509
+ */
510
+ getPropertyNameCompletions(scope) {
511
+ let results = [];
512
+ scope.enumerateBrsFiles((file) => {
513
+ results.push(...file.propertyNameCompletions);
514
+ });
515
+ return results;
516
+ }
517
+ getAllClassMemberCompletions(scope) {
518
+ let results = new Map();
519
+ let filesSearched = new Set();
520
+ for (const file of scope.getAllFiles()) {
521
+ if ((0, reflection_1.isBrsFile)(file) && !filesSearched.has(file)) {
522
+ // eslint-disable-next-line @typescript-eslint/dot-notation
523
+ for (let cs of file['_cachedLookups'].classStatements) {
524
+ for (let s of [...cs.methods, ...cs.fields]) {
525
+ if (!results.has(s.tokens.name.text) && s.tokens.name.text.toLowerCase() !== 'new') {
526
+ results.set(s.tokens.name.text, {
527
+ label: s.tokens.name.text,
528
+ kind: (0, reflection_1.isMethodStatement)(s) ? vscode_languageserver_1.CompletionItemKind.Method : vscode_languageserver_1.CompletionItemKind.Field
529
+ });
530
+ }
531
+ }
532
+ }
533
+ }
534
+ filesSearched.add(file);
535
+ }
536
+ return results;
537
+ }
538
+ /**
539
+ * Scan all xmlScopes for call funcs
540
+ */
541
+ getCallFuncNameCompletions(scope) {
542
+ let completionsArray = [];
543
+ let completetionsLabels = [];
544
+ const xmlScopes = this.event.program.getScopes().filter((s) => (0, reflection_1.isXmlScope)(s));
545
+ // is next to a @. callfunc invocation - must be an component interface method.
546
+ for (const scope of xmlScopes) {
547
+ let fileLinks = this.event.program.getStatementsForXmlFile(scope);
548
+ for (let fileLink of fileLinks) {
549
+ let pushItem = this.createCompletionFromFunctionStatement(fileLink.item, vscode_languageserver_1.CompletionItemKind.Method);
550
+ if (!completetionsLabels.includes(pushItem.label)) {
551
+ completetionsLabels.push(pushItem.label);
552
+ completionsArray.push(pushItem);
553
+ }
554
+ }
555
+ }
556
+ //no other result is possible in this case
557
+ return completionsArray;
558
+ }
559
+ getGlobalValues() {
560
+ return [
561
+ {
562
+ name: 'true',
563
+ type: BooleanType_1.BooleanType.instance,
564
+ flags: 1 /* SymbolTypeFlag.runtime */,
565
+ data: {}
566
+ },
567
+ {
568
+ name: 'false',
569
+ type: BooleanType_1.BooleanType.instance,
570
+ flags: 1 /* SymbolTypeFlag.runtime */,
571
+ data: {}
572
+ },
573
+ {
574
+ name: 'invalid',
575
+ type: InvalidType_1.InvalidType.instance,
576
+ flags: 1 /* SymbolTypeFlag.runtime */,
577
+ data: {}
578
+ }
579
+ ];
580
+ }
581
+ isPostionInComment(file, position) {
582
+ var _a;
583
+ const currentToken = file.getCurrentOrNextTokenAt(position);
584
+ const tokenKind = currentToken === null || currentToken === void 0 ? void 0 : currentToken.kind;
585
+ if (!currentToken) {
586
+ return true;
587
+ }
588
+ if (tokenKind === TokenKind_1.TokenKind.Comment) {
589
+ return true;
590
+ }
591
+ const nextNonComment = file.getNextTokenByPredicate(currentToken, (t) => !TokenKind_1.AllowedTriviaTokens.includes(t.kind), 1);
592
+ const firstComment = nextNonComment === null || nextNonComment === void 0 ? void 0 : nextNonComment.leadingTrivia.find(t => t.kind === TokenKind_1.TokenKind.Comment);
593
+ if (firstComment && util_1.util.comparePosition(position, (_a = firstComment === null || firstComment === void 0 ? void 0 : firstComment.location) === null || _a === void 0 ? void 0 : _a.range.start) >= 0) {
594
+ return true;
595
+ }
596
+ return false;
597
+ }
598
+ isTokenAdjacentTo(file, currentToken, targetKind) {
599
+ var _a;
600
+ return ((_a = file.getPreviousToken(currentToken)) === null || _a === void 0 ? void 0 : _a.kind) === targetKind || file.isTokenNextToTokenKind(currentToken, targetKind);
601
+ }
602
+ getAdjacentToken(file, currentToken, targetKind) {
603
+ return currentToken.kind === targetKind ? currentToken : file.getTokenBefore(currentToken, targetKind);
604
+ }
605
+ }
606
+ exports.CompletionsProcessor = CompletionsProcessor;
607
+ /**
608
+ * List of completions for all valid keywords/reserved words.
609
+ * Build this list once because it won't change for the lifetime of this process
610
+ */
611
+ exports.KeywordCompletions = Object.keys(TokenKind_1.Keywords)
612
+ //remove any keywords with whitespace
613
+ .filter(x => !x.includes(' '))
614
+ //create completions
615
+ .map(x => {
616
+ return {
617
+ label: x,
618
+ kind: vscode_languageserver_1.CompletionItemKind.Keyword
619
+ };
620
+ });
621
+ /**
622
+ * List of completions for all valid intrinsic types.
623
+ * Build this list once because it won't change for the lifetime of this process
624
+ */
625
+ exports.NativeTypeCompletions = TokenKind_1.DeclarableTypes
626
+ //create completions
627
+ .map(x => {
628
+ return {
629
+ label: x.toLowerCase(),
630
+ kind: vscode_languageserver_1.CompletionItemKind.Keyword
631
+ };
632
+ });
633
+ //# sourceMappingURL=CompletionsProcessor.js.map