@hydranium/core 1.0.0-next.76 → 1.0.0-next.79
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.
- package/lib/langium/transfer/transfer-encoder.d.ts +20 -8
- package/lib/langium/transfer/transfer-encoder.d.ts.map +1 -1
- package/lib/langium/transfer/transfer-encoder.js +20 -4
- package/lib/langium/transfer/transfer-encoder.js.map +1 -1
- package/lib/langium/validation/document-validator.d.ts +156 -17
- package/lib/langium/validation/document-validator.d.ts.map +1 -1
- package/lib/langium/validation/document-validator.js +257 -21
- package/lib/langium/validation/document-validator.js.map +1 -1
- package/lib/messages/index.d.ts +1 -1
- package/lib/messages/index.d.ts.map +1 -1
- package/lib/messages/index.js +1 -1
- package/lib/messages/index.js.map +1 -1
- package/package.json +5 -5
- package/src/langium/transfer/transfer-encoder.ts +28 -9
- package/src/langium/validation/document-validator.ts +294 -21
- package/src/messages/index.ts +10 -1
|
@@ -20,11 +20,13 @@ import { type TransferLspDiagnostic } from '../validation/document-validator.js'
|
|
|
20
20
|
* including AST-extension-derived computed scalars and synthetic child
|
|
21
21
|
* mirrors. This is the wire shape clients consume, and the default.
|
|
22
22
|
* - `'grammar'` — only the grammar-declared properties, per
|
|
23
|
-
* `AstReflection.getTypeMetaData($type).properties
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
23
|
+
* `AstReflection.getTypeMetaData($type).properties`, each carrying the
|
|
24
|
+
* node's own authored value. Excludes every computed / synthetic property
|
|
25
|
+
* by construction (no naming convention, no registration) and bypasses the
|
|
26
|
+
* `resolvePropertyValue` substitution hook, so neither a computed KEY nor a
|
|
27
|
+
* computed VALUE can reach this shape. Yields the authored state a
|
|
28
|
+
* serializer round-trips — a diffable, acyclic baseline for field-level
|
|
29
|
+
* recording / forward-write reconcile.
|
|
28
30
|
*/
|
|
29
31
|
export type TransferMode = 'full' | 'grammar';
|
|
30
32
|
/**
|
|
@@ -129,7 +131,8 @@ export interface TransferEncoder<TDiagnostic extends TransferDiagnostic = Transf
|
|
|
129
131
|
* - {@link propertyKeys} — which property names the walk visits.
|
|
130
132
|
* - {@link shouldEmitProperty} — per-key filter on top of the default
|
|
131
133
|
* `$`-internals strip.
|
|
132
|
-
* - {@link resolvePropertyValue} — value substitution per property
|
|
134
|
+
* - {@link resolvePropertyValue} — value substitution per property, `'full'`
|
|
135
|
+
* mode only (see there for why `'grammar'` bypasses it).
|
|
133
136
|
* - {@link finalizeTransferNode} — post-decoration per encoded node.
|
|
134
137
|
* - {@link toTransferValue} — recursion seam per property value. Override
|
|
135
138
|
* to special-case reference encoding or to drop specific value shapes.
|
|
@@ -222,8 +225,17 @@ export declare class DefaultTransferEncoder<TTransferMap = Record<string, Transf
|
|
|
222
225
|
*/
|
|
223
226
|
protected shouldEmitProperty(_ast: AstNode, key: string, _context: EncodeContext): boolean;
|
|
224
227
|
/**
|
|
225
|
-
* Which value the walk emits under `key
|
|
226
|
-
*
|
|
228
|
+
* Which value the walk emits under `key`, in `'full'` mode ONLY. Default:
|
|
229
|
+
* the node's own value.
|
|
230
|
+
*
|
|
231
|
+
* Override to substitute a derived value under a grammar property name — an
|
|
232
|
+
* inheritance-resolved field, a preference-dependent label. `'grammar'`
|
|
233
|
+
* bypasses this hook and reads the node directly: that mode's contract is
|
|
234
|
+
* the authored state a serializer round-trips, and a substituted value is by
|
|
235
|
+
* construction not the one the document declared. An override that applied
|
|
236
|
+
* in both modes would leave the grammar shape carrying derived values under
|
|
237
|
+
* declared property names — diffable and acyclic still, but no longer
|
|
238
|
+
* authored, which is the property every consumer of that mode relies on.
|
|
227
239
|
*/
|
|
228
240
|
protected resolvePropertyValue(ast: AstNode, key: string, _context: EncodeContext): unknown;
|
|
229
241
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-encoder.d.ts","sourceRoot":"","sources":["../../../src/langium/transfer/transfer-encoder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAEJ,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAY,KAAK,OAAO,EAAE,aAAa,EAAyC,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,UAAU,EAAsB,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAEjF
|
|
1
|
+
{"version":3,"file":"transfer-encoder.d.ts","sourceRoot":"","sources":["../../../src/langium/transfer/transfer-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,8 @@ import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver-protocol';
|
|
|
42
42
|
* - {@link propertyKeys} — which property names the walk visits.
|
|
43
43
|
* - {@link shouldEmitProperty} — per-key filter on top of the default
|
|
44
44
|
* `$`-internals strip.
|
|
45
|
-
* - {@link resolvePropertyValue} — value substitution per property
|
|
45
|
+
* - {@link resolvePropertyValue} — value substitution per property, `'full'`
|
|
46
|
+
* mode only (see there for why `'grammar'` bypasses it).
|
|
46
47
|
* - {@link finalizeTransferNode} — post-decoration per encoded node.
|
|
47
48
|
* - {@link toTransferValue} — recursion seam per property value. Override
|
|
48
49
|
* to special-case reference encoding or to drop specific value shapes.
|
|
@@ -142,7 +143,13 @@ export class DefaultTransferEncoder {
|
|
|
142
143
|
if (!this.shouldEmitProperty(ast, key, context)) {
|
|
143
144
|
continue;
|
|
144
145
|
}
|
|
145
|
-
|
|
146
|
+
// `'grammar'` reads the authored value straight off the node rather than
|
|
147
|
+
// through `resolvePropertyValue`. The mode promises a shape the serializer
|
|
148
|
+
// round-trips, and a value-substitution hook cannot honour that: what it
|
|
149
|
+
// returns is by construction not what the document declared. Scoping the
|
|
150
|
+
// hook to `'full'` is what makes that guarantee structural instead of a
|
|
151
|
+
// rule every override has to remember.
|
|
152
|
+
const value = context.mode === 'grammar' ? ast[key] : this.resolvePropertyValue(ast, key, context);
|
|
146
153
|
// `'grammar'` lists every declared property, including those absent on
|
|
147
154
|
// this node; skip the absent ones. (`'full'` enumerates only own
|
|
148
155
|
// properties, so absent properties never surface there.) Part of the
|
|
@@ -180,8 +187,17 @@ export class DefaultTransferEncoder {
|
|
|
180
187
|
return !key.startsWith('$');
|
|
181
188
|
}
|
|
182
189
|
/**
|
|
183
|
-
* Which value the walk emits under `key
|
|
184
|
-
*
|
|
190
|
+
* Which value the walk emits under `key`, in `'full'` mode ONLY. Default:
|
|
191
|
+
* the node's own value.
|
|
192
|
+
*
|
|
193
|
+
* Override to substitute a derived value under a grammar property name — an
|
|
194
|
+
* inheritance-resolved field, a preference-dependent label. `'grammar'`
|
|
195
|
+
* bypasses this hook and reads the node directly: that mode's contract is
|
|
196
|
+
* the authored state a serializer round-trips, and a substituted value is by
|
|
197
|
+
* construction not the one the document declared. An override that applied
|
|
198
|
+
* in both modes would leave the grammar shape carrying derived values under
|
|
199
|
+
* declared property names — diffable and acyclic still, but no longer
|
|
200
|
+
* authored, which is the property every consumer of that mode relies on.
|
|
185
201
|
*/
|
|
186
202
|
resolvePropertyValue(ast, key, _context) {
|
|
187
203
|
return ast[key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-encoder.js","sourceRoot":"","sources":["../../../src/langium/transfer/transfer-encoder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,kBAAkB,EAMpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"transfer-encoder.js","sourceRoot":"","sources":["../../../src/langium/transfer/transfer-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { type LogThreshold, type MaybeObservableValue, ObservableValue, type Tracer } from '@hydranium/protocol';
|
|
10
|
-
import { type AstNode, type AstNodeLocator, type AstReflection, DefaultDocumentValidator, type DiagnosticInfo, type LangiumDocument, type LangiumCoreServices, type ValidateSingleNodeOptions, type ValidationOptions, type ValidationSeverity } from '@hydranium/langium';
|
|
9
|
+
import { type MessageDefinition, type MessageParams, type ParamsArg, type ParamsOf, type LogThreshold, type MaybeObservableValue, ObservableValue, type Tracer } from '@hydranium/protocol';
|
|
10
|
+
import { type AstNode, type AstNodeLocator, type AstReflection, DefaultDocumentValidator, type DiagnosticInfo, type LangiumDocument, type LangiumCoreServices, type Lexer, type ValidateSingleNodeOptions, type ValidationOptions, type ValidationSeverity } from '@hydranium/langium';
|
|
11
11
|
import type { CancellationToken } from 'vscode-languageserver-protocol';
|
|
12
12
|
import { Diagnostic } from 'vscode-languageserver-types';
|
|
13
13
|
import { type LogNameOptions } from '../diagnostics/logger.js';
|
|
@@ -48,7 +48,7 @@ export interface TransferLspDiagnostic extends Diagnostic {
|
|
|
48
48
|
* `Diagnostic.code` — so without a framework identity every adopter wanting to
|
|
49
49
|
* render it has to special-case Langium's shape.
|
|
50
50
|
*/
|
|
51
|
-
export declare const UNRESOLVED_REFERENCE:
|
|
51
|
+
export declare const UNRESOLVED_REFERENCE: MessageDefinition<"Could not resolve reference to {referenceType} named '{refText}'.">;
|
|
52
52
|
/**
|
|
53
53
|
* A character no token of the grammar can start with.
|
|
54
54
|
*
|
|
@@ -74,7 +74,77 @@ export declare const UNRESOLVED_REFERENCE: import("@hydranium/protocol").Message
|
|
|
74
74
|
* means: chevrotain reports how many characters the lexer discarded to recover,
|
|
75
75
|
* which for a single stray character is one and for a run of them is the run.
|
|
76
76
|
*/
|
|
77
|
-
export declare const
|
|
77
|
+
export declare const UNEXPECTED_CHARACTER: MessageDefinition<"unexpected character: ->{character}<- at offset: {offset}, skipped {skipped} characters.">;
|
|
78
|
+
/**
|
|
79
|
+
* A token the grammar does not admit at this position.
|
|
80
|
+
*
|
|
81
|
+
* **The English is byte-identical to Langium's
|
|
82
|
+
* `LangiumParserErrorMessageProvider.buildMismatchTokenMessage`, and must stay
|
|
83
|
+
* so**, on the same rule as {@link UNRESOLVED_REFERENCE}.
|
|
84
|
+
*
|
|
85
|
+
* `expected` is a token type name, which is grammar vocabulary rather than
|
|
86
|
+
* translatable text — only the frame around it is. Promoting it into the code
|
|
87
|
+
* instead would make the catalogue as large as the grammar.
|
|
88
|
+
*/
|
|
89
|
+
export declare const UNEXPECTED_TOKEN: MessageDefinition<"Expecting token of type '{expected}' but found `{found}`.">;
|
|
90
|
+
/**
|
|
91
|
+
* Input left over once the entry rule had matched.
|
|
92
|
+
*
|
|
93
|
+
* **The English is byte-identical to Langium's
|
|
94
|
+
* `LangiumParserErrorMessageProvider.buildNotAllInputParsedMessage`, and must
|
|
95
|
+
* stay so.**
|
|
96
|
+
*/
|
|
97
|
+
export declare const TRAILING_INPUT: MessageDefinition<"Expecting end of file but found `{found}`.">;
|
|
98
|
+
/**
|
|
99
|
+
* A mode-popping token reached with nothing on the lexer's mode stack.
|
|
100
|
+
*
|
|
101
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
102
|
+
* `defaultLexerErrorProvider.buildUnableToPopLexerModeMessage`, and must stay
|
|
103
|
+
* so**, the closing clause running on without punctuation exactly as upstream
|
|
104
|
+
* writes it.
|
|
105
|
+
*
|
|
106
|
+
* Reachable only from a multi-mode lexer, which a grammar opts into through a
|
|
107
|
+
* custom token builder.
|
|
108
|
+
*/
|
|
109
|
+
export declare const UNPOPPABLE_LEXER_MODE: MessageDefinition<"Unable to pop Lexer Mode after encountering Token ->{image}<- The Mode Stack is empty">;
|
|
110
|
+
/**
|
|
111
|
+
* A dedent that lines up with no enclosing indentation level.
|
|
112
|
+
*
|
|
113
|
+
* **The English is byte-identical to LANGIUM's `IndentationAwareTokenBuilder`,
|
|
114
|
+
* and must stay so** — the one lexing sentence Langium words itself rather than
|
|
115
|
+
* relaying from chevrotain, which is why it renders through no
|
|
116
|
+
* `ILexerErrorMessageProvider` and an adopter cannot reach it by replacing one.
|
|
117
|
+
*
|
|
118
|
+
* `stack` is the indentation stack as the template literal upstream stringifies
|
|
119
|
+
* it, comma-joined: structure would have to survive {@link MessageParams}, which
|
|
120
|
+
* holds scalars, and a translation has nothing to say about the numbers anyway.
|
|
121
|
+
*/
|
|
122
|
+
export declare const INVALID_DEDENT: MessageDefinition<"Invalid dedent level {level} at offset: {offset}. Current indentation stack: {stack}">;
|
|
123
|
+
/**
|
|
124
|
+
* A position where none of a rule's alternatives can start.
|
|
125
|
+
*
|
|
126
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
127
|
+
* `defaultParserErrorProvider.buildNoViableAltMessage`, and must stay so** —
|
|
128
|
+
* one layer further out than {@link UNEXPECTED_TOKEN}, because Langium overrides
|
|
129
|
+
* only two of the four parser sentences and passes this one straight through.
|
|
130
|
+
*
|
|
131
|
+
* `sequences` is the token-sequence list chevrotain generated, carried whole
|
|
132
|
+
* rather than as structure: {@link MessageParams} holds scalars, and the list is
|
|
133
|
+
* token names in any case, so only the frame around it is translatable.
|
|
134
|
+
*/
|
|
135
|
+
export declare const NO_VIABLE_ALTERNATIVE: MessageDefinition<"Expecting: one of these possible Token sequences:\n{sequences}\nbut found: '{found}'">;
|
|
136
|
+
/**
|
|
137
|
+
* A repetition that had to match at least once and matched nothing.
|
|
138
|
+
*
|
|
139
|
+
* **The English is byte-identical to CHEVROTAIN's
|
|
140
|
+
* `defaultParserErrorProvider.buildEarlyExitMessage`, and must stay so**,
|
|
141
|
+
* including the doubled colon after `sequences::`, which is upstream's and not a
|
|
142
|
+
* typo to repair here — a divergence would silently stop the identity attaching.
|
|
143
|
+
*
|
|
144
|
+
* Named for the empty repetition rather than for chevrotain's `EarlyExit`, which
|
|
145
|
+
* describes its own control flow rather than the reader's problem.
|
|
146
|
+
*/
|
|
147
|
+
export declare const MISSING_ITERATION: MessageDefinition<"Expecting: expecting at least one iteration which starts with one of these possible Token sequences::\n <{sequences}>\nbut found: '{found}'">;
|
|
78
148
|
export interface DocumentValidatorOptions extends LogNameOptions {
|
|
79
149
|
/**
|
|
80
150
|
* Level at which the `validateDocument` timing line is emitted, or `'off'`
|
|
@@ -121,6 +191,12 @@ export declare class HydraniumDocumentValidator extends DefaultDocumentValidator
|
|
|
121
191
|
protected readonly tracer: Tracer;
|
|
122
192
|
protected readonly astNodeLocator: AstNodeLocator;
|
|
123
193
|
protected readonly reflection: AstReflection;
|
|
194
|
+
protected readonly lexer: Lexer;
|
|
195
|
+
/**
|
|
196
|
+
* {@link tokenTypeNames}' answer. Nothing invalidates it: the vocabulary
|
|
197
|
+
* comes from the grammar, which is fixed once the DI tree is composed.
|
|
198
|
+
*/
|
|
199
|
+
protected expectedNames?: readonly string[];
|
|
124
200
|
protected readonly logLevel: ObservableValue<LogThreshold>;
|
|
125
201
|
protected readonly logAfterMs: ObservableValue<number>;
|
|
126
202
|
protected readonly validateVirtualDocuments: ObservableValue<boolean>;
|
|
@@ -132,26 +208,31 @@ export declare class HydraniumDocumentValidator extends DefaultDocumentValidator
|
|
|
132
208
|
}, options?: DocumentValidatorOptions);
|
|
133
209
|
validateDocument(document: LangiumDocument, options?: ValidationOptions, cancelToken?: CancellationToken): Promise<Diagnostic[]>;
|
|
134
210
|
/**
|
|
135
|
-
* Langium's validation pass, plus the framework identity on the lexing
|
|
136
|
-
* diagnostics it produced.
|
|
211
|
+
* Langium's validation pass, plus the framework identity on the lexing and
|
|
212
|
+
* parsing diagnostics it produced.
|
|
213
|
+
*
|
|
214
|
+
* **Here rather than in an override of `processLexingErrors` /
|
|
215
|
+
* `processParsingErrors`, and the reason is that neither seam can see what
|
|
216
|
+
* the identity needs.** Langium hands them a `ParseResult`, which carries the
|
|
217
|
+
* AST and the error lists but not the source text — and the offending
|
|
218
|
+
* CHARACTER, or the offending TOKEN, is the parameter a translation exists to
|
|
219
|
+
* interpolate. The document does carry it, and this is the innermost point
|
|
220
|
+
* that still holds one.
|
|
137
221
|
*
|
|
138
|
-
*
|
|
139
|
-
* is
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* the innermost point that still holds one. Reconstructing the character by
|
|
144
|
-
* matching it out of the finished sentence was the alternative, and it
|
|
145
|
-
* inverts the direction the rest of this file works in: every other identity
|
|
146
|
-
* here is derived from structured fields and CHECKED against the prose.
|
|
222
|
+
* Correlating the finished diagnostics back to the `ParseResult`'s error
|
|
223
|
+
* lists positionally is the alternative, and it is unsound for the parsing
|
|
224
|
+
* half: `processParsingErrors` DROPS an error whose token offsets are `NaN`
|
|
225
|
+
* and whose exception carries no `previousToken`, so the two lists differ in
|
|
226
|
+
* length exactly when recovery has been at work.
|
|
147
227
|
*
|
|
148
228
|
* Inside the timing span rather than around it, so the line accounts for the
|
|
149
229
|
* whole pass.
|
|
150
230
|
*/
|
|
151
231
|
protected validateAndIdentify(document: LangiumDocument, options?: ValidationOptions, cancelToken?: CancellationToken): Promise<Diagnostic[]>;
|
|
152
232
|
/**
|
|
153
|
-
* Add
|
|
154
|
-
* untouched when
|
|
233
|
+
* Add whichever lexing identity renders `diagnostic`'s sentence, or return it
|
|
234
|
+
* untouched when none of them does — a custom lexer's own report, which
|
|
235
|
+
* Langium admits through `lexerReport`, being the case that reaches the end.
|
|
155
236
|
*
|
|
156
237
|
* The parameters come from the diagnostic's own RANGE, not from
|
|
157
238
|
* `parseResult.lexerErrors`. Both hold the same numbers, and the range is the
|
|
@@ -166,6 +247,64 @@ export declare class HydraniumDocumentValidator extends DefaultDocumentValidator
|
|
|
166
247
|
* message.
|
|
167
248
|
*/
|
|
168
249
|
protected identifyLexingError(document: LangiumDocument, diagnostic: Diagnostic): Diagnostic;
|
|
250
|
+
/**
|
|
251
|
+
* Add whichever parser identity renders `diagnostic`'s sentence, or return it
|
|
252
|
+
* untouched when none of them does — an adopter that replaced the parser
|
|
253
|
+
* error-message provider being the case that reaches the last branch.
|
|
254
|
+
*
|
|
255
|
+
* `found` comes from the diagnostic's own RANGE, for the same reason
|
|
256
|
+
* {@link identifyLexingError} reads its parameters there. A token whose
|
|
257
|
+
* offsets chevrotain could not report collapses to a zero-width range, which
|
|
258
|
+
* yields the empty string the sentence already renders for it.
|
|
259
|
+
*
|
|
260
|
+
* **`expected` is recovered by SEARCHING the vocabulary, because nothing
|
|
261
|
+
* carries it.** Chevrotain hands the expected token type to the message
|
|
262
|
+
* provider and keeps it on neither the exception nor the diagnostic, so the
|
|
263
|
+
* only structured source left is the grammar's own vocabulary: every token
|
|
264
|
+
* type is offered to the same `format` the identity renders with, and the one
|
|
265
|
+
* that reproduces the message supplies the parameter. Matching it out of the
|
|
266
|
+
* prose instead would derive a parameter from a sentence that a Langium
|
|
267
|
+
* reword can change without warning. Two distinct names cannot render one
|
|
268
|
+
* sentence, so the match is unique where it exists.
|
|
269
|
+
*/
|
|
270
|
+
protected identifyParsingError(document: LangiumDocument, diagnostic: Diagnostic): Diagnostic;
|
|
271
|
+
/** `diagnostic` carrying `definition`'s identity, over whatever `data` it already had. */
|
|
272
|
+
protected identified<S extends string>(diagnostic: Diagnostic, definition: MessageDefinition<S>, ...params: ParamsArg<S>): Diagnostic;
|
|
273
|
+
/**
|
|
274
|
+
* `definition`'s parameters as they appear in `message`, taking the ones in
|
|
275
|
+
* `known` as given, or `undefined` when `message` is not that sentence.
|
|
276
|
+
*
|
|
277
|
+
* **The only parameters in this file taken OUT of the prose rather than
|
|
278
|
+
* derived and checked against it, and the bound on that is what `known`
|
|
279
|
+
* is for.** A generated token-sequence list, a lexer's indentation stack: for
|
|
280
|
+
* these there is no finite candidate set to offer to `format` the way a token
|
|
281
|
+
* type name can be, and no structured field carries them. What keeps the read
|
|
282
|
+
* honest is that everything else in the sentence is either a fixed literal or
|
|
283
|
+
* a parameter the caller derived independently, so the frame either matches
|
|
284
|
+
* exactly or the sentence is declined.
|
|
285
|
+
*
|
|
286
|
+
* **The trailing format-and-compare is load-bearing once more than one
|
|
287
|
+
* parameter is unknown.** Each is captured up to the NEXT fixed separator, so
|
|
288
|
+
* a separator that also occurs inside a value would cut early — re-rendering
|
|
289
|
+
* catches that, where for a single unknown between two affixes it could not
|
|
290
|
+
* fail. Two adjacent placeholders are declined outright: nothing marks the
|
|
291
|
+
* boundary, so no capture is recoverable.
|
|
292
|
+
*
|
|
293
|
+
* The frame is split off the declaration's own `text`, so it cannot drift
|
|
294
|
+
* from the sentence `format` renders.
|
|
295
|
+
*/
|
|
296
|
+
protected sliceFramed<S extends string>(message: string, definition: MessageDefinition<S>, known: MessageParams): ParamsOf<S> | undefined;
|
|
297
|
+
/**
|
|
298
|
+
* Every token type name the grammar declares, as
|
|
299
|
+
* {@link identifyParsingError} candidates.
|
|
300
|
+
*
|
|
301
|
+
* Read off the lexer, whose `definition` the `Lexer` INTERFACE declares —
|
|
302
|
+
* the parser holds the same vocabulary only behind Langium's default class,
|
|
303
|
+
* where an adopter's replacement need not keep it. A token type the parser
|
|
304
|
+
* expects but the lexer does not declare yields no match, which declines the
|
|
305
|
+
* identity rather than attaching a wrong one.
|
|
306
|
+
*/
|
|
307
|
+
protected tokenTypeNames(): readonly string[];
|
|
169
308
|
/**
|
|
170
309
|
* Skip validation for a node **and its children** when
|
|
171
310
|
* {@link shouldSkipValidation} returns true.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-validator.d.ts","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAIJ,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,MAAM,EAEb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACJ,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,wBAAwB,EACxB,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"document-validator.d.ts","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
|