@mirascript/constants 0.1.36 → 0.1.38

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.
@@ -1,734 +1,734 @@
1
1
  export declare class Config {
2
- private constructor();
3
- free(): void;
4
- [Symbol.dispose](): void;
5
- trivia: boolean;
6
- input_mode: InputMode;
7
- diagnostic_position_encoding: DiagnosticPositionEncoding;
8
- diagnostic_error: boolean;
9
- diagnostic_warning: boolean;
10
- diagnostic_info: boolean;
11
- diagnostic_hint: boolean;
12
- diagnostic_reference: boolean;
13
- diagnostic_tag: boolean;
14
- diagnostic_sourcemap: boolean;
2
+ private constructor();
3
+ free(): void;
4
+ [Symbol.dispose](): void;
5
+ diagnostic_error: boolean;
6
+ diagnostic_hint: boolean;
7
+ diagnostic_info: boolean;
8
+ diagnostic_position_encoding: DiagnosticPositionEncoding;
9
+ diagnostic_reference: boolean;
10
+ diagnostic_sourcemap: boolean;
11
+ diagnostic_tag: boolean;
12
+ diagnostic_warning: boolean;
13
+ input_mode: InputMode;
14
+ trivia: boolean;
15
15
  }
16
16
  /**
17
17
  * Diagnostic codes for MiraScript compiler and tools.
18
18
  */
19
19
  export enum DiagnosticCode {
20
- ErrorStart = 1000,
21
- InternalError = 1001,
22
- LexerError = 1002,
23
- ParserError = 1003,
24
- EmitterError = 1004,
25
- OptimizerError = 1005,
26
- Unimplemented = 1006,
27
- UnknownToken = 1007,
28
- UnexpectedToken = 1008,
29
- InvalidReservedKeyword = 1009,
30
- InvalidKeyword = 1010,
31
- InvalidNumberLiteralUnderscore = 1011,
32
- InvalidNumberLiteral = 1012,
33
- OverflowNumberLiteral = 1013,
34
- OverflowIntegerLiteral = 1014,
35
- InvalidOrdinalLiteral = 1015,
36
- UnterminatedString = 1016,
37
- InvalidEscapeSequence = 1017,
38
- InvalidHexEscapeSequence = 1018,
39
- InvalidUnicodeEscapeSequence = 1019,
40
- BadArraySpread = 1020,
41
- UnterminatedInterpolation = 1021,
42
- BadInterpolation = 1022,
43
- EmptyInterpolation = 1023,
44
- UnexpectedUnderscore = 1024,
45
- UnexpectedGlobal = 1025,
46
- MissingComma = 1026,
47
- MissingCloseBracket = 1027,
48
- MissingOpenBrace = 1028,
49
- MissingCloseBrace = 1029,
50
- MissingCloseParen = 1030,
51
- MissingSemicolon = 1031,
52
- MissingColon = 1032,
53
- MissingBindOperator = 1033,
54
- InvalidConstantName = 1034,
55
- MissingFunctionName = 1035,
56
- MissingOpenParenAfterExtension = 1036,
57
- MissingOpenParenAfterType = 1037,
58
- InvalidTypeCall = 1038,
59
- RecordLiteralInExtensionCaller = 1039,
60
- MissingCase = 1040,
61
- UnknownExpression = 1041,
62
- UnmatchedCloseBrace = 1042,
63
- UnmatchedCloseBracket = 1043,
64
- UnmatchedCloseParen = 1044,
65
- UnknownPattern = 1045,
66
- InvalidConstantLiteral = 1046,
67
- UnknownStatement = 1047,
68
- ExpressionExpected = 1048,
69
- PatternExpected = 1049,
70
- ExclamationInLiteralPattern = 1050,
71
- MutInRebindPattern = 1051,
72
- ConstantInBindPattern = 1052,
73
- MutInDiscardPattern = 1053,
74
- DiscardInSpreadPattern = 1054,
75
- SpreadDiscardInRecordPattern = 1055,
76
- MispositionedSpreadInRecordPattern = 1056,
77
- InterpolatedNameRecordPattern = 1057,
78
- BadOmitKeyRecordPattern = 1058,
79
- AmbiguousRangePattern = 1059,
80
- DuplicateSpreadPattern = 1060,
81
- MispositionedRestParameter = 1061,
82
- UndefinedVariableAssignment = 1062,
83
- ImmutableVariableAssignment = 1063,
84
- UninitializedVariable = 1064,
85
- DuplicateVariableDeclaration = 1065,
86
- UnexpectedBreak = 1066,
87
- UnexpectedContinue = 1067,
88
- MisuseOfGlobalKeyword = 1068,
89
- BadOmitKeyRecordExpression = 1069,
90
- UnassignableExpression = 1070,
91
- ErrorEnd = 1999,
92
- WarningStart = 2000,
93
- UnnecessaryParentheses = 2001,
94
- MisleadingNilVariable = 2002,
95
- UnnecessaryIrrefutablePattern = 2003,
96
- MatchExpressionHasNoCases = 2004,
97
- NonNumberInRange = 2005,
98
- NonNumberOrStringInComparison = 2006,
99
- NonNumberInArithmetic = 2007,
100
- NonBooleanInLogical = 2008,
101
- LiteralNotCallable = 2009,
102
- LiteralNotIndexable = 2010,
103
- GlobalVariableNotDeclared = 2011,
104
- WarningEnd = 2999,
105
- InfoStart = 3000,
106
- InfoEnd = 3999,
107
- HintStart = 4000,
108
- UnusedLocalVariable = 4001,
109
- UnusedLocalFunction = 4002,
110
- PreferLogicalOperatorAnd = 4003,
111
- PreferLogicalOperatorOr = 4004,
112
- PreferLogicalOperatorNot = 4005,
113
- PreferParenthesesForRecordLiteral = 4006,
114
- PreferIfExpression = 4007,
115
- PreferUppercaseConstant = 4008,
116
- HintEnd = 4999,
117
- ReferenceStart = 5000,
118
- VariableDeclaredHere = 5001,
119
- FunctionDeclaredHere = 5002,
120
- ParameterDeclaredHere = 5003,
121
- ParameterItDeclaredHere = 5004,
122
- ParameterRestDeclaredHere = 5005,
123
- ParameterSubPatternDeclaredHere = 5006,
124
- ReferenceEnd = 5999,
125
- TagStart = 10000,
126
- LocalConst = 10001,
127
- LocalImmutable = 10002,
128
- LocalMutable = 10003,
129
- LocalFunction = 10004,
130
- ParameterIt = 10005,
131
- ParameterImmutable = 10006,
132
- ParameterMutable = 10007,
133
- ParameterImmutableRest = 10008,
134
- ParameterMutableRest = 10009,
135
- ParameterPattern = 10010,
136
- ParameterRestPattern = 10011,
137
- ParameterSubPatternImmutable = 10012,
138
- ParameterSubPatternMutable = 10013,
139
- GlobalVariable = 10014,
140
- GlobalDynamicAccess = 10015,
141
- RecordFieldIdName = 10016,
142
- RecordFieldOrdinalName = 10017,
143
- RecordFieldStringName = 10018,
144
- UnnamedRecordField0 = 10019,
145
- UnnamedRecordField1 = 10020,
146
- UnnamedRecordField2 = 10021,
147
- UnnamedRecordField3 = 10022,
148
- UnnamedRecordField4 = 10023,
149
- UnnamedRecordField5 = 10024,
150
- UnnamedRecordField6 = 10025,
151
- UnnamedRecordField7 = 10026,
152
- UnnamedRecordField8 = 10027,
153
- UnnamedRecordField9 = 10028,
154
- UnnamedRecordFieldN = 10029,
155
- OmitNamedRecordField = 10030,
156
- FunctionCall = 10031,
157
- ExtensionCall = 10032,
158
- Scope = 10033,
159
- String = 10034,
160
- Interpolation = 10035,
161
- ForExpression = 10036,
162
- WhileExpression = 10037,
163
- LoopExpression = 10038,
164
- FnDeclaration = 10039,
165
- FnExpression = 10040,
166
- IfExpression = 10041,
167
- MatchExpression = 10042,
168
- TagEnd = 10999,
169
- TagRefStart = 11000,
170
- ReadLocal = 11001,
171
- ReadWriteLocal = 11002,
172
- WriteLocal = 11003,
173
- RedeclareLocal = 11004,
174
- Callable = 11005,
175
- ArgumentExtension = 11006,
176
- ArgumentStart = 11007,
177
- ArgumentEnd = 11008,
178
- ArgumentComma = 11009,
179
- ArgumentSpread = 11010,
180
- KeywordFor = 11011,
181
- KeywordIn = 11012,
182
- KeywordWhile = 11013,
183
- KeywordLoop = 11014,
184
- KeywordBreak = 11015,
185
- KeywordContinue = 11016,
186
- KeywordIf = 11017,
187
- KeywordElse = 11018,
188
- KeywordMatch = 11019,
189
- KeywordCase = 11020,
190
- KeywordFn = 11021,
191
- KeywordReturn = 11022,
192
- /**
193
- * Work with [DiagnosticCode::OmitNamedRecordField]
194
- */
195
- OmitNamedRecordFieldName = 11023,
196
- TagRefEnd = 11999,
197
- SourceMap = 12000,
20
+ ErrorStart = 1000,
21
+ InternalError = 1001,
22
+ LexerError = 1002,
23
+ ParserError = 1003,
24
+ EmitterError = 1004,
25
+ OptimizerError = 1005,
26
+ Unimplemented = 1006,
27
+ UnknownToken = 1007,
28
+ UnexpectedToken = 1008,
29
+ InvalidReservedKeyword = 1009,
30
+ InvalidKeyword = 1010,
31
+ InvalidNumberLiteralUnderscore = 1011,
32
+ InvalidNumberLiteral = 1012,
33
+ OverflowNumberLiteral = 1013,
34
+ OverflowIntegerLiteral = 1014,
35
+ InvalidOrdinalLiteral = 1015,
36
+ UnterminatedString = 1016,
37
+ InvalidEscapeSequence = 1017,
38
+ InvalidHexEscapeSequence = 1018,
39
+ InvalidUnicodeEscapeSequence = 1019,
40
+ BadArraySpread = 1020,
41
+ UnterminatedInterpolation = 1021,
42
+ BadInterpolation = 1022,
43
+ EmptyInterpolation = 1023,
44
+ UnexpectedUnderscore = 1024,
45
+ UnexpectedGlobal = 1025,
46
+ MissingComma = 1026,
47
+ MissingCloseBracket = 1027,
48
+ MissingOpenBrace = 1028,
49
+ MissingCloseBrace = 1029,
50
+ MissingCloseParen = 1030,
51
+ MissingSemicolon = 1031,
52
+ MissingColon = 1032,
53
+ MissingBindOperator = 1033,
54
+ InvalidConstantName = 1034,
55
+ MissingFunctionName = 1035,
56
+ MissingOpenParenAfterExtension = 1036,
57
+ MissingOpenParenAfterType = 1037,
58
+ InvalidTypeCall = 1038,
59
+ RecordLiteralInExtensionCaller = 1039,
60
+ MissingCase = 1040,
61
+ UnknownExpression = 1041,
62
+ UnmatchedCloseBrace = 1042,
63
+ UnmatchedCloseBracket = 1043,
64
+ UnmatchedCloseParen = 1044,
65
+ UnknownPattern = 1045,
66
+ InvalidConstantLiteral = 1046,
67
+ UnknownStatement = 1047,
68
+ ExpressionExpected = 1048,
69
+ PatternExpected = 1049,
70
+ ExclamationInLiteralPattern = 1050,
71
+ MutInRebindPattern = 1051,
72
+ ConstantInBindPattern = 1052,
73
+ MutInDiscardPattern = 1053,
74
+ DiscardInSpreadPattern = 1054,
75
+ SpreadDiscardInRecordPattern = 1055,
76
+ MispositionedSpreadInRecordPattern = 1056,
77
+ InterpolatedNameRecordPattern = 1057,
78
+ BadOmitKeyRecordPattern = 1058,
79
+ AmbiguousRangePattern = 1059,
80
+ DuplicateSpreadPattern = 1060,
81
+ MispositionedRestParameter = 1061,
82
+ UndefinedVariableAssignment = 1062,
83
+ ImmutableVariableAssignment = 1063,
84
+ UninitializedVariable = 1064,
85
+ DuplicateVariableDeclaration = 1065,
86
+ UnexpectedBreak = 1066,
87
+ UnexpectedContinue = 1067,
88
+ MisuseOfGlobalKeyword = 1068,
89
+ BadOmitKeyRecordExpression = 1069,
90
+ UnassignableExpression = 1070,
91
+ ErrorEnd = 1999,
92
+ WarningStart = 2000,
93
+ MisleadingNilVariable = 2001,
94
+ UnnecessaryIrrefutablePattern = 2002,
95
+ MatchExpressionHasNoCases = 2003,
96
+ NonNumberInRange = 2004,
97
+ NonNumberOrStringInComparison = 2005,
98
+ NonNumberInArithmetic = 2006,
99
+ NonBooleanInLogical = 2007,
100
+ LiteralNotCallable = 2008,
101
+ LiteralNotIndexable = 2009,
102
+ GlobalVariableNotDeclared = 2010,
103
+ WarningEnd = 2999,
104
+ InfoStart = 3000,
105
+ InfoEnd = 3999,
106
+ HintStart = 4000,
107
+ UnusedLocalVariable = 4001,
108
+ UnusedLocalFunction = 4002,
109
+ PreferLogicalOperatorAnd = 4003,
110
+ PreferLogicalOperatorOr = 4004,
111
+ PreferLogicalOperatorNot = 4005,
112
+ PreferParenthesesForRecordLiteral = 4006,
113
+ PreferIfExpression = 4007,
114
+ UnnecessaryParentheses = 4008,
115
+ PreferUppercaseConstant = 4009,
116
+ HintEnd = 4999,
117
+ ReferenceStart = 5000,
118
+ VariableDeclaredHere = 5001,
119
+ FunctionDeclaredHere = 5002,
120
+ ParameterDeclaredHere = 5003,
121
+ ParameterItDeclaredHere = 5004,
122
+ ParameterRestDeclaredHere = 5005,
123
+ ParameterSubPatternDeclaredHere = 5006,
124
+ ReferenceEnd = 5999,
125
+ TagStart = 10000,
126
+ LocalConst = 10001,
127
+ LocalImmutable = 10002,
128
+ LocalMutable = 10003,
129
+ LocalFunction = 10004,
130
+ ParameterIt = 10005,
131
+ ParameterImmutable = 10006,
132
+ ParameterMutable = 10007,
133
+ ParameterImmutableRest = 10008,
134
+ ParameterMutableRest = 10009,
135
+ ParameterPattern = 10010,
136
+ ParameterRestPattern = 10011,
137
+ ParameterSubPatternImmutable = 10012,
138
+ ParameterSubPatternMutable = 10013,
139
+ GlobalVariable = 10014,
140
+ GlobalDynamicAccess = 10015,
141
+ RecordFieldIdName = 10016,
142
+ RecordFieldOrdinalName = 10017,
143
+ RecordFieldStringName = 10018,
144
+ UnnamedRecordField0 = 10019,
145
+ UnnamedRecordField1 = 10020,
146
+ UnnamedRecordField2 = 10021,
147
+ UnnamedRecordField3 = 10022,
148
+ UnnamedRecordField4 = 10023,
149
+ UnnamedRecordField5 = 10024,
150
+ UnnamedRecordField6 = 10025,
151
+ UnnamedRecordField7 = 10026,
152
+ UnnamedRecordField8 = 10027,
153
+ UnnamedRecordField9 = 10028,
154
+ UnnamedRecordFieldN = 10029,
155
+ OmitNamedRecordField = 10030,
156
+ FunctionCall = 10031,
157
+ ExtensionCall = 10032,
158
+ Scope = 10033,
159
+ String = 10034,
160
+ Interpolation = 10035,
161
+ ForExpression = 10036,
162
+ WhileExpression = 10037,
163
+ LoopExpression = 10038,
164
+ FnDeclaration = 10039,
165
+ FnExpression = 10040,
166
+ IfExpression = 10041,
167
+ MatchExpression = 10042,
168
+ TagEnd = 10999,
169
+ TagRefStart = 11000,
170
+ ReadLocal = 11001,
171
+ ReadWriteLocal = 11002,
172
+ WriteLocal = 11003,
173
+ RedeclareLocal = 11004,
174
+ Callable = 11005,
175
+ ArgumentExtension = 11006,
176
+ ArgumentStart = 11007,
177
+ ArgumentEnd = 11008,
178
+ ArgumentComma = 11009,
179
+ ArgumentSpread = 11010,
180
+ KeywordFor = 11011,
181
+ KeywordIn = 11012,
182
+ KeywordWhile = 11013,
183
+ KeywordLoop = 11014,
184
+ KeywordBreak = 11015,
185
+ KeywordContinue = 11016,
186
+ KeywordIf = 11017,
187
+ KeywordElse = 11018,
188
+ KeywordMatch = 11019,
189
+ KeywordCase = 11020,
190
+ KeywordFn = 11021,
191
+ KeywordReturn = 11022,
192
+ /**
193
+ * Work with [DiagnosticCode::OmitNamedRecordField]
194
+ */
195
+ OmitNamedRecordFieldName = 11023,
196
+ TagRefEnd = 11999,
197
+ SourceMap = 12000,
198
198
  }
199
199
  /**
200
200
  * Encoding for counting positions in diagnostics.
201
201
  */
202
202
  export enum DiagnosticPositionEncoding {
203
- /**
204
- * Use the default encoding (UTF-8) and
205
- * 0-based indexing from the start of the file.
206
- * Do not convert positions to line-column format.
207
- */
208
- None = 0,
209
- /**
210
- * Convert positions to 1-based UTF-8 line-column format.
211
- */
212
- Utf8 = 1,
213
- /**
214
- * Convert positions to 1-based UTF-16 line-column format.
215
- */
216
- Utf16 = 2,
217
- /**
218
- * Convert positions to 1-based UTF-32 line-column format.
219
- */
220
- Utf32 = 3,
203
+ /**
204
+ * Use the default encoding (UTF-8) and
205
+ * 0-based indexing from the start of the file.
206
+ * Do not convert positions to line-column format.
207
+ */
208
+ None = 0,
209
+ /**
210
+ * Convert positions to 1-based UTF-8 line-column format.
211
+ */
212
+ Utf8 = 1,
213
+ /**
214
+ * Convert positions to 1-based UTF-16 line-column format.
215
+ */
216
+ Utf16 = 2,
217
+ /**
218
+ * Convert positions to 1-based UTF-32 line-column format.
219
+ */
220
+ Utf32 = 3,
221
221
  }
222
222
  /**
223
223
  * Mode for reading input.
224
224
  */
225
225
  export enum InputMode {
226
- Script = 0,
227
- Template = 1,
226
+ Script = 0,
227
+ Template = 1,
228
228
  }
229
229
  /**
230
230
  * MiraScript OpCodes
231
231
  */
232
232
  export enum OpCode {
233
- /**
234
- * No operation
235
- */
236
- Noop = 0,
237
- /**
238
- * ADD %ret %1 %2\
239
- * %ret = %1 + %2
240
- */
241
- Add = 1,
242
- /**
243
- * SUB %ret %1 %2\
244
- * %ret = %1 - %2
245
- */
246
- Sub = 2,
247
- /**
248
- * MUL %ret %1 %2\
249
- * %ret = %1 * %2
250
- */
251
- Mul = 3,
252
- /**
253
- * DIV %ret %1 %2\
254
- * %ret = %1 / %2
255
- */
256
- Div = 4,
257
- /**
258
- * MOD %ret %1 %2\
259
- * %ret = %1 % %2
260
- */
261
- Mod = 5,
262
- /**
263
- * EXP %ret %1 %2\
264
- * %ret = %1 ^ %2
265
- */
266
- Pow = 6,
267
- /**
268
- * POS %ret %1\
269
- * %ret = +%1
270
- */
271
- Pos = 7,
272
- /**
273
- * NEG %ret %1\
274
- * %ret = -%1
275
- */
276
- Neg = 8,
277
- /**
278
- * NOT %ret %1\
279
- * %ret = !%1
280
- */
281
- Not = 9,
282
- /**
283
- * PLUS %ret %1\
284
- * %ret = +%1
285
- */
286
- Plus = 10,
287
- /**
288
- * EQ %ret %1 %2\
289
- * %ret = %1 == %2
290
- */
291
- Eq = 11,
292
- /**
293
- * NEQ %ret %1 %2\
294
- * %ret = %1 != %2
295
- */
296
- Neq = 12,
297
- /**
298
- * LT %ret %1 %2\
299
- * %ret = %1 < %2
300
- */
301
- Lt = 13,
302
- /**
303
- * LTE %ret %1 %2\
304
- * %ret = %1 <= %2
305
- */
306
- Lte = 14,
307
- /**
308
- * GT %ret %1 %2\
309
- * %ret = %1 > %2
310
- */
311
- Gt = 15,
312
- /**
313
- * GTE %ret %1 %2\
314
- * %ret = %1 >= %2
315
- */
316
- Gte = 16,
317
- /**
318
- * AEQ %ret %1 %2\
319
- * %ret = %1 =~ %2
320
- */
321
- Aeq = 17,
322
- /**
323
- * NAEQ %ret %1 %2\
324
- * %ret = %1 !~ %2
325
- */
326
- Naeq = 18,
327
- /**
328
- * SAME %ret %1 %2\
329
- * %ret = %1 === %2 // Same value zero
330
- */
331
- Same = 19,
332
- /**
333
- * Nsame %ret %1 %2\
334
- * %ret = %1 !== %2
335
- */
336
- Nsame = 20,
337
- /**
338
- * IN %ret %1 %2\
339
- * %ret = %1 in %2
340
- */
341
- In = 21,
342
- /**
343
- * IN_GLOBAL %ret %1 %2\
344
- * %ret = %1 in global
345
- */
346
- InGlobal = 22,
347
- /**
348
- * CONCAT %ret `n` %1 %2 ... %n\
349
- * %ret = %1 .. %2 .. ... .. %n
350
- */
351
- Concat = 23,
352
- /**
353
- * FORMAT %ret %1 `index`\
354
- * %ret = format(%1, CONSTANTS\[index])
355
- */
356
- Format = 24,
357
- /**
358
- * AND %ret %1 %2\
359
- * %ret = %1 && %2
360
- */
361
- And = 25,
362
- /**
363
- * OR %ret %1 %2\
364
- * %ret = %1 || %2
365
- */
366
- Or = 26,
367
- /**
368
- * ASSERT_INIT %v\
369
- * assert(%v != uninitialized)
370
- */
371
- AssertInit = 27,
372
- /**
373
- * ASSERT_NON_NIL %v\
374
- * assert(%v != nil)
375
- */
376
- AssertNonNil = 28,
377
- /**
378
- * TYPE %ret %1\
379
- * %ret = type(%1)
380
- */
381
- Type = 29,
382
- /**
383
- * TO_BOOLEAN %ret %1\
384
- * %ret = boolean(%1)
385
- */
386
- ToBoolean = 30,
387
- /**
388
- * TO_NUMBER %ret %1\
389
- * %ret = number(%1)
390
- */
391
- ToNumber = 31,
392
- /**
393
- * TO_STRING %ret %1\
394
- * %ret = string(%1)
395
- */
396
- ToString = 32,
397
- /**
398
- * IS_BOOLEAN %ret %1\
399
- * %ret = type(%1) == "boolean"
400
- */
401
- IsBoolean = 33,
402
- /**
403
- * IS_NUMBER %ret %1\
404
- * %ret = type(%1) == "number"
405
- */
406
- IsNumber = 34,
407
- /**
408
- * IS_STRING %ret %1\
409
- * %ret = type(%1) == "string"
410
- */
411
- IsString = 35,
412
- /**
413
- * IS_RECORD %ret %1\
414
- * %ret = type(%1) == "record"
415
- */
416
- IsRecord = 36,
417
- /**
418
- * IS_ARRAY %ret %1\
419
- * %ret = type(%1) == "array"
420
- */
421
- IsArray = 37,
422
- /**
423
- * CONSTANT %reg `index`\
424
- * %reg = CONSTANTS\[index]
425
- */
426
- Constant = 38,
427
- /**
428
- * UNINIT %reg
429
- * %reg = uninitialized
430
- */
431
- Uninit = 39,
432
- /**
433
- * ASSIGN %ret %1\
434
- * %ret = %1
435
- */
436
- Assign = 40,
437
- /**
438
- * SWAP %1 %2\
439
- * (%1, %2) = (%2, %1)
440
- */
441
- Swap = 41,
442
- /**
443
- * GET_UPVALUE %ret `level` %%up\
444
- * %ret = UPVALUES\[level]\[%%up]
445
- */
446
- GetUpvalue = 42,
447
- /**
448
- * SET_UPVALUE %value `level` %%up \
449
- * UPVALUES\[level]\[%%up] = %value
450
- */
451
- SetUpvalue = 43,
452
- /**
453
- * GET_GLOBAL %ret `name` \
454
- * %ret = GLOBALS\[CONSTANTS\[name]]
455
- */
456
- GetGlobal = 44,
457
- /**
458
- * GET_GLOBAL_DYN %ret %name \
459
- * %ret = GLOBALS\[%name]
460
- */
461
- GetGlobalDyn = 45,
462
- /**
463
- * RECORD %ret\
464
- * %ret = (
465
- */
466
- Record = 46,
467
- /**
468
- * FIELD `name` %field\
469
- * \[CONSTANTS\[name]]: %field,
470
- */
471
- Field = 47,
472
- /**
473
- * FIELD_DYN %name %field\
474
- * \[%name]: %field,
475
- */
476
- FieldDyn = 48,
477
- /**
478
- * FIELD_INDEX `index` %field\
479
- * \[index]: %field,
480
- */
481
- FieldIndex = 49,
482
- /**
483
- * FIELD_OPT `name` %field\
484
- * \[CONSTANTS\[name]]?: %field,
485
- */
486
- FieldOpt = 50,
487
- /**
488
- * FIELD_OPT_DYN %name %field\
489
- * \[%name]?: %field,
490
- */
491
- FieldOptDyn = 51,
492
- /**
493
- * FIELD_OPT_INDEX `index` %field\
494
- * \[index]?: %field,
495
- */
496
- FieldOptIndex = 52,
497
- /**
498
- * PICK %ret %var `n` `key_1` `key_2` ... `key_n`\
499
- * %ret = %var pick keys CONSTANTS\[key_1], CONSTANTS\[key_2], ..., CONSTANTS\[key_n]
500
- */
501
- Pick = 53,
502
- /**
503
- * OMIT %ret %var `n` `key_1` `key_2` ... `key_n`\
504
- * %ret = %var omit keys CONSTANTS\[key_1], CONSTANTS\[key_2], ..., CONSTANTS\[key_n]
505
- */
506
- Omit = 54,
507
- /**
508
- * ARRAY %ret\
509
- * %ret = \[
510
- */
511
- Array = 55,
512
- /**
513
- * ITEM %item\
514
- * %item,
515
- */
516
- Item = 56,
517
- /**
518
- * ITEM_RANGE `start` `end`\
519
- * `start`..`end`,
520
- */
521
- ItemRange = 57,
522
- /**
523
- * ITEM_RANGE_DYN %start %end\
524
- * %start..%end,
525
- */
526
- ItemRangeDyn = 58,
527
- /**
528
- * ITEM_RANGE_EXCLUSIVE_DYN %start %end\
529
- * %start..<%end,
530
- */
531
- ItemRangeExclusiveDyn = 59,
532
- /**
533
- * SPREAD %var\
534
- * ..%var,
535
- */
536
- Spread = 60,
537
- /**
538
- * FREEZE\
539
- * ) for record or ] for array
540
- */
541
- Freeze = 61,
542
- /**
543
- * HAS %ret %var `key`\
544
- * %ret = initialized(%var\[CONSTANTS\[key]])
545
- */
546
- Has = 62,
547
- /**
548
- * HAS_DYN %ret %var %key\
549
- * %ret = initialized(%var\[%key])
550
- */
551
- HasDyn = 63,
552
- /**
553
- * HAS_INDEX %ret %var `index`\
554
- * %ret = initialized(%var\[index])
555
- */
556
- HasIndex = 64,
557
- /**
558
- * GET %ret %var `key`\
559
- * %ret = %var\[CONSTANTS\[key]] ?? nil
560
- */
561
- Get = 65,
562
- /**
563
- * GET_DYN %ret %var %key\
564
- * %ret = %var\[%key] ?? nil
565
- */
566
- GetDyn = 66,
567
- /**
568
- * GET_INDEX %ret %var `index`\
569
- * %ret = %var\[index] ?? nil
570
- */
571
- GetIndex = 67,
572
- /**
573
- * SET %value %var `key`\
574
- * %var\[CONSTANTS\[key]] = %value
575
- */
576
- Set = 68,
577
- /**
578
- * SET_DYN %value %var %key\
579
- * %var\[%key] = %value
580
- */
581
- SetDyn = 69,
582
- /**
583
- * SET_INDEX %value %var `index`\
584
- * %var\[index] = %value
585
- */
586
- SetIndex = 70,
587
- /**
588
- * SLICE %ret %var `start` `end`\
589
- * %ret = %var\[start..end]
590
- */
591
- Slice = 71,
592
- /**
593
- * SLICE_START %ret %var `end`\
594
- * %ret = %var\[..end]
595
- */
596
- SliceStart = 72,
597
- /**
598
- * SLICE_END %ret %var `start`\
599
- * %ret = %var\[start..]
600
- */
601
- SliceEnd = 73,
602
- /**
603
- * SLICE_DYN %ret %var %start %end\
604
- * %ret = %var\[%start..%end]
605
- */
606
- SliceDyn = 74,
607
- /**
608
- * SLICE_EXCLUSIVE_DYN %ret %var %start %end\
609
- * %ret = %var\[%start..<%end]
610
- */
611
- SliceExclusiveDyn = 75,
612
- /**
613
- * LENGTH %ret %var\
614
- * %ret = $Length(%var)
615
- */
616
- Length = 76,
617
- /**
618
- * LOOP `regn`\
619
- * loop { let %1, .. ,%regn;
620
- */
621
- Loop = 77,
622
- /**
623
- * LOOP_FOR `regn` %iterable\
624
- * for %1 in %iterable { let %2, .. ,%regn;
625
- */
626
- LoopFor = 78,
627
- /**
628
- * LOOP_RANGE `regn` %start %end\
629
- * for %1 in %start..%end { let %2, .. ,%regn;
630
- */
631
- LoopRange = 79,
632
- /**
633
- * LOOP_RANGE_EXCLUSIVE `regn` %start %end\
634
- * for %1 in %start..<%end { let %2, .. ,%regn;
635
- */
636
- LoopRangeExclusive = 80,
637
- /**
638
- * LOOP_END\
639
- * }
640
- */
641
- LoopEnd = 81,
642
- /**
643
- * BREAK\
644
- * break;
645
- */
646
- Break = 82,
647
- /**
648
- * CONTINUE\
649
- * continue;
650
- */
651
- Continue = 83,
652
- /**
653
- * IF %cond\
654
- * if (%cond) {
655
- */
656
- If = 84,
657
- /**
658
- * IF_NOT %cond\
659
- * if (!%cond) {
660
- */
661
- IfNot = 85,
662
- /**
663
- * IF_INIT %var\
664
- * if (initialized(%var)) {
665
- */
666
- IfInit = 86,
667
- /**
668
- * IF_NOT_INIT %var\
669
- * if (!initialized(%var)) {
670
- */
671
- IfNotInit = 87,
672
- /**
673
- * IF_NIL %var\
674
- * if (%var == nil) {
675
- */
676
- IfNil = 88,
677
- /**
678
- * IF_NOT_NIL %var\
679
- * if (%var != nil) {
680
- */
681
- IfNotNil = 89,
682
- /**
683
- * ELSE\
684
- * } else {
685
- */
686
- Else = 90,
687
- /**
688
- * EL_IF IF*\
689
- * } else if *** {\
690
- * This instruction must be followed by an `IF*` instruction\
691
- */
692
- ElIf = 91,
693
- /**
694
- * IF_END\
695
- * }
696
- */
697
- IfEnd = 92,
698
- /**
699
- * FUNC %f `argn` `regn`\
700
- * %f = (%1, %2, ... , %argn) => { let %argn+1, ... , %regn;
701
- */
702
- Func = 93,
703
- /**
704
- * FUNC_VARG %f `argn` `regn`\
705
- * %f = (%1, %2, ... , %argn-1, ...%argn) => { let %argn+1, ... , %regn;
706
- */
707
- FuncVarg = 94,
708
- /**
709
- * FUNC_END\
710
- * }
711
- */
712
- FuncEnd = 95,
713
- /**
714
- * RETURN %value\
715
- * return %value;
716
- */
717
- Return = 96,
718
- /**
719
- * CALL %ret `f` `argn` %1 %2 ... %argn `spread_n` `spread_arg_a` ...\
720
- * %ret = GLOBAL[CONSTANTS[f]](%1, %2, ... , %argn);
721
- *
722
- * If spread_arg_a is present, arg at that index will be spread
723
- */
724
- Call = 97,
725
- /**
726
- * CALL_DYN %ret %f `argn` %1 %2 ... %argn `spread_n` `spread_arg_a` ...\
727
- * %ret = %f(%1, %2, ... , %argn);
728
- *
729
- * If spread_arg_a is present, arg at that index will be spread
730
- */
731
- CallDyn = 98,
233
+ /**
234
+ * No operation
235
+ */
236
+ Noop = 0,
237
+ /**
238
+ * ADD %ret %1 %2\
239
+ * %ret = %1 + %2
240
+ */
241
+ Add = 1,
242
+ /**
243
+ * SUB %ret %1 %2\
244
+ * %ret = %1 - %2
245
+ */
246
+ Sub = 2,
247
+ /**
248
+ * MUL %ret %1 %2\
249
+ * %ret = %1 * %2
250
+ */
251
+ Mul = 3,
252
+ /**
253
+ * DIV %ret %1 %2\
254
+ * %ret = %1 / %2
255
+ */
256
+ Div = 4,
257
+ /**
258
+ * MOD %ret %1 %2\
259
+ * %ret = %1 % %2
260
+ */
261
+ Mod = 5,
262
+ /**
263
+ * EXP %ret %1 %2\
264
+ * %ret = %1 ^ %2
265
+ */
266
+ Pow = 6,
267
+ /**
268
+ * POS %ret %1\
269
+ * %ret = +%1
270
+ */
271
+ Pos = 7,
272
+ /**
273
+ * NEG %ret %1\
274
+ * %ret = -%1
275
+ */
276
+ Neg = 8,
277
+ /**
278
+ * NOT %ret %1\
279
+ * %ret = !%1
280
+ */
281
+ Not = 9,
282
+ /**
283
+ * PLUS %ret %1\
284
+ * %ret = +%1
285
+ */
286
+ Plus = 10,
287
+ /**
288
+ * EQ %ret %1 %2\
289
+ * %ret = %1 == %2
290
+ */
291
+ Eq = 11,
292
+ /**
293
+ * NEQ %ret %1 %2\
294
+ * %ret = %1 != %2
295
+ */
296
+ Neq = 12,
297
+ /**
298
+ * LT %ret %1 %2\
299
+ * %ret = %1 < %2
300
+ */
301
+ Lt = 13,
302
+ /**
303
+ * LTE %ret %1 %2\
304
+ * %ret = %1 <= %2
305
+ */
306
+ Lte = 14,
307
+ /**
308
+ * GT %ret %1 %2\
309
+ * %ret = %1 > %2
310
+ */
311
+ Gt = 15,
312
+ /**
313
+ * GTE %ret %1 %2\
314
+ * %ret = %1 >= %2
315
+ */
316
+ Gte = 16,
317
+ /**
318
+ * AEQ %ret %1 %2\
319
+ * %ret = %1 =~ %2
320
+ */
321
+ Aeq = 17,
322
+ /**
323
+ * NAEQ %ret %1 %2\
324
+ * %ret = %1 !~ %2
325
+ */
326
+ Naeq = 18,
327
+ /**
328
+ * SAME %ret %1 %2\
329
+ * %ret = %1 === %2 // Same value zero
330
+ */
331
+ Same = 19,
332
+ /**
333
+ * Nsame %ret %1 %2\
334
+ * %ret = %1 !== %2
335
+ */
336
+ Nsame = 20,
337
+ /**
338
+ * IN %ret %1 %2\
339
+ * %ret = %1 in %2
340
+ */
341
+ In = 21,
342
+ /**
343
+ * IN_GLOBAL %ret %1 %2\
344
+ * %ret = %1 in global
345
+ */
346
+ InGlobal = 22,
347
+ /**
348
+ * CONCAT %ret `n` %1 %2 ... %n\
349
+ * %ret = %1 .. %2 .. ... .. %n
350
+ */
351
+ Concat = 23,
352
+ /**
353
+ * FORMAT %ret %1 `index`\
354
+ * %ret = format(%1, CONSTANTS\[index])
355
+ */
356
+ Format = 24,
357
+ /**
358
+ * AND %ret %1 %2\
359
+ * %ret = %1 && %2
360
+ */
361
+ And = 25,
362
+ /**
363
+ * OR %ret %1 %2\
364
+ * %ret = %1 || %2
365
+ */
366
+ Or = 26,
367
+ /**
368
+ * ASSERT_INIT %v\
369
+ * assert(%v != uninitialized)
370
+ */
371
+ AssertInit = 27,
372
+ /**
373
+ * ASSERT_NON_NIL %v\
374
+ * assert(%v != nil)
375
+ */
376
+ AssertNonNil = 28,
377
+ /**
378
+ * TYPE %ret %1\
379
+ * %ret = type(%1)
380
+ */
381
+ Type = 29,
382
+ /**
383
+ * TO_BOOLEAN %ret %1\
384
+ * %ret = boolean(%1)
385
+ */
386
+ ToBoolean = 30,
387
+ /**
388
+ * TO_NUMBER %ret %1\
389
+ * %ret = number(%1)
390
+ */
391
+ ToNumber = 31,
392
+ /**
393
+ * TO_STRING %ret %1\
394
+ * %ret = string(%1)
395
+ */
396
+ ToString = 32,
397
+ /**
398
+ * IS_BOOLEAN %ret %1\
399
+ * %ret = type(%1) == "boolean"
400
+ */
401
+ IsBoolean = 33,
402
+ /**
403
+ * IS_NUMBER %ret %1\
404
+ * %ret = type(%1) == "number"
405
+ */
406
+ IsNumber = 34,
407
+ /**
408
+ * IS_STRING %ret %1\
409
+ * %ret = type(%1) == "string"
410
+ */
411
+ IsString = 35,
412
+ /**
413
+ * IS_RECORD %ret %1\
414
+ * %ret = type(%1) == "record"
415
+ */
416
+ IsRecord = 36,
417
+ /**
418
+ * IS_ARRAY %ret %1\
419
+ * %ret = type(%1) == "array"
420
+ */
421
+ IsArray = 37,
422
+ /**
423
+ * CONSTANT %reg `index`\
424
+ * %reg = CONSTANTS\[index]
425
+ */
426
+ Constant = 38,
427
+ /**
428
+ * UNINIT %reg
429
+ * %reg = uninitialized
430
+ */
431
+ Uninit = 39,
432
+ /**
433
+ * ASSIGN %ret %1\
434
+ * %ret = %1
435
+ */
436
+ Assign = 40,
437
+ /**
438
+ * SWAP %1 %2\
439
+ * (%1, %2) = (%2, %1)
440
+ */
441
+ Swap = 41,
442
+ /**
443
+ * GET_UPVALUE %ret `level` %%up\
444
+ * %ret = UPVALUES\[level]\[%%up]
445
+ */
446
+ GetUpvalue = 42,
447
+ /**
448
+ * SET_UPVALUE %value `level` %%up \
449
+ * UPVALUES\[level]\[%%up] = %value
450
+ */
451
+ SetUpvalue = 43,
452
+ /**
453
+ * GET_GLOBAL %ret `name` \
454
+ * %ret = GLOBALS\[CONSTANTS\[name]]
455
+ */
456
+ GetGlobal = 44,
457
+ /**
458
+ * GET_GLOBAL_DYN %ret %name \
459
+ * %ret = GLOBALS\[%name]
460
+ */
461
+ GetGlobalDyn = 45,
462
+ /**
463
+ * RECORD %ret\
464
+ * %ret = (
465
+ */
466
+ Record = 46,
467
+ /**
468
+ * FIELD `name` %field\
469
+ * \[CONSTANTS\[name]]: %field,
470
+ */
471
+ Field = 47,
472
+ /**
473
+ * FIELD_DYN %name %field\
474
+ * \[%name]: %field,
475
+ */
476
+ FieldDyn = 48,
477
+ /**
478
+ * FIELD_INDEX `index` %field\
479
+ * \[index]: %field,
480
+ */
481
+ FieldIndex = 49,
482
+ /**
483
+ * FIELD_OPT `name` %field\
484
+ * \[CONSTANTS\[name]]?: %field,
485
+ */
486
+ FieldOpt = 50,
487
+ /**
488
+ * FIELD_OPT_DYN %name %field\
489
+ * \[%name]?: %field,
490
+ */
491
+ FieldOptDyn = 51,
492
+ /**
493
+ * FIELD_OPT_INDEX `index` %field\
494
+ * \[index]?: %field,
495
+ */
496
+ FieldOptIndex = 52,
497
+ /**
498
+ * PICK %ret %var `n` `key_1` `key_2` ... `key_n`\
499
+ * %ret = %var pick keys CONSTANTS\[key_1], CONSTANTS\[key_2], ..., CONSTANTS\[key_n]
500
+ */
501
+ Pick = 53,
502
+ /**
503
+ * OMIT %ret %var `n` `key_1` `key_2` ... `key_n`\
504
+ * %ret = %var omit keys CONSTANTS\[key_1], CONSTANTS\[key_2], ..., CONSTANTS\[key_n]
505
+ */
506
+ Omit = 54,
507
+ /**
508
+ * ARRAY %ret\
509
+ * %ret = \[
510
+ */
511
+ Array = 55,
512
+ /**
513
+ * ITEM %item\
514
+ * %item,
515
+ */
516
+ Item = 56,
517
+ /**
518
+ * ITEM_RANGE `start` `end`\
519
+ * `start`..`end`,
520
+ */
521
+ ItemRange = 57,
522
+ /**
523
+ * ITEM_RANGE_DYN %start %end\
524
+ * %start..%end,
525
+ */
526
+ ItemRangeDyn = 58,
527
+ /**
528
+ * ITEM_RANGE_EXCLUSIVE_DYN %start %end\
529
+ * %start..<%end,
530
+ */
531
+ ItemRangeExclusiveDyn = 59,
532
+ /**
533
+ * SPREAD %var\
534
+ * ..%var,
535
+ */
536
+ Spread = 60,
537
+ /**
538
+ * FREEZE\
539
+ * ) for record or ] for array
540
+ */
541
+ Freeze = 61,
542
+ /**
543
+ * HAS %ret %var `key`\
544
+ * %ret = initialized(%var\[CONSTANTS\[key]])
545
+ */
546
+ Has = 62,
547
+ /**
548
+ * HAS_DYN %ret %var %key\
549
+ * %ret = initialized(%var\[%key])
550
+ */
551
+ HasDyn = 63,
552
+ /**
553
+ * HAS_INDEX %ret %var `index`\
554
+ * %ret = initialized(%var\[index])
555
+ */
556
+ HasIndex = 64,
557
+ /**
558
+ * GET %ret %var `key`\
559
+ * %ret = %var\[CONSTANTS\[key]] ?? nil
560
+ */
561
+ Get = 65,
562
+ /**
563
+ * GET_DYN %ret %var %key\
564
+ * %ret = %var\[%key] ?? nil
565
+ */
566
+ GetDyn = 66,
567
+ /**
568
+ * GET_INDEX %ret %var `index`\
569
+ * %ret = %var\[index] ?? nil
570
+ */
571
+ GetIndex = 67,
572
+ /**
573
+ * SET %value %var `key`\
574
+ * %var\[CONSTANTS\[key]] = %value
575
+ */
576
+ Set = 68,
577
+ /**
578
+ * SET_DYN %value %var %key\
579
+ * %var\[%key] = %value
580
+ */
581
+ SetDyn = 69,
582
+ /**
583
+ * SET_INDEX %value %var `index`\
584
+ * %var\[index] = %value
585
+ */
586
+ SetIndex = 70,
587
+ /**
588
+ * SLICE %ret %var `start` `end`\
589
+ * %ret = %var\[start..end]
590
+ */
591
+ Slice = 71,
592
+ /**
593
+ * SLICE_START %ret %var `end`\
594
+ * %ret = %var\[..end]
595
+ */
596
+ SliceStart = 72,
597
+ /**
598
+ * SLICE_END %ret %var `start`\
599
+ * %ret = %var\[start..]
600
+ */
601
+ SliceEnd = 73,
602
+ /**
603
+ * SLICE_DYN %ret %var %start %end\
604
+ * %ret = %var\[%start..%end]
605
+ */
606
+ SliceDyn = 74,
607
+ /**
608
+ * SLICE_EXCLUSIVE_DYN %ret %var %start %end\
609
+ * %ret = %var\[%start..<%end]
610
+ */
611
+ SliceExclusiveDyn = 75,
612
+ /**
613
+ * LENGTH %ret %var\
614
+ * %ret = $Length(%var)
615
+ */
616
+ Length = 76,
617
+ /**
618
+ * LOOP `regn`\
619
+ * loop { let %1, .. ,%regn;
620
+ */
621
+ Loop = 77,
622
+ /**
623
+ * LOOP_FOR `regn` %iterable\
624
+ * for %1 in %iterable { let %2, .. ,%regn;
625
+ */
626
+ LoopFor = 78,
627
+ /**
628
+ * LOOP_RANGE `regn` %start %end\
629
+ * for %1 in %start..%end { let %2, .. ,%regn;
630
+ */
631
+ LoopRange = 79,
632
+ /**
633
+ * LOOP_RANGE_EXCLUSIVE `regn` %start %end\
634
+ * for %1 in %start..<%end { let %2, .. ,%regn;
635
+ */
636
+ LoopRangeExclusive = 80,
637
+ /**
638
+ * LOOP_END\
639
+ * }
640
+ */
641
+ LoopEnd = 81,
642
+ /**
643
+ * BREAK\
644
+ * break;
645
+ */
646
+ Break = 82,
647
+ /**
648
+ * CONTINUE\
649
+ * continue;
650
+ */
651
+ Continue = 83,
652
+ /**
653
+ * IF %cond\
654
+ * if (%cond) {
655
+ */
656
+ If = 84,
657
+ /**
658
+ * IF_NOT %cond\
659
+ * if (!%cond) {
660
+ */
661
+ IfNot = 85,
662
+ /**
663
+ * IF_INIT %var\
664
+ * if (initialized(%var)) {
665
+ */
666
+ IfInit = 86,
667
+ /**
668
+ * IF_NOT_INIT %var\
669
+ * if (!initialized(%var)) {
670
+ */
671
+ IfNotInit = 87,
672
+ /**
673
+ * IF_NIL %var\
674
+ * if (%var == nil) {
675
+ */
676
+ IfNil = 88,
677
+ /**
678
+ * IF_NOT_NIL %var\
679
+ * if (%var != nil) {
680
+ */
681
+ IfNotNil = 89,
682
+ /**
683
+ * ELSE\
684
+ * } else {
685
+ */
686
+ Else = 90,
687
+ /**
688
+ * EL_IF IF*\
689
+ * } else if *** {\
690
+ * This instruction must be followed by an `IF*` instruction\
691
+ */
692
+ ElIf = 91,
693
+ /**
694
+ * IF_END\
695
+ * }
696
+ */
697
+ IfEnd = 92,
698
+ /**
699
+ * FUNC %f `argn` `regn`\
700
+ * %f = (%1, %2, ... , %argn) => { let %argn+1, ... , %regn;
701
+ */
702
+ Func = 93,
703
+ /**
704
+ * FUNC_VARG %f `argn` `regn`\
705
+ * %f = (%1, %2, ... , %argn-1, ...%argn) => { let %argn+1, ... , %regn;
706
+ */
707
+ FuncVarg = 94,
708
+ /**
709
+ * FUNC_END\
710
+ * }
711
+ */
712
+ FuncEnd = 95,
713
+ /**
714
+ * RETURN %value\
715
+ * return %value;
716
+ */
717
+ Return = 96,
718
+ /**
719
+ * CALL %ret `f` `argn` %1 %2 ... %argn `spread_n` `spread_arg_a` ...\
720
+ * %ret = GLOBAL[CONSTANTS[f]](%1, %2, ... , %argn);
721
+ *
722
+ * If spread_arg_a is present, arg at that index will be spread
723
+ */
724
+ Call = 97,
725
+ /**
726
+ * CALL_DYN %ret %f `argn` %1 %2 ... %argn `spread_n` `spread_arg_a` ...\
727
+ * %ret = %f(%1, %2, ... , %argn);
728
+ *
729
+ * If spread_arg_a is present, arg at that index will be spread
730
+ */
731
+ CallDyn = 98,
732
732
  }
733
733
  /** Diagnostic messages for MiraScript compiler and tools. */
734
734
  export const DIAGNOSTIC_MESSAGES: Readonly<Partial<Record<DiagnosticCode, string>>> = Object.freeze({
@@ -802,17 +802,16 @@ export const DIAGNOSTIC_MESSAGES: Readonly<Partial<Record<DiagnosticCode, string
802
802
  "1068": "`global` keyword can only be used as `global.<name>`, `global[<name>]`, or on the right-hand side of the `in` operator",
803
803
  "1069": "Cannot infer key from the expression",
804
804
  "1070": "Can only assign to a variable or a field access",
805
- "2001": "Unnecessary parentheses; consider removing them",
806
- "2002": "Either use `global.$0` explicitly or `nil` if you want to use the nil value",
807
- "2003": "This pattern in a irrefutable matching is unnecessary; consider removing it or using in an `is` expression instead",
808
- "2004": "This `match` expression has no cases; it will never match any value",
809
- "2005": "Non-number literal cannot be used in range",
810
- "2006": "Non-number-or-string literal cannot be used in comparison expression",
811
- "2007": "Non-number literal cannot be used in arithmetic expression",
812
- "2008": "Non-boolean literal cannot be used in logical expression",
813
- "2009": "Literal cannot be called as a function",
814
- "2010": "Literal cannot be accessed as a record or array",
815
- "2011": "Global variable `$0` is not declared",
805
+ "2001": "Either use `global.$0` explicitly or `nil` if you want to use the nil value",
806
+ "2002": "This pattern in a irrefutable matching is unnecessary; consider removing it or using in an `is` expression instead",
807
+ "2003": "This `match` expression has no cases; it will never match any value",
808
+ "2004": "Non-number literal cannot be used in range",
809
+ "2005": "Non-number-or-string literal cannot be used in comparison expression",
810
+ "2006": "Non-number literal cannot be used in arithmetic expression",
811
+ "2007": "Non-boolean literal cannot be used in logical expression",
812
+ "2008": "Literal cannot be called as a function",
813
+ "2009": "Literal cannot be accessed as a record or array",
814
+ "2010": "Global variable `$0` is not declared",
816
815
  "4001": "Local variable is unused; consider removing it or use `_` to ignore it",
817
816
  "4002": "Local function is unused; consider removing it",
818
817
  "4003": "Prefer `&&` over `and` for logical operations",
@@ -820,7 +819,8 @@ export const DIAGNOSTIC_MESSAGES: Readonly<Partial<Record<DiagnosticCode, string
820
819
  "4005": "Prefer `!` over `not` for logical operations",
821
820
  "4006": "Prefer `()` over `{}` for record literal declaration",
822
821
  "4007": "Prefer if expression over conditional expression",
823
- "4008": "Prefer uppercase for constant $0",
822
+ "4008": "Unnecessary parentheses; consider removing them",
823
+ "4009": "Prefer uppercase for constant $0",
824
824
  "5001": "...declared here",
825
825
  "5002": "...declared here",
826
826
  "5003": "...declared as a parameter here",