brighterscript 1.0.0-alpha.5 → 1.0.0-alpha.51

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 (652) hide show
  1. package/README.md +79 -138
  2. package/bsconfig.schema.json +196 -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 +161 -43
  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 +29 -4
  20. package/dist/CodeActionUtil.js +22 -5
  21. package/dist/CodeActionUtil.js.map +1 -1
  22. package/dist/CommentFlagProcessor.d.ts +20 -15
  23. package/dist/CommentFlagProcessor.js +143 -58
  24. package/dist/CommentFlagProcessor.js.map +1 -1
  25. package/dist/CrossScopeValidator.d.ts +68 -0
  26. package/dist/CrossScopeValidator.js +650 -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 +83 -0
  38. package/dist/DiagnosticManager.js +422 -0
  39. package/dist/DiagnosticManager.js.map +1 -0
  40. package/dist/DiagnosticMessages.d.ts +602 -196
  41. package/dist/DiagnosticMessages.js +926 -342
  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 +136 -104
  53. package/dist/LanguageServer.js +577 -741
  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 +302 -98
  62. package/dist/Program.js +1613 -726
  63. package/dist/Program.js.map +1 -1
  64. package/dist/ProgramBuilder.d.ts +39 -22
  65. package/dist/ProgramBuilder.js +245 -179
  66. package/dist/ProgramBuilder.js.map +1 -1
  67. package/dist/Scope.d.ts +227 -106
  68. package/dist/Scope.js +609 -557
  69. package/dist/Scope.js.map +1 -1
  70. package/dist/ScopeNamespaceLookup.d.ts +73 -0
  71. package/dist/ScopeNamespaceLookup.js +242 -0
  72. package/dist/ScopeNamespaceLookup.js.map +1 -0
  73. package/dist/SemanticTokenUtils.js +5 -1
  74. package/dist/SemanticTokenUtils.js.map +1 -1
  75. package/dist/Stopwatch.d.ts +4 -0
  76. package/dist/Stopwatch.js +8 -1
  77. package/dist/Stopwatch.js.map +1 -1
  78. package/dist/SymbolTable.d.ts +145 -26
  79. package/dist/SymbolTable.js +575 -64
  80. package/dist/SymbolTable.js.map +1 -1
  81. package/dist/SymbolTypeFlag.d.ts +9 -0
  82. package/dist/SymbolTypeFlag.js +14 -0
  83. package/dist/SymbolTypeFlag.js.map +1 -0
  84. package/dist/Throttler.d.ts +12 -0
  85. package/dist/Throttler.js +39 -0
  86. package/dist/Throttler.js.map +1 -1
  87. package/dist/Watcher.d.ts +0 -3
  88. package/dist/Watcher.js +0 -3
  89. package/dist/Watcher.js.map +1 -1
  90. package/dist/XmlScope.d.ts +5 -15
  91. package/dist/XmlScope.js +34 -90
  92. package/dist/XmlScope.js.map +1 -1
  93. package/dist/astUtils/CachedLookups.d.ts +50 -0
  94. package/dist/astUtils/CachedLookups.js +337 -0
  95. package/dist/astUtils/CachedLookups.js.map +1 -0
  96. package/dist/astUtils/Editor.d.ts +69 -0
  97. package/dist/astUtils/Editor.js +245 -0
  98. package/dist/astUtils/Editor.js.map +1 -0
  99. package/dist/astUtils/creators.d.ts +54 -19
  100. package/dist/astUtils/creators.js +242 -42
  101. package/dist/astUtils/creators.js.map +1 -1
  102. package/dist/astUtils/reflection.d.ts +199 -85
  103. package/dist/astUtils/reflection.js +518 -145
  104. package/dist/astUtils/reflection.js.map +1 -1
  105. package/dist/astUtils/stackedVisitor.js.map +1 -1
  106. package/dist/astUtils/visitors.d.ts +117 -53
  107. package/dist/astUtils/visitors.js +95 -15
  108. package/dist/astUtils/visitors.js.map +1 -1
  109. package/dist/astUtils/xml.d.ts +9 -8
  110. package/dist/astUtils/xml.js +12 -7
  111. package/dist/astUtils/xml.js.map +1 -1
  112. package/dist/bscPlugin/BscPlugin.d.ts +26 -4
  113. package/dist/bscPlugin/BscPlugin.js +96 -4
  114. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  115. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  116. package/dist/bscPlugin/CallExpressionInfo.js +142 -0
  117. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  118. package/dist/bscPlugin/FileWriter.d.ts +19 -0
  119. package/dist/bscPlugin/FileWriter.js +79 -0
  120. package/dist/bscPlugin/FileWriter.js.map +1 -0
  121. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  122. package/dist/bscPlugin/SignatureHelpUtil.js +137 -0
  123. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  124. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +109 -7
  125. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +676 -26
  126. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  127. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
  128. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
  129. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
  130. package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
  131. package/dist/bscPlugin/codeActions/codeActionHelpers.js +31 -0
  132. package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
  133. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +65 -0
  134. package/dist/bscPlugin/completions/CompletionsProcessor.js +633 -0
  135. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  136. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  137. package/dist/bscPlugin/definition/DefinitionProvider.js +220 -0
  138. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  139. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  140. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  141. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  142. package/dist/bscPlugin/hover/HoverProcessor.d.ts +18 -0
  143. package/dist/bscPlugin/hover/HoverProcessor.js +238 -0
  144. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  145. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  146. package/dist/bscPlugin/references/ReferencesProvider.js +57 -0
  147. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  148. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
  149. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +77 -0
  150. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
  151. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +14 -0
  152. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +164 -0
  153. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
  154. package/dist/bscPlugin/serialize/BslibManager.d.ts +12 -0
  155. package/dist/bscPlugin/serialize/BslibManager.js +46 -0
  156. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  157. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  158. package/dist/bscPlugin/serialize/FileSerializer.js +80 -0
  159. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  160. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  161. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  162. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  163. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  164. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  165. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  166. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  167. package/dist/bscPlugin/symbols/symbolUtils.js +141 -0
  168. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  169. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +34 -0
  170. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +504 -0
  171. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  172. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  173. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  174. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  175. package/dist/bscPlugin/validation/BrsFileAfterValidator.d.ts +7 -0
  176. package/dist/bscPlugin/validation/BrsFileAfterValidator.js +18 -0
  177. package/dist/bscPlugin/validation/BrsFileAfterValidator.js.map +1 -0
  178. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +51 -0
  179. package/dist/bscPlugin/validation/BrsFileValidator.js +714 -0
  180. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  181. package/dist/bscPlugin/validation/ProgramValidator.d.ts +11 -0
  182. package/dist/bscPlugin/validation/ProgramValidator.js +33 -0
  183. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  184. package/dist/bscPlugin/validation/ScopeValidator.d.ts +158 -0
  185. package/dist/bscPlugin/validation/ScopeValidator.js +1481 -0
  186. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  187. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  188. package/dist/bscPlugin/validation/XmlFileValidator.js +50 -0
  189. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  190. package/dist/cli.js +140 -28
  191. package/dist/cli.js.map +1 -1
  192. package/dist/common/Sequencer.d.ts +53 -0
  193. package/dist/common/Sequencer.js +233 -0
  194. package/dist/common/Sequencer.js.map +1 -0
  195. package/dist/deferred.d.ts +5 -3
  196. package/dist/deferred.js +10 -0
  197. package/dist/deferred.js.map +1 -1
  198. package/dist/diagnosticUtils.d.ts +61 -4
  199. package/dist/diagnosticUtils.js +285 -25
  200. package/dist/diagnosticUtils.js.map +1 -1
  201. package/dist/examples/plugins/removePrint.d.ts +2 -2
  202. package/dist/examples/plugins/removePrint.js +8 -12
  203. package/dist/examples/plugins/removePrint.js.map +1 -1
  204. package/dist/files/AssetFile.d.ts +24 -0
  205. package/dist/files/AssetFile.js +25 -0
  206. package/dist/files/AssetFile.js.map +1 -0
  207. package/dist/files/BrsFile.d.ts +161 -87
  208. package/dist/files/BrsFile.js +919 -936
  209. package/dist/files/BrsFile.js.map +1 -1
  210. package/dist/files/BscFile.d.ts +102 -0
  211. package/dist/files/BscFile.js +15 -0
  212. package/dist/files/BscFile.js.map +1 -0
  213. package/dist/files/Factory.d.ts +25 -0
  214. package/dist/files/Factory.js +22 -0
  215. package/dist/files/Factory.js.map +1 -0
  216. package/dist/files/LazyFileData.d.ts +21 -0
  217. package/dist/files/LazyFileData.js +54 -0
  218. package/dist/files/LazyFileData.js.map +1 -0
  219. package/dist/files/XmlFile.d.ts +80 -41
  220. package/dist/files/XmlFile.js +162 -137
  221. package/dist/files/XmlFile.js.map +1 -1
  222. package/dist/globalCallables.d.ts +3 -1
  223. package/dist/globalCallables.js +424 -184
  224. package/dist/globalCallables.js.map +1 -1
  225. package/dist/index.d.ts +32 -4
  226. package/dist/index.js +54 -7
  227. package/dist/index.js.map +1 -1
  228. package/dist/interfaces.d.ts +987 -125
  229. package/dist/interfaces.js +21 -0
  230. package/dist/interfaces.js.map +1 -1
  231. package/dist/lexer/Lexer.d.ts +51 -12
  232. package/dist/lexer/Lexer.js +214 -65
  233. package/dist/lexer/Lexer.js.map +1 -1
  234. package/dist/lexer/Token.d.ts +27 -11
  235. package/dist/lexer/Token.js +10 -2
  236. package/dist/lexer/Token.js.map +1 -1
  237. package/dist/lexer/TokenKind.d.ts +48 -2
  238. package/dist/lexer/TokenKind.js +167 -10
  239. package/dist/lexer/TokenKind.js.map +1 -1
  240. package/dist/logging.d.ts +14 -0
  241. package/dist/logging.js +29 -0
  242. package/dist/logging.js.map +1 -0
  243. package/dist/lsp/ActionQueue.d.ts +35 -0
  244. package/dist/lsp/ActionQueue.js +115 -0
  245. package/dist/lsp/ActionQueue.js.map +1 -0
  246. package/dist/lsp/DocumentManager.d.ts +63 -0
  247. package/dist/lsp/DocumentManager.js +122 -0
  248. package/dist/lsp/DocumentManager.js.map +1 -0
  249. package/dist/lsp/LspProject.d.ts +287 -0
  250. package/dist/lsp/LspProject.js +3 -0
  251. package/dist/lsp/LspProject.js.map +1 -0
  252. package/dist/lsp/PathFilterer.d.ts +75 -0
  253. package/dist/lsp/PathFilterer.js +196 -0
  254. package/dist/lsp/PathFilterer.js.map +1 -0
  255. package/dist/lsp/Project.d.ts +200 -0
  256. package/dist/lsp/Project.js +562 -0
  257. package/dist/lsp/Project.js.map +1 -0
  258. package/dist/lsp/ProjectManager.d.ts +288 -0
  259. package/dist/lsp/ProjectManager.js +967 -0
  260. package/dist/lsp/ProjectManager.js.map +1 -0
  261. package/dist/lsp/ReaderWriterManager.d.ts +21 -0
  262. package/dist/lsp/ReaderWriterManager.js +60 -0
  263. package/dist/lsp/ReaderWriterManager.js.map +1 -0
  264. package/dist/lsp/worker/MessageHandler.d.ts +99 -0
  265. package/dist/lsp/worker/MessageHandler.js +138 -0
  266. package/dist/lsp/worker/MessageHandler.js.map +1 -0
  267. package/dist/lsp/worker/WorkerPool.d.ts +38 -0
  268. package/dist/lsp/worker/WorkerPool.js +78 -0
  269. package/dist/lsp/worker/WorkerPool.js.map +1 -0
  270. package/dist/lsp/worker/WorkerThreadProject.d.ts +168 -0
  271. package/dist/lsp/worker/WorkerThreadProject.js +205 -0
  272. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
  273. package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
  274. package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
  275. package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
  276. package/dist/lsp/worker/run.js +14 -0
  277. package/dist/lsp/worker/run.js.map +1 -0
  278. package/dist/parser/AstNode.d.ts +205 -0
  279. package/dist/parser/AstNode.js +305 -0
  280. package/dist/parser/AstNode.js.map +1 -0
  281. package/dist/parser/BrightScriptDocParser.d.ts +56 -0
  282. package/dist/parser/BrightScriptDocParser.js +294 -0
  283. package/dist/parser/BrightScriptDocParser.js.map +1 -0
  284. package/dist/parser/BrsTranspileState.d.ts +22 -3
  285. package/dist/parser/BrsTranspileState.js +19 -0
  286. package/dist/parser/BrsTranspileState.js.map +1 -1
  287. package/dist/parser/Expression.d.ts +601 -220
  288. package/dist/parser/Expression.js +1516 -502
  289. package/dist/parser/Expression.js.map +1 -1
  290. package/dist/parser/Parser.d.ts +137 -121
  291. package/dist/parser/Parser.js +1808 -982
  292. package/dist/parser/Parser.js.map +1 -1
  293. package/dist/parser/SGParser.d.ts +30 -13
  294. package/dist/parser/SGParser.js +94 -56
  295. package/dist/parser/SGParser.js.map +1 -1
  296. package/dist/parser/SGTypes.d.ts +134 -46
  297. package/dist/parser/SGTypes.js +206 -115
  298. package/dist/parser/SGTypes.js.map +1 -1
  299. package/dist/parser/Statement.d.ts +854 -267
  300. package/dist/parser/Statement.js +2416 -621
  301. package/dist/parser/Statement.js.map +1 -1
  302. package/dist/parser/TranspileState.d.ts +30 -14
  303. package/dist/parser/TranspileState.js +124 -27
  304. package/dist/parser/TranspileState.js.map +1 -1
  305. package/dist/preprocessor/Manifest.d.ts +6 -6
  306. package/dist/preprocessor/Manifest.js +17 -38
  307. package/dist/preprocessor/Manifest.js.map +1 -1
  308. package/dist/roku-types/data.json +20554 -0
  309. package/dist/roku-types/index.d.ts +5726 -0
  310. package/dist/roku-types/index.js +11 -0
  311. package/dist/roku-types/index.js.map +1 -0
  312. package/dist/types/ArrayType.d.ts +12 -5
  313. package/dist/types/ArrayType.js +95 -25
  314. package/dist/types/ArrayType.js.map +1 -1
  315. package/dist/types/AssociativeArrayType.d.ts +15 -0
  316. package/dist/types/AssociativeArrayType.js +64 -0
  317. package/dist/types/AssociativeArrayType.js.map +1 -0
  318. package/dist/types/BaseFunctionType.d.ts +10 -0
  319. package/dist/types/BaseFunctionType.js +26 -0
  320. package/dist/types/BaseFunctionType.js.map +1 -0
  321. package/dist/types/BooleanType.d.ts +9 -5
  322. package/dist/types/BooleanType.js +19 -8
  323. package/dist/types/BooleanType.js.map +1 -1
  324. package/dist/types/BscType.d.ts +41 -3
  325. package/dist/types/BscType.js +152 -0
  326. package/dist/types/BscType.js.map +1 -1
  327. package/dist/types/BscTypeKind.d.ts +28 -0
  328. package/dist/types/BscTypeKind.js +33 -0
  329. package/dist/types/BscTypeKind.js.map +1 -0
  330. package/dist/types/BuiltInInterfaceAdder.d.ts +28 -0
  331. package/dist/types/BuiltInInterfaceAdder.js +212 -0
  332. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  333. package/dist/types/CallFuncableType.d.ts +24 -0
  334. package/dist/types/CallFuncableType.js +91 -0
  335. package/dist/types/CallFuncableType.js.map +1 -0
  336. package/dist/types/ClassType.d.ts +17 -0
  337. package/dist/types/ClassType.js +63 -0
  338. package/dist/types/ClassType.js.map +1 -0
  339. package/dist/types/ComponentType.d.ts +22 -0
  340. package/dist/types/ComponentType.js +110 -0
  341. package/dist/types/ComponentType.js.map +1 -0
  342. package/dist/types/DoubleType.d.ts +10 -5
  343. package/dist/types/DoubleType.js +21 -17
  344. package/dist/types/DoubleType.js.map +1 -1
  345. package/dist/types/DynamicType.d.ts +13 -5
  346. package/dist/types/DynamicType.js +26 -5
  347. package/dist/types/DynamicType.js.map +1 -1
  348. package/dist/types/EnumType.d.ts +42 -0
  349. package/dist/types/EnumType.js +101 -0
  350. package/dist/types/EnumType.js.map +1 -0
  351. package/dist/types/FloatType.d.ts +10 -5
  352. package/dist/types/FloatType.js +21 -17
  353. package/dist/types/FloatType.js.map +1 -1
  354. package/dist/types/FunctionType.d.ts +8 -22
  355. package/dist/types/FunctionType.js +25 -63
  356. package/dist/types/FunctionType.js.map +1 -1
  357. package/dist/types/InheritableType.d.ts +29 -0
  358. package/dist/types/InheritableType.js +173 -0
  359. package/dist/types/InheritableType.js.map +1 -0
  360. package/dist/types/InlineInterfaceType.d.ts +5 -0
  361. package/dist/types/InlineInterfaceType.js +17 -0
  362. package/dist/types/InlineInterfaceType.js.map +1 -0
  363. package/dist/types/IntegerType.d.ts +10 -5
  364. package/dist/types/IntegerType.js +21 -17
  365. package/dist/types/IntegerType.js.map +1 -1
  366. package/dist/types/InterfaceType.d.ts +14 -6
  367. package/dist/types/InterfaceType.js +30 -15
  368. package/dist/types/InterfaceType.js.map +1 -1
  369. package/dist/types/IntersectionType.d.ts +29 -0
  370. package/dist/types/IntersectionType.js +256 -0
  371. package/dist/types/IntersectionType.js.map +1 -0
  372. package/dist/types/InvalidType.d.ts +10 -5
  373. package/dist/types/InvalidType.js +21 -9
  374. package/dist/types/InvalidType.js.map +1 -1
  375. package/dist/types/LongIntegerType.d.ts +10 -5
  376. package/dist/types/LongIntegerType.js +21 -17
  377. package/dist/types/LongIntegerType.js.map +1 -1
  378. package/dist/types/NamespaceType.d.ts +12 -0
  379. package/dist/types/NamespaceType.js +28 -0
  380. package/dist/types/NamespaceType.js.map +1 -0
  381. package/dist/types/ObjectType.d.ts +12 -5
  382. package/dist/types/ObjectType.js +25 -8
  383. package/dist/types/ObjectType.js.map +1 -1
  384. package/dist/types/ReferenceType.d.ts +123 -0
  385. package/dist/types/ReferenceType.js +726 -0
  386. package/dist/types/ReferenceType.js.map +1 -0
  387. package/dist/types/StringType.d.ts +12 -5
  388. package/dist/types/StringType.js +23 -8
  389. package/dist/types/StringType.js.map +1 -1
  390. package/dist/types/TypeStatementType.d.ts +19 -0
  391. package/dist/types/TypeStatementType.js +56 -0
  392. package/dist/types/TypeStatementType.js.map +1 -0
  393. package/dist/types/TypedFunctionType.d.ts +34 -0
  394. package/dist/types/TypedFunctionType.js +157 -0
  395. package/dist/types/TypedFunctionType.js.map +1 -0
  396. package/dist/types/UninitializedType.d.ts +11 -6
  397. package/dist/types/UninitializedType.js +20 -11
  398. package/dist/types/UninitializedType.js.map +1 -1
  399. package/dist/types/UnionType.d.ts +27 -0
  400. package/dist/types/UnionType.js +196 -0
  401. package/dist/types/UnionType.js.map +1 -0
  402. package/dist/types/VoidType.d.ts +11 -5
  403. package/dist/types/VoidType.js +22 -8
  404. package/dist/types/VoidType.js.map +1 -1
  405. package/dist/types/helpers.d.ts +51 -0
  406. package/dist/types/helpers.js +329 -0
  407. package/dist/types/helpers.js.map +1 -0
  408. package/dist/types/index.d.ts +22 -0
  409. package/dist/types/index.js +39 -0
  410. package/dist/types/index.js.map +1 -0
  411. package/dist/types/roFunctionType.d.ts +11 -0
  412. package/dist/types/roFunctionType.js +37 -0
  413. package/dist/types/roFunctionType.js.map +1 -0
  414. package/dist/util.d.ts +325 -185
  415. package/dist/util.js +2135 -568
  416. package/dist/util.js.map +1 -1
  417. package/dist/validators/ClassValidator.d.ts +9 -15
  418. package/dist/validators/ClassValidator.js +93 -138
  419. package/dist/validators/ClassValidator.js.map +1 -1
  420. package/package.json +183 -138
  421. package/CHANGELOG.md +0 -1188
  422. package/dist/astUtils/creators.spec.js +0 -21
  423. package/dist/astUtils/creators.spec.js.map +0 -1
  424. package/dist/astUtils/index.d.ts +0 -7
  425. package/dist/astUtils/index.js +0 -26
  426. package/dist/astUtils/index.js.map +0 -1
  427. package/dist/astUtils/reflection.spec.d.ts +0 -1
  428. package/dist/astUtils/reflection.spec.js +0 -292
  429. package/dist/astUtils/reflection.spec.js.map +0 -1
  430. package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
  431. package/dist/astUtils/stackedVisitor.spec.js +0 -79
  432. package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
  433. package/dist/astUtils/visitors.spec.d.ts +0 -1
  434. package/dist/astUtils/visitors.spec.js +0 -854
  435. package/dist/astUtils/visitors.spec.js.map +0 -1
  436. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
  437. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -194
  438. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
  439. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
  440. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +0 -63
  441. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
  442. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts +0 -1
  443. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +0 -45
  444. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
  445. package/dist/files/BrsFile.Class.spec.d.ts +0 -1
  446. package/dist/files/BrsFile.Class.spec.js +0 -1081
  447. package/dist/files/BrsFile.Class.spec.js.map +0 -1
  448. package/dist/files/BrsFile.spec.d.ts +0 -1
  449. package/dist/files/BrsFile.spec.js +0 -2524
  450. package/dist/files/BrsFile.spec.js.map +0 -1
  451. package/dist/files/XmlFile.spec.d.ts +0 -1
  452. package/dist/files/XmlFile.spec.js +0 -1065
  453. package/dist/files/XmlFile.spec.js.map +0 -1
  454. package/dist/files/tests/imports.spec.d.ts +0 -1
  455. package/dist/files/tests/imports.spec.js +0 -241
  456. package/dist/files/tests/imports.spec.js.map +0 -1
  457. package/dist/lexer/Character.spec.d.ts +0 -1
  458. package/dist/lexer/Character.spec.js +0 -27
  459. package/dist/lexer/Character.spec.js.map +0 -1
  460. package/dist/lexer/Lexer.spec.d.ts +0 -1
  461. package/dist/lexer/Lexer.spec.js +0 -1101
  462. package/dist/lexer/Lexer.spec.js.map +0 -1
  463. package/dist/lexer/index.d.ts +0 -3
  464. package/dist/lexer/index.js +0 -17
  465. package/dist/lexer/index.js.map +0 -1
  466. package/dist/parser/Parser.Class.spec.d.ts +0 -1
  467. package/dist/parser/Parser.Class.spec.js +0 -390
  468. package/dist/parser/Parser.Class.spec.js.map +0 -1
  469. package/dist/parser/Parser.spec.d.ts +0 -4
  470. package/dist/parser/Parser.spec.js +0 -1216
  471. package/dist/parser/Parser.spec.js.map +0 -1
  472. package/dist/parser/SGParser.spec.d.ts +0 -1
  473. package/dist/parser/SGParser.spec.js +0 -145
  474. package/dist/parser/SGParser.spec.js.map +0 -1
  475. package/dist/parser/SGTypes.spec.d.ts +0 -1
  476. package/dist/parser/SGTypes.spec.js +0 -351
  477. package/dist/parser/SGTypes.spec.js.map +0 -1
  478. package/dist/parser/Statement.spec.d.ts +0 -1
  479. package/dist/parser/Statement.spec.js +0 -94
  480. package/dist/parser/Statement.spec.js.map +0 -1
  481. package/dist/parser/index.d.ts +0 -3
  482. package/dist/parser/index.js +0 -16
  483. package/dist/parser/index.js.map +0 -1
  484. package/dist/parser/tests/Parser.spec.d.ts +0 -18
  485. package/dist/parser/tests/Parser.spec.js +0 -35
  486. package/dist/parser/tests/Parser.spec.js.map +0 -1
  487. package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
  488. package/dist/parser/tests/controlFlow/For.spec.js +0 -161
  489. package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
  490. package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
  491. package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -106
  492. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
  493. package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
  494. package/dist/parser/tests/controlFlow/If.spec.js +0 -551
  495. package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
  496. package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
  497. package/dist/parser/tests/controlFlow/While.spec.js +0 -107
  498. package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
  499. package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
  500. package/dist/parser/tests/expression/Additive.spec.js +0 -99
  501. package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
  502. package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
  503. package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -254
  504. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
  505. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
  506. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -266
  507. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
  508. package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
  509. package/dist/parser/tests/expression/Boolean.spec.js +0 -83
  510. package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
  511. package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
  512. package/dist/parser/tests/expression/Call.spec.js +0 -134
  513. package/dist/parser/tests/expression/Call.spec.js.map +0 -1
  514. package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
  515. package/dist/parser/tests/expression/Exponential.spec.js +0 -37
  516. package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
  517. package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
  518. package/dist/parser/tests/expression/Function.spec.js +0 -403
  519. package/dist/parser/tests/expression/Function.spec.js.map +0 -1
  520. package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
  521. package/dist/parser/tests/expression/Indexing.spec.js +0 -219
  522. package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
  523. package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
  524. package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
  525. package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
  526. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
  527. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -201
  528. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
  529. package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
  530. package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -105
  531. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
  532. package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
  533. package/dist/parser/tests/expression/Primary.spec.js +0 -149
  534. package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
  535. package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
  536. package/dist/parser/tests/expression/Relational.spec.js +0 -83
  537. package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
  538. package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
  539. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
  540. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
  541. package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
  542. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -202
  543. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
  544. package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
  545. package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -323
  546. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
  547. package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
  548. package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
  549. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
  550. package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
  551. package/dist/parser/tests/statement/Declaration.spec.js +0 -108
  552. package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
  553. package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
  554. package/dist/parser/tests/statement/Dim.spec.js +0 -73
  555. package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
  556. package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
  557. package/dist/parser/tests/statement/Function.spec.js +0 -332
  558. package/dist/parser/tests/statement/Function.spec.js.map +0 -1
  559. package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
  560. package/dist/parser/tests/statement/Goto.spec.js +0 -50
  561. package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
  562. package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
  563. package/dist/parser/tests/statement/Increment.spec.js +0 -117
  564. package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
  565. package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
  566. package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
  567. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
  568. package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
  569. package/dist/parser/tests/statement/Misc.spec.js +0 -333
  570. package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
  571. package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
  572. package/dist/parser/tests/statement/PrintStatement.spec.js +0 -181
  573. package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
  574. package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
  575. package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -94
  576. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
  577. package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
  578. package/dist/parser/tests/statement/Set.spec.js +0 -218
  579. package/dist/parser/tests/statement/Set.spec.js.map +0 -1
  580. package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
  581. package/dist/parser/tests/statement/Stop.spec.js +0 -37
  582. package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
  583. package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
  584. package/dist/parser/tests/statement/Throw.spec.js +0 -35
  585. package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
  586. package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
  587. package/dist/parser/tests/statement/TryCatch.spec.js +0 -140
  588. package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
  589. package/dist/preprocessor/Chunk.d.ts +0 -82
  590. package/dist/preprocessor/Chunk.js +0 -77
  591. package/dist/preprocessor/Chunk.js.map +0 -1
  592. package/dist/preprocessor/Manifest.spec.d.ts +0 -0
  593. package/dist/preprocessor/Manifest.spec.js +0 -105
  594. package/dist/preprocessor/Manifest.spec.js.map +0 -1
  595. package/dist/preprocessor/Preprocessor.d.ts +0 -60
  596. package/dist/preprocessor/Preprocessor.js +0 -156
  597. package/dist/preprocessor/Preprocessor.js.map +0 -1
  598. package/dist/preprocessor/Preprocessor.spec.d.ts +0 -1
  599. package/dist/preprocessor/Preprocessor.spec.js +0 -152
  600. package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
  601. package/dist/preprocessor/PreprocessorParser.d.ts +0 -61
  602. package/dist/preprocessor/PreprocessorParser.js +0 -194
  603. package/dist/preprocessor/PreprocessorParser.js.map +0 -1
  604. package/dist/preprocessor/PreprocessorParser.spec.d.ts +0 -1
  605. package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
  606. package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
  607. package/dist/preprocessor/index.d.ts +0 -3
  608. package/dist/preprocessor/index.js +0 -16
  609. package/dist/preprocessor/index.js.map +0 -1
  610. package/dist/types/ArrayType.spec.d.ts +0 -1
  611. package/dist/types/ArrayType.spec.js +0 -30
  612. package/dist/types/ArrayType.spec.js.map +0 -1
  613. package/dist/types/BooleanType.spec.d.ts +0 -1
  614. package/dist/types/BooleanType.spec.js +0 -12
  615. package/dist/types/BooleanType.spec.js.map +0 -1
  616. package/dist/types/CustomType.d.ts +0 -10
  617. package/dist/types/CustomType.js +0 -35
  618. package/dist/types/CustomType.js.map +0 -1
  619. package/dist/types/DoubleType.spec.d.ts +0 -1
  620. package/dist/types/DoubleType.spec.js +0 -12
  621. package/dist/types/DoubleType.spec.js.map +0 -1
  622. package/dist/types/DynamicType.spec.d.ts +0 -1
  623. package/dist/types/DynamicType.spec.js +0 -12
  624. package/dist/types/DynamicType.spec.js.map +0 -1
  625. package/dist/types/FloatType.spec.d.ts +0 -1
  626. package/dist/types/FloatType.spec.js +0 -12
  627. package/dist/types/FloatType.spec.js.map +0 -1
  628. package/dist/types/FunctionType.spec.d.ts +0 -1
  629. package/dist/types/FunctionType.spec.js +0 -29
  630. package/dist/types/FunctionType.spec.js.map +0 -1
  631. package/dist/types/IntegerType.spec.d.ts +0 -1
  632. package/dist/types/IntegerType.spec.js +0 -12
  633. package/dist/types/IntegerType.spec.js.map +0 -1
  634. package/dist/types/InvalidType.spec.d.ts +0 -1
  635. package/dist/types/InvalidType.spec.js +0 -12
  636. package/dist/types/InvalidType.spec.js.map +0 -1
  637. package/dist/types/LazyType.d.ts +0 -15
  638. package/dist/types/LazyType.js +0 -32
  639. package/dist/types/LazyType.js.map +0 -1
  640. package/dist/types/LongIntegerType.spec.d.ts +0 -1
  641. package/dist/types/LongIntegerType.spec.js +0 -12
  642. package/dist/types/LongIntegerType.spec.js.map +0 -1
  643. package/dist/types/ObjectType.spec.d.ts +0 -1
  644. package/dist/types/ObjectType.spec.js +0 -12
  645. package/dist/types/ObjectType.spec.js.map +0 -1
  646. package/dist/types/StringType.spec.d.ts +0 -1
  647. package/dist/types/StringType.spec.js +0 -12
  648. package/dist/types/StringType.spec.js.map +0 -1
  649. package/dist/types/VoidType.spec.d.ts +0 -1
  650. package/dist/types/VoidType.spec.js +0 -12
  651. package/dist/types/VoidType.spec.js.map +0 -1
  652. /package/dist/{astUtils/creators.spec.d.ts → lsp/worker/run.d.ts} +0 -0
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.diagnosticCodes = exports.DiagnosticCodeMap = exports.DiagnosticMessages = void 0;
3
+ exports.isDiagnosticOfType = exports.diagnosticCodes = exports.DiagnosticLegacyCodeMap = exports.DiagnosticCodeMap = exports.incompatibleSymbolMessage = exports.typeCompatibilityMessage = exports.defaultMaximumTruncationLength = exports.DiagnosticMessages = exports.DiagnosticCodeRegex = void 0;
4
4
  const vscode_languageserver_1 = require("vscode-languageserver");
5
+ const TokenKind_1 = require("./lexer/TokenKind");
6
+ const util_1 = require("./util");
7
+ exports.DiagnosticCodeRegex = /^[a-z](?:[a-z0-9]*(?:-[a-z0-9]+)*)*$/;
5
8
  /**
6
9
  * An object that keeps track of all possible error messages.
7
10
  */
@@ -9,642 +12,1223 @@ exports.DiagnosticMessages = {
9
12
  //this one won't be used much, we just need a catchall object for the code since we pass through the message from the parser
10
13
  genericParserMessage: (message) => ({
11
14
  message: message,
12
- code: 1000,
13
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
15
+ legacyCode: 1000,
16
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
17
+ code: 'generic-parser-message'
14
18
  }),
15
- callToUnknownFunction: (name, scopeName) => ({
16
- message: `Cannot find function with name '${name}' when this file is included in scope '${scopeName}'`,
17
- code: 1001,
19
+ /**
20
+ *
21
+ * @param name for local vars, it's the var name. for namespaced parts, it's the specific part that's unknown (`alpha.beta.charlie` would result in "cannot find name 'charlie')
22
+ * @param fullName if a namespaced name, this is the full name `alpha.beta.charlie`, otherwise it's the same as `name`
23
+ * @param typeName if 'name' refers to a member, what is the the type it is a member of?
24
+ * @param typeDescriptor defaults to 'type' ... could also be 'namespace', etc.
25
+ */
26
+ cannotFindName: (name, fullName, typeName, typeDescriptor = 'type') => ({
27
+ message: `Cannot find name '${name}'${typeName ? ` for ${typeDescriptor} '${typeName}'` : ''}`,
28
+ legacyCode: 1001,
18
29
  data: {
19
- functionName: name
30
+ name: name,
31
+ fullName: fullName !== null && fullName !== void 0 ? fullName : name,
32
+ typeName: typeName ? typeName : undefined
20
33
  },
21
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
34
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
35
+ code: 'cannot-find-name'
22
36
  }),
23
37
  mismatchArgumentCount: (expectedCount, actualCount) => ({
24
38
  message: `Expected ${expectedCount} arguments, but got ${actualCount}.`,
25
- code: 1002,
26
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
39
+ legacyCode: 1002,
40
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
41
+ code: 'incorrect-argument-count'
27
42
  }),
28
- duplicateFunctionImplementation: (functionName, scopeName) => ({
29
- message: `Duplicate function implementation for '${functionName}' when this file is included in scope '${scopeName}'.`,
30
- code: 1003,
31
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
43
+ duplicateFunctionImplementation: (functionName) => ({
44
+ message: `Duplicate function implementation for '${functionName}'.`,
45
+ legacyCode: 1003,
46
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
47
+ code: 'duplicate-function'
32
48
  }),
33
49
  referencedFileDoesNotExist: () => ({
34
50
  message: `Referenced file does not exist.`,
35
- code: 1004,
36
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
51
+ legacyCode: 1004,
52
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
53
+ code: 'file-not-found'
37
54
  }),
38
55
  xmlComponentMissingComponentDeclaration: () => ({
39
56
  message: `Missing a component declaration.`,
40
- code: 1005,
41
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
57
+ legacyCode: 1005,
58
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
59
+ code: 'missing-component-element'
42
60
  }),
43
61
  xmlComponentMissingNameAttribute: () => ({
44
62
  message: `Component must have a name attribute.`,
45
- code: 1006,
46
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
63
+ legacyCode: 1006,
64
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
65
+ code: 'missing-name-attribute'
47
66
  }),
48
67
  xmlComponentMissingExtendsAttribute: () => ({
49
68
  message: `Component is mising "extends" attribute and will automatically extend "Group" by default`,
50
- code: 1007,
51
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
69
+ legacyCode: 1007,
70
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
71
+ code: 'missing-extends-attribute'
52
72
  }),
53
- xmlGenericParseError: (message) => ({
73
+ syntaxError: (message) => ({
54
74
  //generic catchall xml parse error
55
75
  message: message,
56
- code: 1008,
57
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
76
+ legacyCode: 1008,
77
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
78
+ code: 'syntax-error'
58
79
  }),
59
80
  unnecessaryScriptImportInChildFromParent: (parentComponentName) => ({
60
81
  message: `Unnecessary script import: Script is already imported in ancestor component '${parentComponentName}'.`,
61
- code: 1009,
62
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
82
+ legacyCode: 1009,
83
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
84
+ code: 'redundant-import'
63
85
  }),
64
86
  overridesAncestorFunction: (callableName, currentScopeName, parentFilePath, parentScopeName) => ({
65
87
  message: `Function '${callableName}' included in '${currentScopeName}' overrides function in '${parentFilePath}' included in '${parentScopeName}'.`,
66
- code: 1010,
67
- severity: vscode_languageserver_1.DiagnosticSeverity.Hint
88
+ legacyCode: 1010,
89
+ severity: vscode_languageserver_1.DiagnosticSeverity.Hint,
90
+ code: 'overrides-ancestor-function'
68
91
  }),
69
92
  localVarFunctionShadowsParentFunction: (scopeName) => ({
70
93
  message: `Local variable function has same name as ${scopeName} function and will never be called.`,
71
- code: 1011,
72
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
94
+ legacyCode: 1011,
95
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
96
+ code: 'variable-shadows-function'
73
97
  }),
74
- scriptImportCaseMismatch: (correctFilePath) => ({
98
+ scriptImportCaseMismatch: (correctFilePath, correctUri) => ({
75
99
  message: `Script import path does not match casing of actual file path '${correctFilePath}'.`,
76
- code: 1012,
77
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
100
+ legacyCode: 1012,
101
+ data: {
102
+ correctFilePath: correctUri !== null && correctUri !== void 0 ? correctUri : correctFilePath
103
+ },
104
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
105
+ code: 'import-case-mismatch'
78
106
  }),
79
107
  fileNotReferencedByAnyOtherFile: () => ({
80
108
  message: `This file is not referenced by any other file in the project.`,
81
- code: 1013,
82
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
109
+ legacyCode: 1013,
110
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
111
+ code: 'file-not-referenced'
83
112
  }),
84
113
  unknownDiagnosticCode: (theUnknownCode) => ({
85
114
  message: `Unknown diagnostic code ${theUnknownCode}`,
86
- code: 1014,
87
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
115
+ legacyCode: 1014,
116
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
117
+ code: 'unknown-diagnostic-code'
88
118
  }),
89
119
  scriptSrcCannotBeEmpty: () => ({
90
120
  message: `Script import cannot be empty or whitespace`,
91
- code: 1015,
92
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
93
- }),
94
- expectedIdentifierAfterKeyword: (keywordText) => ({
95
- message: `Expected identifier after '${keywordText}' keyword`,
96
- code: 1016,
97
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
121
+ legacyCode: 1015,
122
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
123
+ code: 'invalid-import-path'
98
124
  }),
125
+ expectedIdentifier: (preceedingTokenText) => {
126
+ let message = `Expected identifier`;
127
+ if (preceedingTokenText) {
128
+ message += ` after '${preceedingTokenText}'`;
129
+ }
130
+ return {
131
+ message: message,
132
+ legacyCode: 1016,
133
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
134
+ code: 'expected-identifier'
135
+ };
136
+ },
99
137
  missingCallableKeyword: () => ({
100
- message: `Expected 'function' or 'sub' to preceed identifier`,
101
- code: 1017,
102
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
138
+ message: `Expected 'function' or 'sub' to precede identifier`,
139
+ legacyCode: 1017,
140
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
141
+ code: 'expected-leading-keyword'
103
142
  }),
104
- expectedValidTypeToFollowAsKeyword: () => ({
143
+ __unused12: () => ({
105
144
  message: `Expected valid type to follow 'as' keyword`,
106
- code: 1018,
107
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
145
+ legacyCode: 1018,
146
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
147
+ code: 'expected-valid-type'
108
148
  }),
109
149
  bsFeatureNotSupportedInBrsFiles: (featureName) => ({
110
150
  message: `BrighterScript feature '${featureName}' is not supported in standard BrightScript files`,
111
- code: 1019,
112
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
151
+ legacyCode: 1019,
152
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
153
+ code: 'bs-feature-not-supported'
113
154
  }),
114
- brsConfigJsonIsDeprecated: () => ({
155
+ __ununsed12: () => ({
115
156
  message: `'brsconfig.json' is deprecated. Please rename to 'bsconfig.json'`,
116
- code: 1020,
117
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
157
+ legacyCode: 1020,
158
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
159
+ code: 'brsconfig-deprecated'
118
160
  }),
119
161
  bsConfigJsonHasSyntaxErrors: (message) => ({
120
162
  message: `Encountered syntax errors in bsconfig.json: ${message}`,
121
- code: 1021,
122
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
123
- }),
124
- namespacedClassCannotShareNamewithNonNamespacedClass: (nonNamespacedClassName) => ({
125
- message: `Namespaced class cannot have the same name as a non-namespaced class '${nonNamespacedClassName}'`,
126
- code: 1022,
127
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
163
+ legacyCode: 1021,
164
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
165
+ code: 'bsconfig-syntax-errors'
128
166
  }),
167
+ itemIsDeprecated: (itemName, deprecatedDescription) => {
168
+ itemName !== null && itemName !== void 0 ? itemName : (itemName = 'Item');
169
+ return {
170
+ message: `${itemName} has been deprecated${deprecatedDescription ? ': ' + deprecatedDescription : ''} `,
171
+ legacyCode: 1022,
172
+ severity: vscode_languageserver_1.DiagnosticSeverity.Hint,
173
+ code: 'item-deprecated'
174
+ };
175
+ },
129
176
  cannotUseOverrideKeywordOnConstructorFunction: () => ({
130
177
  message: 'Override keyword is not allowed on class constructor method',
131
- code: 1023,
132
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
178
+ legacyCode: 1023,
179
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
180
+ code: 'override-keyword-on-constructor'
133
181
  }),
134
- importStatementMustBeDeclaredAtTopOfFile: () => ({
135
- message: `'import' statement must be declared at the top of the file`,
136
- code: 1024,
137
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
182
+ unexpectedStatementLocation: (statementKeyword, locationText) => ({
183
+ message: `'${statementKeyword}' statement must be declared ${locationText}`,
184
+ legacyCode: 1024,
185
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
186
+ code: 'unexpected-statement-location'
138
187
  }),
139
- methodDoesNotExistOnType: (methodName, className) => ({
188
+ __unused8: (methodName, className) => ({
140
189
  message: `Method '${methodName}' does not exist on type '${className}'`,
141
- code: 1025,
190
+ legacyCode: 1025,
142
191
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
143
192
  }),
144
193
  duplicateIdentifier: (memberName) => ({
145
194
  message: `Duplicate identifier '${memberName}'`,
146
- code: 1026,
147
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
195
+ legacyCode: 1026,
196
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
197
+ code: 'duplicate-identifier'
148
198
  }),
149
199
  missingOverrideKeyword: (ancestorClassName) => ({
150
200
  message: `Method has no override keyword but is declared in ancestor class '${ancestorClassName}'`,
151
- code: 1027,
152
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
201
+ legacyCode: 1027,
202
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
203
+ code: 'missing-override-keyword'
153
204
  }),
154
- duplicateClassDeclaration: (scopeName, className) => ({
155
- message: `Scope '${scopeName}' already contains a class with name '${className}'`,
156
- code: 1028,
157
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
205
+ nameCollision: (thisThingKind, thatThingKind, thatThingName) => ({
206
+ message: `${thisThingKind} has same name as ${thatThingKind} '${thatThingName}'`,
207
+ legacyCode: 1028,
208
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
209
+ code: 'name-collision'
158
210
  }),
159
- classCouldNotBeFound: (className, scopeName) => ({
211
+ __unused9: (className, scopeName) => ({
160
212
  message: `Class '${className}' could not be found when this file is included in scope '${scopeName}'`,
161
- code: 1029,
213
+ legacyCode: 1029,
162
214
  severity: vscode_languageserver_1.DiagnosticSeverity.Error,
163
215
  data: {
164
216
  className: className
165
217
  }
166
218
  }),
167
- expectedClassFieldIdentifier: () => ({
219
+ __unused27: () => ({
168
220
  message: `Expected identifier in class body`,
169
- code: 1030,
170
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
221
+ legacyCode: 1030,
222
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
223
+ code: 'expected-identifier-in-body'
171
224
  }),
172
225
  expressionIsNotConstructable: (expressionType) => ({
173
226
  message: `Cannot use the 'new' keyword here because '${expressionType}' is not a constructable type`,
174
- code: 1031,
175
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
227
+ legacyCode: 1031,
228
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
229
+ code: 'not-constructable'
176
230
  }),
177
- expectedClassKeyword: () => ({
178
- message: `Expected 'class' keyword`,
179
- code: 1032,
180
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
231
+ expectedKeyword: (kind) => ({
232
+ message: `Expected '${kind}' keyword`,
233
+ legacyCode: 1032,
234
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
235
+ code: 'expected-keyword'
181
236
  }),
182
- expectedLeftParenAfterCallable: (callableType) => ({
237
+ __unused28: (callableType) => ({
183
238
  message: `Expected '(' after ${callableType}`,
184
- code: 1033,
185
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
239
+ legacyCode: 1033,
240
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
241
+ code: 'expected-left-paren-after-callable'
186
242
  }),
187
- expectedNameAfterCallableKeyword: (callableType) => ({
243
+ __unused29: (callableType) => ({
188
244
  message: `Expected ${callableType} name after '${callableType}' keyword`,
189
- code: 1034,
190
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
245
+ legacyCode: 1034,
246
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
247
+ code: 'expected-name-after-callable'
191
248
  }),
192
- expectedLeftParenAfterCallableName: (callableType) => ({
249
+ __unused30: (callableType) => ({
193
250
  message: `Expected '(' after ${callableType} name`,
194
- code: 1035,
195
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
251
+ legacyCode: 1035,
252
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
253
+ code: 'expected-left-paren-after-callable-name'
196
254
  }),
197
255
  tooManyCallableParameters: (actual, max) => ({
198
256
  message: `Cannot have more than ${max} parameters but found ${actual})`,
199
- code: 1036,
200
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
257
+ legacyCode: 1036,
258
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
259
+ code: 'exceeds-max-parameter-count'
201
260
  }),
202
- invalidFunctionReturnType: (typeText) => ({
261
+ __unused: (typeText) => ({
203
262
  message: `Function return type '${typeText}' is invalid`,
204
- code: 1037,
263
+ legacyCode: 1037,
205
264
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
206
265
  }),
207
266
  requiredParameterMayNotFollowOptionalParameter: (parameterName) => ({
208
267
  message: `Required parameter '${parameterName}' must be declared before any optional parameters`,
209
- code: 1038,
210
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
268
+ legacyCode: 1038,
269
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
270
+ code: 'required-parameter-before-optional'
211
271
  }),
212
272
  expectedNewlineOrColon: () => ({
213
273
  message: `Expected newline or ':' at the end of a statement`,
214
- code: 1039,
215
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
274
+ legacyCode: 1039,
275
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
276
+ code: 'expected-statement-separator'
216
277
  }),
217
- functionNameCannotEndWithTypeDesignator: (callableType, name, designator) => ({
218
- message: `${callableType} name '${name}' cannot end with type designator '${designator}'`,
219
- code: 1040,
220
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
278
+ invalidIdentifier: (name, character) => ({
279
+ message: `Identifier '${name}' may not contain the character '${character}'`,
280
+ legacyCode: 1040,
281
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
282
+ code: 'invalid-identifier'
221
283
  }),
222
- callableBlockMissingEndKeyword: (callableType) => ({
284
+ __unused31: (callableType) => ({
223
285
  message: `Expected 'end ${callableType}' to terminate ${callableType} block`,
224
- code: 1041,
225
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
226
- }),
227
- mismatchedEndCallableKeyword: (expectedCallableType, actualCallableType) => ({
228
- message: `Expected 'end ${expectedCallableType}' to terminate ${expectedCallableType} block but found 'end ${actualCallableType}' instead.`,
229
- code: 1042,
230
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
286
+ legacyCode: 1041,
287
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
288
+ code: 'closing-keyword-mismatch'
231
289
  }),
290
+ closingKeywordMismatch: (expectedCallableType, actualCallableType) => {
291
+ let message = `Expected 'end ${expectedCallableType === null || expectedCallableType === void 0 ? void 0 : expectedCallableType.replace(/^end\s*/, '')}' to terminate ${expectedCallableType} block`;
292
+ if (actualCallableType) {
293
+ message += ` but found 'end ${actualCallableType === null || actualCallableType === void 0 ? void 0 : actualCallableType.replace(/^end\s*/, '')}' instead.`;
294
+ }
295
+ return {
296
+ message: message,
297
+ legacyCode: 1042,
298
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
299
+ code: 'closing-keyword'
300
+ };
301
+ },
232
302
  expectedParameterNameButFound: (text) => ({
233
303
  message: `Expected parameter name, but found '${text !== null && text !== void 0 ? text : ''}'`,
234
- code: 1043,
235
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
304
+ legacyCode: 1043,
305
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
306
+ code: 'expected-parameter-name'
236
307
  }),
237
- functionParameterTypeIsInvalid: (parameterName, typeText) => ({
308
+ __unused2: (parameterName, typeText) => ({
238
309
  message: `Function parameter '${parameterName}' is of invalid type '${typeText}'`,
239
- code: 1044,
310
+ legacyCode: 1044,
240
311
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
241
312
  }),
242
313
  cannotUseReservedWordAsIdentifier: (name) => ({
243
314
  message: `Cannot use reserved word '${name}' as an identifier`,
244
- code: 1045,
245
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
315
+ legacyCode: 1045,
316
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
317
+ code: 'cannot-use-reserved-word'
246
318
  }),
247
- expectedOperatorAfterIdentifier: (operators, name) => {
319
+ expectedOperator: (operators, name) => {
248
320
  operators = Array.isArray(operators) ? operators : [];
321
+ let message = `Expected operator ('${operators.join(`', '`)}')`;
322
+ if (name) {
323
+ message += ` after idenfifier '${name}'`;
324
+ }
249
325
  return {
250
- message: `Expected operator ('${operators.join(`', '`)}') after idenfifier '${name}'`,
251
- code: 1046,
252
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
326
+ message: message,
327
+ legacyCode: 1046,
328
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
329
+ code: 'expected-operator'
253
330
  };
254
331
  },
255
332
  expectedInlineIfStatement: () => ({
256
333
  message: `If/else statement within an inline if should be also inline`,
257
- code: 1047,
258
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
334
+ legacyCode: 1047,
335
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
336
+ code: 'malformed-inline-if'
259
337
  }),
260
338
  expectedFinalNewline: () => ({
261
339
  message: `Expected newline at the end of an inline if statement`,
262
- code: 1048,
263
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
340
+ legacyCode: 1048,
341
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
342
+ code: 'expected-final-newline'
264
343
  }),
265
344
  couldNotFindMatchingEndKeyword: (keyword) => ({
266
345
  message: `Could not find matching 'end ${keyword}'`,
267
- code: 1049,
268
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
346
+ legacyCode: 1049,
347
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
348
+ code: 'expected-end-keyword'
269
349
  }),
270
350
  expectedCatchBlockInTryCatch: () => ({
271
351
  message: `Expected 'catch' block in 'try' statement`,
272
- code: 1050,
273
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
352
+ legacyCode: 1050,
353
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
354
+ code: 'expected-catch'
274
355
  }),
275
- expectedEndForOrNextToTerminateForLoop: () => ({
276
- message: `Expected 'end for' or 'next' to terminate 'for' loop`,
277
- code: 1051,
278
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
356
+ expectedEndForOrNextToTerminateForLoop: (forLoopNameText = TokenKind_1.TokenKind.For) => ({
357
+ message: `Expected 'end for' or 'next' to terminate '${forLoopNameText}' loop`,
358
+ legacyCode: 1051,
359
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
360
+ code: 'expected-loop-terminator'
279
361
  }),
280
- expectedInAfterForEach: (name) => ({
362
+ __unused32: (name) => ({
281
363
  message: `Expected 'in' after 'for each ${name}'`,
282
- code: 1052,
283
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
364
+ legacyCode: 1052,
365
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
366
+ code: 'expected-in-for-each'
284
367
  }),
285
368
  expectedExpressionAfterForEachIn: () => ({
286
369
  message: `Expected expression after 'in' keyword from 'for each' statement`,
287
- code: 1053,
288
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
370
+ legacyCode: 1053,
371
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
372
+ code: 'expected-loop-expression'
289
373
  }),
290
374
  unexpectedColonBeforeIfStatement: () => ({
291
375
  message: `Colon before 'if' statement is not allowed`,
292
- code: 1054,
293
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
376
+ legacyCode: 1054,
377
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
378
+ code: 'unexpected-leading-colon'
294
379
  }),
295
380
  expectedStringLiteralAfterKeyword: (keyword) => ({
296
- message: `Missing string literal after '${keyword}' keyword`,
297
- code: 1055,
298
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
381
+ message: `Expected string literal after '${keyword}' keyword`,
382
+ legacyCode: 1055,
383
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
384
+ code: 'expected-string-literal'
299
385
  }),
300
386
  keywordMustBeDeclaredAtRootLevel: (keyword) => ({
301
387
  message: `${keyword} must be declared at the root level`,
302
- code: 1056,
303
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
388
+ legacyCode: 1056,
389
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
390
+ code: 'keyword-must-be-root-level'
304
391
  }),
305
- libraryStatementMustBeDeclaredAtTopOfFile: () => ({
392
+ __unused5: () => ({
306
393
  message: `'library' statement must be declared at the top of the file`,
307
- code: 1057,
394
+ legacyCode: 1057,
308
395
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
309
396
  }),
310
- expectedEndIfElseIfOrElseToTerminateThenBlock: () => ({
397
+ expectedTerminator: (expectedTerminators, statementType, blockDescriptor = 'statement') => ({
398
+ message: `Expected ${getPossibilitiesString(expectedTerminators)} to terminate '${statementType}' ${blockDescriptor}`,
399
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
400
+ code: 'expected-terminator'
401
+ }),
402
+ __unused14: () => ({
311
403
  message: `Expected 'end if', 'else if', or 'else' to terminate 'then' block`,
312
- code: 1058,
313
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
404
+ legacyCode: 1058,
405
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
406
+ code: 'expected-terminator-on-then'
314
407
  }),
315
- expectedEndTryToTerminateTryCatch: () => ({
408
+ __unused15: () => ({
316
409
  message: `Expected 'end try' to terminate 'try-catch' statement`,
317
- code: 1059,
318
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
410
+ legacyCode: 1059,
411
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
412
+ code: 'expected-terminator-on-try-catch'
319
413
  }),
320
- expectedEndIfToCloseIfStatement: (startingPosition) => ({
321
- message: `Expected 'end if' to close 'if' statement started at ${(startingPosition === null || startingPosition === void 0 ? void 0 : startingPosition.line) + 1}:${(startingPosition === null || startingPosition === void 0 ? void 0 : startingPosition.character) + 1}`,
322
- code: 1060,
323
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
414
+ __unused16: (startingPosition) => ({
415
+ message: `Expected 'end if' to close 'if' statement started at ${(startingPosition === null || startingPosition === void 0 ? void 0 : startingPosition.line) + 1}:${(startingPosition === null || startingPosition === void 0 ? void 0 : startingPosition.character) + 1} `,
416
+ legacyCode: 1060,
417
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
418
+ code: 'expected-terminator-on-if'
324
419
  }),
325
- expectedStatementToFollowConditionalCondition: (conditionType) => ({
420
+ expectedStatement: (conditionType, extraDetail) => {
421
+ let message = 'Expected statement';
422
+ if (conditionType) {
423
+ message += ` to follow '${conditionType === null || conditionType === void 0 ? void 0 : conditionType.toLowerCase()}'`;
424
+ }
425
+ if (extraDetail) {
426
+ message += ` ${extraDetail}`;
427
+ }
428
+ return {
429
+ message: message,
430
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
431
+ code: 'expected-statement'
432
+ };
433
+ },
434
+ __unused18: (conditionType) => ({
326
435
  message: `Expected a statement to follow '${conditionType === null || conditionType === void 0 ? void 0 : conditionType.toLowerCase()} ...condition... then'`,
327
- code: 1061,
328
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
436
+ legacyCode: 1061,
437
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
438
+ code: 'expected-statement-after-conditional'
329
439
  }),
330
- expectedStatementToFollowElse: () => ({
440
+ __unused19: () => ({
331
441
  message: `Expected a statement to follow 'else'`,
332
- code: 1062,
333
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
442
+ legacyCode: 1062,
443
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
444
+ code: 'expected-statement-after-else'
334
445
  }),
335
- consecutiveIncrementDecrementOperatorsAreNotAllowed: () => ({
336
- message: `Consecutive increment/decrement operators are not allowed`,
337
- code: 1063,
338
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
446
+ unexpectedOperator: () => ({
447
+ message: `Unexpected operator`,
448
+ legacyCode: 1063,
449
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
450
+ code: 'unexpected-operator'
339
451
  }),
340
- incrementDecrementOperatorsAreNotAllowedAsResultOfFunctionCall: () => ({
341
- message: ``,
342
- code: 1064,
343
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
452
+ __unused13: () => ({
453
+ message: `Increment / decrement operators are not allowed on function calls`,
454
+ legacyCode: 1064,
455
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
456
+ code: 'increment-decrement-on-function-call'
344
457
  }),
345
458
  xmlUnexpectedTag: (tagName) => ({
346
459
  message: `Unexpected tag '${tagName}'`,
347
- code: 1065,
348
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
460
+ legacyCode: 1065,
461
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
462
+ code: 'unexpected-tag'
349
463
  }),
350
- expectedStatementOrFunctionCallButReceivedExpression: () => ({
351
- message: `Expected statement or function call but instead found expression`,
352
- code: 1066,
353
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
464
+ expectedStatementOrFunctionCallButReceivedExpression: (expressionType = 'expression') => ({
465
+ message: `Expected statement or function call but instead found ${expressionType}`,
466
+ legacyCode: 1066,
467
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
468
+ code: 'expected-statement-or-function-call-not-expression'
354
469
  }),
355
470
  xmlFunctionNotFound: (name) => ({
356
471
  message: `Cannot find function with name '${name}' in component scope`,
357
- code: 1067,
358
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
472
+ legacyCode: 1067,
473
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
474
+ code: 'function-not-found'
359
475
  }),
360
476
  xmlInvalidFieldType: (name) => ({
361
477
  message: `Invalid field type ${name}`,
362
- code: 1068,
363
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
478
+ legacyCode: 1068,
479
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
480
+ code: 'invalid-field-type'
364
481
  }),
365
482
  xmlUnexpectedChildren: (tagName) => ({
366
483
  message: `Tag '${tagName}' should not have children`,
367
- code: 1069,
368
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
484
+ legacyCode: 1069,
485
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
486
+ code: 'unexpected-children'
369
487
  }),
370
488
  xmlTagMissingAttribute: (tagName, attrName) => ({
371
489
  message: `Tag '${tagName}' must have a '${attrName}' attribute`,
372
- code: 1070,
373
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
490
+ legacyCode: 1070,
491
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
492
+ code: 'expected-attribute'
374
493
  }),
375
494
  expectedLabelIdentifierAfterGotoKeyword: () => ({
376
495
  message: `Expected label identifier after 'goto' keyword`,
377
- code: 1071,
378
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
496
+ legacyCode: 1071,
497
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
498
+ code: 'expected-label'
379
499
  }),
380
- expectedRightSquareBraceAfterArrayOrObjectIndex: () => ({
500
+ __unused26: () => ({
381
501
  message: `Expected ']' after array or object index`,
382
- code: 1072,
383
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
502
+ legacyCode: 1072,
503
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
504
+ code: 'expected-right-brace'
384
505
  }),
385
- expectedPropertyNameAfterPeriod: () => ({
506
+ __unused21: () => ({
386
507
  message: `Expected property name after '.'`,
387
- code: 1073,
388
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
508
+ legacyCode: 1073,
509
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
510
+ code: 'expected-property-name'
389
511
  }),
390
512
  tooManyCallableArguments: (actual, max) => ({
391
- message: `Cannot have more than ${max} arguments but found ${actual}`,
392
- code: 1074,
393
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
394
- }),
395
- expectedRightParenAfterFunctionCallArguments: () => ({
396
- message: `Expected ')' after function call arguments`,
397
- code: 1075,
398
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
513
+ message: `Cannot have more than ${max} arguments but found ${actual} `,
514
+ legacyCode: 1074,
515
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
516
+ code: 'exceeds-max-argument-count'
399
517
  }),
400
- unmatchedLeftParenAfterExpression: () => ({
518
+ /**
519
+ * @param unmatchedToken Should be one of '(', '[', or '{'
520
+ * @param afterDetail any additional message to describe what came before the unmatched token
521
+ */
522
+ unmatchedLeftToken: (unmatchedToken, afterDetail = '') => {
523
+ let matchingToken = '';
524
+ switch (unmatchedToken) {
525
+ case '(':
526
+ matchingToken = ')';
527
+ break;
528
+ case '[':
529
+ matchingToken = ']';
530
+ break;
531
+ case '{':
532
+ matchingToken = '}';
533
+ break;
534
+ }
535
+ let message = `Unmatched '${unmatchedToken}'`;
536
+ if (matchingToken) {
537
+ message += `: expected '${matchingToken}'`;
538
+ }
539
+ if (afterDetail) {
540
+ message += ` after ${afterDetail}`;
541
+ }
542
+ return {
543
+ message: message,
544
+ legacyCode: 1075,
545
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
546
+ code: 'unmatched-left-token'
547
+ };
548
+ },
549
+ __unused23: () => ({
401
550
  message: `Unmatched '(': expected ')' after expression`,
402
- code: 1076,
403
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
551
+ legacyCode: 1076,
552
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
553
+ code: 'unmatched-left-paren'
404
554
  }),
405
- unmatchedLeftSquareBraceAfterArrayLiteral: () => ({
555
+ __unused24: () => ({
406
556
  message: `Unmatched '[': expected ']' after array literal`,
407
- code: 1077,
408
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
557
+ legacyCode: 1077,
558
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
559
+ code: 'unmatched-left-brace'
409
560
  }),
410
561
  unexpectedAAKey: () => ({
411
562
  message: `Expected identifier or string as associative array key`,
412
- code: 1078,
413
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
563
+ legacyCode: 1078,
564
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
565
+ code: 'invalid-aa-key'
414
566
  }),
415
567
  expectedColonBetweenAAKeyAndvalue: () => ({
416
568
  message: `Expected ':' between associative array key and value`,
417
- code: 1079,
418
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
569
+ legacyCode: 1079,
570
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
571
+ code: 'expected-aa-separator'
419
572
  }),
420
- unmatchedLeftCurlyAfterAALiteral: () => ({
573
+ __unused25: () => ({
421
574
  message: `Unmatched '{': expected '}' after associative array literal`,
422
- code: 1080,
423
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
575
+ legacyCode: 1080,
576
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
577
+ code: 'unmatched-left-curly'
424
578
  }),
425
- foundUnexpectedToken: (text) => ({
426
- message: `Found unexpected token '${text}'`,
427
- code: 1081,
428
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
579
+ unexpectedToken: (text) => ({
580
+ message: `Unexpected token '${text}'`,
581
+ legacyCode: 1081,
582
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
583
+ code: 'unexpected-token'
429
584
  }),
430
585
  /**
431
586
  * Used in the lexer anytime we encounter an unsupported character
432
587
  */
433
588
  unexpectedCharacter: (text) => ({
434
- message: `Unexpected character '${text}' (char code ${text === null || text === void 0 ? void 0 : text.charCodeAt(0)})`,
435
- code: 1082,
436
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
589
+ message: `Unexpected character '${text}'(char code ${text === null || text === void 0 ? void 0 : text.charCodeAt(0)})`,
590
+ legacyCode: 1082,
591
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
592
+ code: 'unexpected-character'
437
593
  }),
438
- unterminatedStringAtEndOfLine: () => ({
439
- message: `Unterminated string at end of line`,
440
- code: 1083,
441
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
594
+ unterminatedString: () => ({
595
+ message: `Unterminated string literal`,
596
+ legacyCode: 1083,
597
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
598
+ code: 'unterminated-string'
442
599
  }),
443
- unterminatedStringAtEndOfFile: () => ({
600
+ __unused33: () => ({
444
601
  message: `Unterminated string at end of file`,
445
- code: 1084,
446
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
602
+ legacyCode: 1084,
603
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
604
+ code: 'unterminated-string-at-end-of-file'
447
605
  }),
448
- fractionalHexLiteralsAreNotSupported: () => ({
606
+ __unused44: () => ({
449
607
  message: `Fractional hex literals are not supported`,
450
- code: 1085,
451
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
608
+ legacyCode: 1085,
609
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
610
+ code: 'fractional-hex-literal'
452
611
  }),
453
612
  unexpectedConditionalCompilationString: () => ({
454
- message: `Unexpected conditional-compilation string`,
455
- code: 1086,
456
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
613
+ message: `Unknown conditional compile keyword`,
614
+ legacyCode: 1086,
615
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
616
+ code: 'unknown-conditional-compile-keyword'
457
617
  }),
458
618
  duplicateConstDeclaration: (name) => ({
459
619
  message: `Attempting to redeclare #const with name '${name}'`,
460
- code: 1087,
461
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
620
+ legacyCode: 1087,
621
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
622
+ code: 'duplicate-const-declaration'
462
623
  }),
463
- constAliasDoesNotExist: (name) => ({
624
+ __unused34: (name) => ({
464
625
  message: `Attempting to create #const alias of '${name}', but no such #const exists`,
465
- code: 1088,
466
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
626
+ legacyCode: 1088,
627
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
628
+ code: 'const-alias-does-not-exist'
467
629
  }),
468
630
  invalidHashConstValue: () => ({
469
631
  message: '#const declarations can only have values of `true`, `false`, or other #const names',
470
- code: 1089,
471
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
632
+ legacyCode: 1089,
633
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
634
+ code: 'invalid-hash-const-value'
472
635
  }),
473
- referencedConstDoesNotExist: () => ({
636
+ hashConstDoesNotExist: () => ({
474
637
  message: `Referenced #const does not exist`,
475
- code: 1090,
476
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
638
+ legacyCode: 1090,
639
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
640
+ code: 'hash-const-does-not-exist'
477
641
  }),
478
642
  invalidHashIfValue: () => ({
479
643
  message: `#if conditionals can only be 'true', 'false', or other #const names`,
480
- code: 1091,
481
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
644
+ legacyCode: 1091,
645
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
646
+ code: 'invalid-hash-if-value'
482
647
  }),
648
+ /**
649
+ * Treat #error directives like diagnostics, because the presence of `#error` even inside a runtime logical block that evaluates to false will 100% cause a compile error.
650
+ */
483
651
  hashError: (message) => ({
484
- message: `#error ${message}`,
485
- code: 1092,
486
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
652
+ message: `#error ${message} `,
653
+ legacyCode: 1092,
654
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
655
+ code: 'hash-error'
487
656
  }),
488
- expectedEqualAfterConstName: () => ({
657
+ __unused43: () => ({
489
658
  message: `Expected '=' after #const`,
490
- code: 1093,
491
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
659
+ legacyCode: 1093,
660
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
661
+ code: 'expected-equal-after-hash-const'
492
662
  }),
493
- expectedHashElseIfToCloseHashIf: (startingLine) => ({
494
- message: `Expected '#else if' to close '#if' conditional compilation statement starting on line ${startingLine}`,
495
- code: 1094,
496
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
663
+ __unused17: (startingLine) => ({
664
+ message: `Expected '#end if' to close '#if' conditional compilation statement starting on line ${startingLine} `,
665
+ legacyCode: 1094,
666
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
667
+ code: 'expected-terminator-on-hash-if'
497
668
  }),
498
- constNameCannotBeReservedWord: () => ({
669
+ __unused35: () => ({
499
670
  message: `#const name cannot be a reserved word`,
500
- code: 1095,
501
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
671
+ legacyCode: 1095,
672
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
673
+ code: 'const-reservered-word'
502
674
  }),
503
- expectedIdentifier: () => ({
675
+ __unused22: () => ({
504
676
  message: `Expected identifier`,
505
- code: 1096,
506
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
677
+ legacyCode: 1096,
678
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
679
+ code: 'expected-identifier'
507
680
  }),
508
681
  expectedAttributeNameAfterAtSymbol: () => ({
509
682
  message: `Expected xml attribute name after '@'`,
510
- code: 1097,
511
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
683
+ legacyCode: 1097,
684
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
685
+ code: 'expected-attribute-name'
512
686
  }),
513
687
  childFieldTypeNotAssignableToBaseProperty: (childTypeName, baseTypeName, fieldName, childFieldType, parentFieldType) => ({
514
- message: `Field '${fieldName}' in class '${childTypeName}' is not assignable to the same field in base class '${baseTypeName}'. Type '${childFieldType}' is not assignable to type '${parentFieldType}'.`,
515
- code: 1098,
516
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
688
+ message: `Field '${fieldName}' in class '${childTypeName}' is not assignable to the same field in base class '${baseTypeName}'.Type '${childFieldType}' is not assignable to type '${parentFieldType}'.`,
689
+ legacyCode: 1098,
690
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
691
+ code: 'field-inheritance-mismatch'
517
692
  }),
518
- classChildMemberDifferentMemberTypeThanAncestor: (memberType, parentMemberType, parentClassName) => ({
693
+ __unused36: (memberType, parentMemberType, parentClassName) => ({
519
694
  message: `Class member is a ${memberType} here but a ${parentMemberType} in ancestor class '${parentClassName}'`,
520
- code: 1099,
521
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
695
+ legacyCode: 1099,
696
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
697
+ code: 'child-field-type-different'
522
698
  }),
523
699
  classConstructorMissingSuperCall: () => ({
524
700
  message: `Missing "super()" call in class constructor method.`,
525
- code: 1100,
526
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
701
+ legacyCode: 1100,
702
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
703
+ code: 'expected-super-call'
527
704
  }),
528
705
  classConstructorIllegalUseOfMBeforeSuperCall: () => ({
529
706
  message: `Illegal use of "m" before calling "super()"`,
530
- code: 1101,
531
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
707
+ legacyCode: 1101,
708
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
709
+ code: 'expected-super-before-statement'
532
710
  }),
533
711
  classFieldCannotBeOverridden: () => ({
534
712
  message: `Class field cannot be overridden`,
535
- code: 1102,
536
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
713
+ legacyCode: 1102,
714
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
715
+ code: 'invalid-field-override'
537
716
  }),
538
717
  unusedAnnotation: () => ({
539
718
  message: `This annotation is not attached to any statement`,
540
- code: 1103,
541
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
719
+ legacyCode: 1103,
720
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
721
+ code: 'unexpected-annotation'
542
722
  }),
543
723
  localVarShadowedByScopedFunction: () => ({
544
- message: `Declaring a local variable with same name as scoped function can result in unexpected behavior`,
545
- code: 1104,
546
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
724
+ message: `Declaring a local variable with same name as scoped function or class can result in unexpected behavior`,
725
+ legacyCode: 1104,
726
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
727
+ code: 'var-shadows-function'
547
728
  }),
548
729
  scopeFunctionShadowedByBuiltInFunction: () => ({
549
- message: `Scope function will not be accessible because it has the same name as a built-in function`,
550
- code: 1105,
551
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
730
+ message: `Scope function will not be accessible because it has the same name as a built -in function`,
731
+ legacyCode: 1105,
732
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
733
+ code: 'native-function-collision'
552
734
  }),
553
- localVarSameNameAsClass: (className) => ({
735
+ __unused38: (className) => ({
554
736
  message: `Local variable has same name as class '${className}'`,
555
- code: 1106,
556
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
737
+ legacyCode: 1106,
738
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
739
+ code: 'local-var-same-name-as-class'
557
740
  }),
558
741
  unnecessaryCodebehindScriptImport: () => ({
559
742
  message: `This import is unnecessary because compiler option 'autoImportComponentScript' is enabled`,
560
- code: 1107,
561
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning
743
+ legacyCode: 1107,
744
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
745
+ code: 'unnecessary-codebehind-script-import'
562
746
  }),
563
- expectedOpenParenToFollowCallfuncIdentifier: () => ({
747
+ __unused37: () => ({
564
748
  message: `Expected '(' to follow callfunc identifier`,
565
- code: 1108,
566
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
749
+ legacyCode: 1108,
750
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
751
+ code: 'expected-left-paren-after-callfunc'
567
752
  }),
568
- expectedTokenAButFoundTokenB: (tokenA, tokenB) => ({
569
- message: `Expected '${tokenA}' but instead found ${tokenB}`,
570
- code: 1109,
571
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
753
+ expectedToken: (...tokenKinds) => ({
754
+ message: `Expected token '${tokenKinds.join(`' or '`)}'`,
755
+ legacyCode: 1109,
756
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
757
+ code: 'expected-token'
572
758
  }),
573
- parameterMayNotHaveSameNameAsNamespace: (paramName) => ({
759
+ __unused10: (paramName) => ({
574
760
  message: `Parameter '${paramName}' may not have the same name as namespace`,
575
- code: 1110,
576
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
761
+ legacyCode: 1110,
762
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
763
+ code: 'parameter-same-name-as-namespace'
577
764
  }),
578
- variableMayNotHaveSameNameAsNamespace: (variableName) => ({
765
+ __unused11: (variableName) => ({
579
766
  message: `Variable '${variableName}' may not have the same name as namespace`,
580
- code: 1111,
581
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
767
+ legacyCode: 1111,
768
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
769
+ code: 'variable-same-name-as-namespace'
582
770
  }),
583
- unterminatedTemplateStringAtEndOfFile: () => ({
584
- message: `Unterminated template string at end of file`,
585
- code: 1113,
586
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
771
+ unterminatedTemplateString: () => ({
772
+ message: `Unterminated template string`,
773
+ legacyCode: 1113,
774
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
775
+ code: 'unterminated-template-string'
587
776
  }),
588
777
  unterminatedTemplateExpression: () => ({
589
778
  message: `Unterminated template string expression. '\${' must be followed by expression, then '}'`,
590
- code: 1114,
591
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
779
+ legacyCode: 1114,
780
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
781
+ code: 'unterminated-template-string-expression'
592
782
  }),
593
783
  duplicateComponentName: (componentName) => ({
594
784
  message: `There are multiple components with the name '${componentName}'`,
595
- code: 1115,
596
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
785
+ legacyCode: 1115,
786
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
787
+ code: 'duplicate-component-name'
597
788
  }),
598
- functionCannotHaveSameNameAsClass: (className) => ({
789
+ __unused6: (className) => ({
599
790
  message: `Function has same name as class '${className}'`,
600
- code: 1116,
791
+ legacyCode: 1116,
601
792
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
602
793
  }),
603
- missingExceptionVarToFollowCatch: () => ({
604
- message: `Missing exception variable after 'catch' keyword`,
605
- code: 1117,
606
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
794
+ expectedExceptionVarToFollowCatch: () => ({
795
+ message: `Expected exception variable after 'catch' keyword`,
796
+ legacyCode: 1117,
797
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
798
+ code: 'expected-exception-variable'
607
799
  }),
608
800
  missingExceptionExpressionAfterThrowKeyword: () => ({
609
801
  message: `Missing exception expression after 'throw' keyword`,
610
- code: 1118,
611
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
802
+ legacyCode: 1118,
803
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
804
+ code: 'expected-throw-expression'
612
805
  }),
613
- missingLeftSquareBracketAfterDimIdentifier: () => ({
806
+ __unused42: () => ({
614
807
  message: `Missing left square bracket after 'dim' identifier`,
615
- code: 1119,
616
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
808
+ legacyCode: 1119,
809
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
810
+ code: 'expected-left-brace-after-dim'
617
811
  }),
618
- missingRightSquareBracketAfterDimIdentifier: () => ({
812
+ __unused39: () => ({
619
813
  message: `Missing right square bracket after 'dim' identifier`,
620
- code: 1120,
621
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
814
+ legacyCode: 1120,
815
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
816
+ code: 'missing-right-brace-after-dim'
622
817
  }),
623
818
  missingExpressionsInDimStatement: () => ({
624
819
  message: `Missing expression(s) in 'dim' statement`,
625
- code: 1121,
626
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
820
+ legacyCode: 1121,
821
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
822
+ code: 'expected-dim-expression'
627
823
  }),
628
824
  mismatchedOverriddenMemberVisibility: (childClassName, memberName, childAccessModifier, ancestorAccessModifier, ancestorClassName) => ({
629
825
  message: `Access modifier mismatch: '${memberName}' is ${childAccessModifier} in type '${childClassName}' but is ${ancestorAccessModifier} in base type '${ancestorClassName}'.`,
630
- code: 1122,
631
- severity: vscode_languageserver_1.DiagnosticSeverity.Error
826
+ legacyCode: 1122,
827
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
828
+ code: 'access-modifier-mismatch'
632
829
  }),
633
- cannotFindType: (typeName) => ({
830
+ __unused3: (typeName) => ({
634
831
  message: `Cannot find type with name '${typeName}'`,
635
- code: 1123,
832
+ legacyCode: 1123,
636
833
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
637
834
  }),
638
- argumentTypeMismatch: (actualTypeString, expectedTypeString) => ({
639
- message: `Argument of type '${actualTypeString}' is not assignable to parameter of type '${expectedTypeString}'`,
640
- code: 1124,
835
+ enumValueMustBeType: (expectedType) => ({
836
+ message: `Enum value must be type '${expectedType}'`,
837
+ legacyCode: 1124,
838
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
839
+ code: 'enum-type-mismatch'
840
+ }),
841
+ enumValueIsRequired: (expectedType) => ({
842
+ message: `Value is required for ${expectedType} enum`,
843
+ legacyCode: 1125,
844
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
845
+ code: 'expected-enum-value'
846
+ }),
847
+ __unused40: (name, enumName) => ({
848
+ message: `Property '${name}' does not exist on enum '${enumName}'`,
849
+ legacyCode: 1126,
850
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
851
+ code: 'unknown-enum-value'
852
+ }),
853
+ __unused7: (scopeName, enumName) => ({
854
+ message: `Scope '${scopeName}' already contains an enum with name '${enumName}'`,
855
+ legacyCode: 1127,
641
856
  severity: vscode_languageserver_1.DiagnosticSeverity.Error
642
- })
857
+ }),
858
+ unknownRoSGNode: (nodeName) => ({
859
+ message: `Unknown roSGNode '${nodeName}'`,
860
+ legacyCode: 1128,
861
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
862
+ code: 'unknown-rosgnode'
863
+ }),
864
+ unknownBrightScriptComponent: (componentName) => ({
865
+ message: `Unknown BrightScript component '${componentName}'`,
866
+ legacyCode: 1129,
867
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
868
+ code: 'unknown-brightscript-component'
869
+ }),
870
+ mismatchCreateObjectArgumentCount: (componentName, allowedArgCounts, actualCount) => {
871
+ const argCountArray = (allowedArgCounts || [1]).sort().filter((value, index, self) => self.indexOf(value) === index);
872
+ return {
873
+ message: `For ${componentName}, expected ${argCountArray.map(c => c.toString()).join(' or ')} total arguments, but got ${actualCount}.`,
874
+ legacyCode: 1130,
875
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
876
+ code: 'incorrect-createobject-argument-count'
877
+ };
878
+ },
879
+ __unused41: (componentName, deprecatedDescription) => ({
880
+ message: `${componentName} has been deprecated${deprecatedDescription ? ': ' + deprecatedDescription : ''} `,
881
+ legacyCode: 1131,
882
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
883
+ code: 'deprecated-brightscript-component'
884
+ }),
885
+ circularReferenceDetected: (items = []) => {
886
+ let detail = '';
887
+ if (Array.isArray(items)) {
888
+ if (items.length > 1) {
889
+ detail += ' between';
890
+ }
891
+ if (items.length > 0) {
892
+ detail += ' ' + items.map(item => `'${item}'`).join(' -> ');
893
+ }
894
+ }
895
+ else if (items) {
896
+ detail = ` '${items}'`;
897
+ }
898
+ return {
899
+ message: `Circular reference detected${detail}`,
900
+ legacyCode: 1132,
901
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
902
+ code: 'circular-reference'
903
+ };
904
+ },
905
+ unexpectedStatementOutsideFunction: () => ({
906
+ message: `Unexpected statement found outside of function body`,
907
+ legacyCode: 1133,
908
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
909
+ code: 'unexpected-statement'
910
+ }),
911
+ detectedTooDeepFileSource: (numberOfParentDirectories) => ({
912
+ message: `Expected directory depth no larger than 7, but found ${numberOfParentDirectories} `,
913
+ legacyCode: 1134,
914
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
915
+ code: 'directory-depth'
916
+ }),
917
+ illegalContinueStatement: () => ({
918
+ message: `Continue statement must be contained within a loop statement`,
919
+ legacyCode: 1135,
920
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
921
+ code: 'unexpected-continue'
922
+ }),
923
+ keywordMustBeDeclaredAtNamespaceLevel: (keyword) => ({
924
+ message: `${keyword} must be declared at the root level or within a namespace`,
925
+ legacyCode: 1136,
926
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
927
+ code: 'invalid-declaration-location'
928
+ }),
929
+ itemCannotBeUsedAsVariable: (itemType) => ({
930
+ message: `${itemType} cannot be used as a variable`,
931
+ legacyCode: 1137,
932
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
933
+ code: 'type-not-variable'
934
+ }),
935
+ callfuncHasToManyArgs: (numberOfArgs) => ({
936
+ message: `You can not have more than 5 arguments in a callFunc.${numberOfArgs} found.`,
937
+ legacyCode: 1138,
938
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
939
+ code: 'exceeds-max-callfunc-arg-count'
940
+ }),
941
+ noOptionalChainingInLeftHandSideOfAssignment: () => ({
942
+ message: `Optional chaining may not be used in the left-hand side of an assignment`,
943
+ legacyCode: 1139,
944
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
945
+ code: 'unexpected-optional-chain'
946
+ }),
947
+ /**
948
+ * @param name for function calls where we can't find the name of the function
949
+ * @param fullName if a namespaced name, this is the full name `alpha.beta.charlie`, otherwise it's the same as `name`
950
+ * @param typeName if 'name' refers to a member, what is the the type it is a member of?
951
+ * @param typeDescriptor defaults to 'type' ... could also be 'namespace', etc.
952
+ */
953
+ cannotFindFunction: (name, fullName, typeName, typeDescriptor = 'type') => ({
954
+ message: `Cannot find function '${name}'${typeName ? ` for ${typeDescriptor} '${typeName}'` : ''} `,
955
+ legacyCode: 1140,
956
+ data: {
957
+ name: name,
958
+ fullName: fullName !== null && fullName !== void 0 ? fullName : name,
959
+ typeName: typeName ? typeName : undefined
960
+ },
961
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
962
+ code: 'cannot-find-function'
963
+ }),
964
+ voidFunctionMayNotReturnValue: (functionType = 'function') => ({
965
+ message: `Void ${functionType} may not return a value`,
966
+ legacyCode: 1141,
967
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
968
+ code: 'unexpected-return-value'
969
+ }),
970
+ nonVoidFunctionMustReturnValue: (functionType = 'function') => ({
971
+ message: `Non-void ${functionType} must return a value`,
972
+ legacyCode: 1142,
973
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
974
+ code: 'missing-return-value'
975
+ }),
976
+ assignmentTypeMismatch: (actualTypeString, expectedTypeString, data) => ({
977
+ message: `Type '${actualTypeString}' is not compatible with type '${expectedTypeString}'${typeCompatibilityMessage(actualTypeString, expectedTypeString, data)}`,
978
+ data: data,
979
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
980
+ code: 'assignment-type-mismatch'
981
+ }),
982
+ operatorTypeMismatch: (operatorString, firstType, secondType = '') => ({
983
+ message: `Operator '${operatorString}' cannot be applied to type${secondType ? 's' : ''} '${firstType}'${secondType ? ` and '${secondType}'` : ''}`,
984
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
985
+ code: 'operator-type-mismatch'
986
+ }),
987
+ incompatibleSymbolDefinition: (symbol, options = {}) => ({
988
+ message: `'${symbol}' is incompatible${incompatibleSymbolMessage(symbol, options)}`,
989
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
990
+ code: 'incompatible-definition'
991
+ }),
992
+ memberAccessibilityMismatch: (memberName, accessModifierFlag, definingClassName) => {
993
+ let accessModName = TokenKind_1.TokenKind.Public;
994
+ // eslint-disable-next-line no-bitwise
995
+ if (accessModifierFlag & 8 /* SymbolTypeFlag.private */) {
996
+ accessModName = TokenKind_1.TokenKind.Private;
997
+ // eslint-disable-next-line no-bitwise
998
+ }
999
+ else if (accessModifierFlag & 16 /* SymbolTypeFlag.protected */) {
1000
+ accessModName = TokenKind_1.TokenKind.Protected;
1001
+ }
1002
+ accessModName = accessModName.toLowerCase();
1003
+ let accessAdditionalInfo = '';
1004
+ // eslint-disable-next-line no-bitwise
1005
+ if (accessModifierFlag & 8 /* SymbolTypeFlag.private */) {
1006
+ accessAdditionalInfo = ` and only accessible from within class '${definingClassName}'`;
1007
+ // eslint-disable-next-line no-bitwise
1008
+ }
1009
+ else if (accessModifierFlag & 16 /* SymbolTypeFlag.protected */) {
1010
+ accessAdditionalInfo = ` and only accessible from within class '${definingClassName}' and its subclasses`;
1011
+ }
1012
+ return {
1013
+ message: `Member '${memberName}' is ${accessModName}${accessAdditionalInfo}`,
1014
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1015
+ code: 'member-access-violation'
1016
+ };
1017
+ },
1018
+ invalidTypecastStatementApplication: (foundApplication, isInFunctionBlock) => ({
1019
+ message: `'typecast' statement can only be applied to ${!isInFunctionBlock ? '\'m\'' : 'variables'}, but was applied to '${foundApplication}'`,
1020
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1021
+ code: 'invalid-typecast-target'
1022
+ }),
1023
+ itemCannotBeUsedAsType: (typeText) => ({
1024
+ message: `'${typeText}' cannot be used as a type`,
1025
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1026
+ code: 'invalid-type-reference'
1027
+ }),
1028
+ unsafeUnmatchedTerminatorInConditionalCompileBlock: (terminator) => ({
1029
+ message: `Unsafe unmatched terminator '${terminator}' in conditional compilation block`,
1030
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1031
+ code: 'inconsistent-conditional-compile-nesting'
1032
+ }),
1033
+ returnTypeCoercionMismatch: (returnType = 'string') => ({
1034
+ message: `Function has no return statement and will return 'invalid': '${returnType}' cannot be coerced into 'invalid'`,
1035
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1036
+ code: 'return-type-coercion-mismatch'
1037
+ }),
1038
+ argumentTypeMismatch: (actualTypeString, expectedTypeString, data) => ({
1039
+ message: `Argument of type '${actualTypeString}' is not compatible with parameter of type '${expectedTypeString}'${typeCompatibilityMessage(actualTypeString, expectedTypeString, data)} `,
1040
+ data: data,
1041
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1042
+ code: 'argument-type-mismatch'
1043
+ }),
1044
+ returnTypeMismatch: (actualTypeString, expectedTypeString, data) => ({
1045
+ message: `Type '${actualTypeString}' is not compatible with declared return type '${expectedTypeString}'${typeCompatibilityMessage(actualTypeString, expectedTypeString, data)} '`,
1046
+ data: data,
1047
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1048
+ code: 'return-type-mismatch'
1049
+ }),
1050
+ cannotFindCallFuncFunction: (name, fullName, typeName) => ({
1051
+ message: `Cannot find callfunc function '${name}' for type '${typeName}'`,
1052
+ data: {
1053
+ name: name,
1054
+ fullName: fullName,
1055
+ typeName: typeName,
1056
+ isCallfunc: true
1057
+ },
1058
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1059
+ code: 'cannot-find-callfunc'
1060
+ }),
1061
+ notCallable: (name) => ({
1062
+ message: `'${name}' is not callable'`,
1063
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1064
+ code: 'not-callable'
1065
+ }),
1066
+ notIterable: (typeName) => ({
1067
+ message: `Type '${typeName}' is not iterable`,
1068
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1069
+ code: 'not-iterable'
1070
+ }),
1071
+ propAccessNotPermittedAfterFunctionCallInExpressionStatement: (accessDescription) => ({
1072
+ message: `${accessDescription} access not permitted after a function call when used in an expression statement`,
1073
+ legacyCode: 1143,
1074
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1075
+ code: 'invalid-access'
1076
+ }),
1077
+ computedPropertyKeyMustBeConstantExpression: () => ({
1078
+ message: `Computed property keys must be a compile-time constant (enum member or const value)`,
1079
+ legacyCode: 1144,
1080
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1081
+ code: 'computed-property-key-not-constant'
1082
+ }),
1083
+ computedAAKeyMustBeStringExpression: () => ({
1084
+ message: `Computed associative array keys must resolve to a string value`,
1085
+ legacyCode: 1145,
1086
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1087
+ code: 'computed-property-key-not-string'
1088
+ }),
1089
+ featureRequiresMinFirmwareVersion: (featureName, minimumVersion, configuredVersion) => ({
1090
+ message: `'${featureName}' requires Roku firmware version ${minimumVersion} or higher (current target is ${configuredVersion})`,
1091
+ legacyCode: 1146,
1092
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1093
+ code: 'requires-min-firmware-version'
1094
+ }),
1095
+ reservedBuiltinUsedAsValue: (name) => ({
1096
+ message: `'${name}' is a reserved builtin and can only be used as a function call (e.g. '${name}(...)')`,
1097
+ legacyCode: 1147,
1098
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1099
+ code: 'reserved-builtin-used-as-value'
1100
+ }),
1101
+ /**
1102
+ * Emitted when a block recovers from a wrong terminator (e.g. `while ... next` or `for ... end while`).
1103
+ * `expected` lists the legal terminators in preferred-first order; `found` is the actual text.
1104
+ * Quick fixes consume the structured `data` to build "Convert '<found>' to '<expected[i]>'" actions.
1105
+ */
1106
+ mismatchedEndingToken: (expected = [], found = '') => {
1107
+ const expectedList = Array.isArray(expected) ? expected : [];
1108
+ return {
1109
+ message: `Expected ${expectedList.map(text => `'${text}'`).join(' or ')} but found '${found}'`,
1110
+ legacyCode: 1148,
1111
+ data: {
1112
+ expected: expectedList,
1113
+ found: found
1114
+ },
1115
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
1116
+ code: 'mismatched-ending-token'
1117
+ };
1118
+ }
643
1119
  };
1120
+ exports.defaultMaximumTruncationLength = 160;
1121
+ function typeCompatibilityMessage(actualTypeString, expectedTypeString, data) {
1122
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
1123
+ let message = '';
1124
+ if (!data) {
1125
+ return message;
1126
+ }
1127
+ actualTypeString = (_b = (_a = data === null || data === void 0 ? void 0 : data.actualType) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : actualTypeString;
1128
+ expectedTypeString = (_d = (_c = data === null || data === void 0 ? void 0 : data.expectedType) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : expectedTypeString;
1129
+ if (((_e = data === null || data === void 0 ? void 0 : data.missingFields) === null || _e === void 0 ? void 0 : _e.length) > 0) {
1130
+ message = `\n Type '${actualTypeString}' is missing the following members of type '${expectedTypeString}': ` + util_1.default.truncate({
1131
+ leadingText: ``,
1132
+ trailingText: '',
1133
+ itemSeparator: ', ',
1134
+ items: data.missingFields,
1135
+ partBuilder: (x) => x.name,
1136
+ maxLength: exports.defaultMaximumTruncationLength
1137
+ });
1138
+ }
1139
+ else if (((_f = data === null || data === void 0 ? void 0 : data.fieldMismatches) === null || _f === void 0 ? void 0 : _f.length) > 0) {
1140
+ message = '. ' + util_1.default.truncate({
1141
+ leadingText: `Type '${actualTypeString}' has incompatible members:`,
1142
+ items: data.fieldMismatches,
1143
+ itemSeparator: '',
1144
+ partBuilder: (x) => `\n member "${x.name}" should be '${x.expectedType}' but is '${x.actualType}'`,
1145
+ maxLength: exports.defaultMaximumTruncationLength
1146
+ });
1147
+ }
1148
+ else if ((data === null || data === void 0 ? void 0 : data.actualParamCount) !== (data === null || data === void 0 ? void 0 : data.expectedParamCount)) {
1149
+ message = `. Type '${expectedTypeString}' requires ${data.expectedParamCount} parameter${data.expectedParamCount === 1 ? '' : 's'} but '${actualTypeString}' has ${data.actualParamCount}`;
1150
+ }
1151
+ else if (((_g = data === null || data === void 0 ? void 0 : data.parameterMismatches) === null || _g === void 0 ? void 0 : _g.length) > 0) {
1152
+ message = '. ' + util_1.default.truncate({
1153
+ leadingText: `Type '${actualTypeString}' has incompatible parameters:`,
1154
+ items: data.parameterMismatches,
1155
+ itemSeparator: '',
1156
+ partBuilder: (x) => {
1157
+ var _a, _b, _c, _d, _e, _f;
1158
+ let pExpected = (_c = (_b = (_a = x.data) === null || _a === void 0 ? void 0 : _a.expectedType) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : 'dynamic';
1159
+ let pActual = (_f = (_e = (_d = x.data) === null || _d === void 0 ? void 0 : _d.actualType) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : 'dynamic';
1160
+ if (x.expectedOptional !== x.actualOptional) {
1161
+ pExpected += x.expectedOptional ? '?' : '';
1162
+ pActual += x.actualOptional ? '?' : '';
1163
+ }
1164
+ return `\n parameter ${x.index + 1} should be '${pExpected}' but is '${pActual}'`;
1165
+ },
1166
+ maxLength: exports.defaultMaximumTruncationLength
1167
+ });
1168
+ }
1169
+ else if (((_h = data === null || data === void 0 ? void 0 : data.returnTypeMismatch) === null || _h === void 0 ? void 0 : _h.actualType) && ((_j = data.returnTypeMismatch) === null || _j === void 0 ? void 0 : _j.expectedType)) {
1170
+ message = `. Type '${actualTypeString}' has incompatible return type:`;
1171
+ message += `\n return type should be '${(_k = data.returnTypeMismatch) === null || _k === void 0 ? void 0 : _k.expectedType}' but is '${(_l = data === null || data === void 0 ? void 0 : data.returnTypeMismatch) === null || _l === void 0 ? void 0 : _l.actualType}'`;
1172
+ }
1173
+ else if ((data === null || data === void 0 ? void 0 : data.expectedVariadic) !== (data === null || data === void 0 ? void 0 : data.actualVariadic)) {
1174
+ const shouldMsg = data.expectedVariadic ? 'should' : 'should not';
1175
+ message = `. Type '${actualTypeString}' ${shouldMsg} be variadic`;
1176
+ }
1177
+ return message;
1178
+ }
1179
+ exports.typeCompatibilityMessage = typeCompatibilityMessage;
1180
+ function getPossibilitiesString(possibilities) {
1181
+ if (!Array.isArray(possibilities)) {
1182
+ return `'${possibilities}'`;
1183
+ }
1184
+ if (possibilities.length === 1) {
1185
+ return `'${possibilities}'`;
1186
+ }
1187
+ let result = '';
1188
+ for (let i = 0; i < possibilities.length; i++) {
1189
+ result += `'${possibilities[i]}'`;
1190
+ if (i < possibilities.length - 2) {
1191
+ result += ', ';
1192
+ }
1193
+ else if (i < possibilities.length - 1) {
1194
+ result += ' or ';
1195
+ }
1196
+ }
1197
+ return result;
1198
+ }
1199
+ function incompatibleSymbolMessage(symbolName, options) {
1200
+ var _a, _b, _c;
1201
+ let message = '';
1202
+ const data = options.data;
1203
+ if (((_a = options.scopes) === null || _a === void 0 ? void 0 : _a.length) > 0) {
1204
+ message += ` across these scopes: ${options.scopes.join(', ')}`;
1205
+ }
1206
+ if (options.isUnion) {
1207
+ message += ` in union`;
1208
+ }
1209
+ const actualTypeString = (_b = data === null || data === void 0 ? void 0 : data.actualType) === null || _b === void 0 ? void 0 : _b.toString();
1210
+ const expectedTypeString = (_c = data === null || data === void 0 ? void 0 : data.expectedType) === null || _c === void 0 ? void 0 : _c.toString();
1211
+ if (data && actualTypeString && expectedTypeString) {
1212
+ message += typeCompatibilityMessage(actualTypeString, expectedTypeString, data);
1213
+ }
1214
+ return message;
1215
+ }
1216
+ exports.incompatibleSymbolMessage = incompatibleSymbolMessage;
644
1217
  exports.DiagnosticCodeMap = {};
1218
+ exports.DiagnosticLegacyCodeMap = {};
645
1219
  exports.diagnosticCodes = [];
646
1220
  for (let key in exports.DiagnosticMessages) {
647
1221
  exports.diagnosticCodes.push(exports.DiagnosticMessages[key]().code);
1222
+ exports.diagnosticCodes.push(exports.DiagnosticMessages[key]().legacyCode);
648
1223
  exports.DiagnosticCodeMap[key] = exports.DiagnosticMessages[key]().code;
1224
+ exports.DiagnosticLegacyCodeMap[key] = exports.DiagnosticMessages[key]().legacyCode;
1225
+ }
1226
+ /**
1227
+ * Refines a diagnostic to its concrete `DiagnosticMessageType<K>` shape (including the typed `data`
1228
+ * payload) when its code matches `DiagnosticCodeMap[key]`.
1229
+ */
1230
+ function isDiagnosticOfType(diagnostic, key) {
1231
+ return diagnostic.code === exports.DiagnosticCodeMap[key];
649
1232
  }
1233
+ exports.isDiagnosticOfType = isDiagnosticOfType;
650
1234
  //# sourceMappingURL=DiagnosticMessages.js.map