brighterscript 1.0.0-alpha.40 → 1.0.0-alpha.42

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