@reqlan/language 1.6.2 → 1.7.0
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/README.md +6 -0
- package/out/generated/ast.d.ts +3 -3
- package/out/generated/ast.js +1 -1
- package/out/generated/ast.js.map +1 -1
- package/out/generated/grammar.js +2 -3318
- package/out/generated/grammar.js.map +1 -1
- package/out/generated/module.d.ts +2 -2
- package/out/generated/module.js +2 -2
- package/out/generated/module.js.map +1 -1
- package/out/index.d.ts +3 -0
- package/out/index.js +3 -0
- package/out/index.js.map +1 -1
- package/out/reqlan-async-parser.d.ts +37 -0
- package/out/reqlan-async-parser.js +117 -0
- package/out/reqlan-async-parser.js.map +1 -0
- package/out/reqlan-completion-provider.js +1 -1
- package/out/reqlan-completion-provider.js.map +1 -1
- package/out/reqlan-document-factory.d.ts +16 -0
- package/out/reqlan-document-factory.js +50 -0
- package/out/reqlan-document-factory.js.map +1 -0
- package/out/reqlan-linker.js +2 -2
- package/out/reqlan-linker.js.map +1 -1
- package/out/reqlan-module.d.ts +2 -1
- package/out/reqlan-module.js +12 -2
- package/out/reqlan-module.js.map +1 -1
- package/out/reqlan-parse-budget.d.ts +50 -0
- package/out/reqlan-parse-budget.js +89 -0
- package/out/reqlan-parse-budget.js.map +1 -0
- package/out/reqlan-parse-worker.d.ts +1 -0
- package/out/reqlan-parse-worker.js +34 -0
- package/out/reqlan-parse-worker.js.map +1 -0
- package/out/reqlan-token-builder.js +102 -25
- package/out/reqlan-token-builder.js.map +1 -1
- package/out/reqlan-validator.d.ts +9 -1
- package/out/reqlan-validator.js +16 -2
- package/out/reqlan-validator.js.map +1 -1
- package/out/reqlan-workspace-manager.d.ts +11 -0
- package/out/reqlan-workspace-manager.js +24 -0
- package/out/reqlan-workspace-manager.js.map +1 -0
- package/package.json +1 -1
- package/src/generated/ast.ts +3 -3
- package/src/generated/grammar.ts +2 -3318
- package/src/generated/module.ts +2 -2
- package/src/index.ts +3 -0
- package/src/reqlan-async-parser.ts +178 -0
- package/src/reqlan-completion-provider.ts +1 -1
- package/src/reqlan-document-factory.ts +75 -0
- package/src/reqlan-linker.ts +4 -2
- package/src/reqlan-module.ts +15 -3
- package/src/reqlan-parse-budget.ts +155 -0
- package/src/reqlan-parse-worker.ts +35 -0
- package/src/reqlan-token-builder.ts +122 -25
- package/src/reqlan-validator.ts +22 -1
- package/src/reqlan-workspace-manager.ts +38 -0
- package/src/reqlan.langium +3 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/** Default wall-clock budget for lex+parse of one file (worker-enforced). */
|
|
2
|
+
export const DEFAULT_PARSE_BUDGET_MS = 8000;
|
|
3
|
+
/**
|
|
4
|
+
* Prefer in-process sync parse below this size. Worker threads (killable budget)
|
|
5
|
+
* are reserved for larger inputs, hang-sentinel tests, sticky timeout escalation,
|
|
6
|
+
* or an explicit force.
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_WORKER_PARSE_THRESHOLD_CHARS = 64000;
|
|
9
|
+
/** Test-only sentinel: a worker that sees this marker hangs until terminated. */
|
|
10
|
+
export const PARSE_HANG_SENTINEL = '__REQLAN_PARSE_HANG__';
|
|
11
|
+
export const PARSE_TIMEOUT_WARNING = 'Parse budget exceeded for this file; semantic features may be incomplete until the file is simplified or the budget is raised.';
|
|
12
|
+
export function parseTimeoutErrorMessage(timeoutMs) {
|
|
13
|
+
return `Failed to lex/parse this file within ${timeoutMs}ms; left unloaded so the rest of the workspace can continue.`;
|
|
14
|
+
}
|
|
15
|
+
export function parseFailureErrorMessage(cause) {
|
|
16
|
+
return `Lex/parse aborted for this file (${cause}); left unloaded so the rest of the workspace can continue.`;
|
|
17
|
+
}
|
|
18
|
+
/** Whether this parse should run in a killable worker thread. */
|
|
19
|
+
export function shouldEscalateToParseWorker(text, options = {}) {
|
|
20
|
+
const mode = options.useWorker ?? 'auto';
|
|
21
|
+
if (mode === false) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (mode === true || options.forceWorker) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (text.includes(PARSE_HANG_SENTINEL)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
const threshold = options.thresholdChars ?? DEFAULT_WORKER_PARSE_THRESHOLD_CHARS;
|
|
31
|
+
return text.length >= threshold;
|
|
32
|
+
}
|
|
33
|
+
export function isReqlanIncompleteParseResult(result) {
|
|
34
|
+
return Boolean(result.reqlanIncomplete);
|
|
35
|
+
}
|
|
36
|
+
function placeholderToken() {
|
|
37
|
+
return {
|
|
38
|
+
image: '',
|
|
39
|
+
startOffset: Number.NaN,
|
|
40
|
+
endOffset: Number.NaN,
|
|
41
|
+
startLine: Number.NaN,
|
|
42
|
+
endLine: Number.NaN,
|
|
43
|
+
startColumn: Number.NaN,
|
|
44
|
+
endColumn: Number.NaN,
|
|
45
|
+
tokenTypeIdx: -1,
|
|
46
|
+
tokenType: { name: 'EOF' }
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function timeoutParserError(message) {
|
|
50
|
+
return {
|
|
51
|
+
name: 'ReqlanParseTimeout',
|
|
52
|
+
message,
|
|
53
|
+
token: placeholderToken(),
|
|
54
|
+
resyncedTokens: [],
|
|
55
|
+
context: {
|
|
56
|
+
ruleStack: [],
|
|
57
|
+
ruleOccurrenceStack: []
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function timeoutLexerWarning(message) {
|
|
62
|
+
return {
|
|
63
|
+
offset: 0,
|
|
64
|
+
line: 1,
|
|
65
|
+
column: 1,
|
|
66
|
+
length: 1,
|
|
67
|
+
message,
|
|
68
|
+
severity: 'warning'
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Empty model with a lexer warning and a parser error so the editor shows both severities.
|
|
73
|
+
*/
|
|
74
|
+
export function createIncompleteParseResult(parser, options) {
|
|
75
|
+
const empty = parser.parse('');
|
|
76
|
+
const errorMessage = options.reason === 'timeout'
|
|
77
|
+
? parseTimeoutErrorMessage(options.timeoutMs ?? DEFAULT_PARSE_BUDGET_MS)
|
|
78
|
+
: parseFailureErrorMessage(options.cause ?? 'unexpected error');
|
|
79
|
+
// Casts: Chevrotain exception shapes are structural; Langium only needs message + token positions.
|
|
80
|
+
empty.parserErrors = [timeoutParserError(errorMessage)];
|
|
81
|
+
empty.lexerErrors = [timeoutLexerWarning(PARSE_TIMEOUT_WARNING)];
|
|
82
|
+
empty.reqlanIncomplete = {
|
|
83
|
+
reason: options.reason,
|
|
84
|
+
timeoutMs: options.timeoutMs,
|
|
85
|
+
cause: options.cause
|
|
86
|
+
};
|
|
87
|
+
return empty;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=reqlan-parse-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqlan-parse-budget.js","sourceRoot":"","sources":["../src/reqlan-parse-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Langium worker-thread parse entry: sync lex/parse, dehydrate, postMessage.
|
|
3
|
+
* The parent enforces the wall-clock budget via worker.terminate().
|
|
4
|
+
* rq:["../../../reqlan rq/language/parser_lexer.rq".parse_budget_timeout]
|
|
5
|
+
*/
|
|
6
|
+
import { parentPort } from 'node:worker_threads';
|
|
7
|
+
import { EmptyFileSystem } from 'langium';
|
|
8
|
+
import { createReqlanServices } from './reqlan-module.js';
|
|
9
|
+
import { PARSE_HANG_SENTINEL } from './reqlan-parse-budget.js';
|
|
10
|
+
if (!parentPort) {
|
|
11
|
+
throw new Error('reqlan-parse-worker must run as a worker thread');
|
|
12
|
+
}
|
|
13
|
+
const { Reqlan } = createReqlanServices(EmptyFileSystem);
|
|
14
|
+
const parser = Reqlan.parser.LangiumParser;
|
|
15
|
+
const hydrator = Reqlan.serializer.Hydrator;
|
|
16
|
+
parentPort.on('message', (text) => {
|
|
17
|
+
const input = typeof text === 'string' ? text : '';
|
|
18
|
+
if (input.includes(PARSE_HANG_SENTINEL)) {
|
|
19
|
+
// Intentional hang for tests — parent terminates on budget expiry.
|
|
20
|
+
for (;;) {
|
|
21
|
+
/* spin */
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const result = parser.parse(input);
|
|
26
|
+
parentPort.postMessage(hydrator.dehydrate(result));
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// Surface as worker 'error' so ParserWorker rejects instead of hydrating garbage.
|
|
30
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
31
|
+
throw new Error(`reqlan parse worker failed: ${message}`);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=reqlan-parse-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqlan-parse-worker.js","sourceRoot":"","sources":["../src/reqlan-parse-worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;IACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;AACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AAE5C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtC,mEAAmE;QACnE,SAAS,CAAC;YACN,UAAU;QACd,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,UAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,kFAAkF;QAClF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -98,7 +98,13 @@ const markdownLink = (text, offset) => {
|
|
|
98
98
|
}
|
|
99
99
|
return null;
|
|
100
100
|
};
|
|
101
|
-
const
|
|
101
|
+
const blockOpenerLine = /^[ \t]*(?:[A-Za-z_.][\w.-]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')\s*$/;
|
|
102
|
+
function lineStartOffset(text, offset) {
|
|
103
|
+
return text.lastIndexOf('\n', offset - 1) + 1;
|
|
104
|
+
}
|
|
105
|
+
function textBeforeOnLine(text, offset) {
|
|
106
|
+
return text.slice(lineStartOffset(text, offset), offset).replace(/[ \t]+$/, '');
|
|
107
|
+
}
|
|
102
108
|
function isEscapedAt(text, offset) {
|
|
103
109
|
let backslashes = 0;
|
|
104
110
|
for (let index = offset - 1; index >= 0 && text[index] === '\\'; index--) {
|
|
@@ -113,8 +119,10 @@ function isStructuralOpenBraceAtDepth(text, offset, depth) {
|
|
|
113
119
|
if (isEscapedAt(text, offset)) {
|
|
114
120
|
return false;
|
|
115
121
|
}
|
|
116
|
-
const before = text
|
|
117
|
-
|
|
122
|
+
const before = textBeforeOnLine(text, offset);
|
|
123
|
+
// Top-level named blocks (`name {`) and nameless recoverable blocks (`{` alone).
|
|
124
|
+
// Leading indentation is allowed — top-level ideas are often indented in fixtures.
|
|
125
|
+
if (depth === 0 && (blockOpenerLine.test(before) || (isLineStartAt(text, offset) && before.trim().length === 0))) {
|
|
118
126
|
return true;
|
|
119
127
|
}
|
|
120
128
|
if (/@[A-Za-z_][\w-]*(?::)?\s*$/.test(before)) {
|
|
@@ -124,8 +132,7 @@ function isStructuralOpenBraceAtDepth(text, offset, depth) {
|
|
|
124
132
|
return true;
|
|
125
133
|
}
|
|
126
134
|
if (depth >= 1 && /[A-Za-z_][\w-]*\s*$/.test(before) && !isLineStartAt(text, offset)) {
|
|
127
|
-
|
|
128
|
-
return /^[ \t]*(?:\r?\n|$)/.test(after);
|
|
135
|
+
return restOfLineIsBlank(text, offset);
|
|
129
136
|
}
|
|
130
137
|
return false;
|
|
131
138
|
}
|
|
@@ -142,12 +149,10 @@ function isStructuralCloseBraceAt(text, offset) {
|
|
|
142
149
|
if (isEscapedAt(text, offset)) {
|
|
143
150
|
return false;
|
|
144
151
|
}
|
|
145
|
-
|
|
146
|
-
const restOfLine = after.split(/\r?\n/, 1)[0] ?? '';
|
|
147
|
-
if (restOfLine.trim().length !== 0) {
|
|
152
|
+
if (!restOfLineIsBlank(text, offset)) {
|
|
148
153
|
return false;
|
|
149
154
|
}
|
|
150
|
-
const { structuralDepth, proseDepth } =
|
|
155
|
+
const { structuralDepth, proseDepth } = braceStateBefore(text, offset);
|
|
151
156
|
if (structuralDepth <= 0) {
|
|
152
157
|
return false;
|
|
153
158
|
}
|
|
@@ -156,14 +161,64 @@ function isStructuralCloseBraceAt(text, offset) {
|
|
|
156
161
|
}
|
|
157
162
|
return proseDepth === 0;
|
|
158
163
|
}
|
|
159
|
-
|
|
164
|
+
let braceScanCache;
|
|
165
|
+
function fenceEndAfter(text, openOffset) {
|
|
166
|
+
// Match CODE_FENCE: ```…``` including optional body; return index after closing fence.
|
|
167
|
+
if (text.charCodeAt(openOffset) !== 96
|
|
168
|
+
|| text.charCodeAt(openOffset + 1) !== 96
|
|
169
|
+
|| text.charCodeAt(openOffset + 2) !== 96) {
|
|
170
|
+
return openOffset;
|
|
171
|
+
}
|
|
172
|
+
const afterOpen = openOffset + 3;
|
|
173
|
+
const firstNewline = text.indexOf('\n', afterOpen);
|
|
174
|
+
if (firstNewline < 0) {
|
|
175
|
+
const sameLineClose = text.indexOf('```', afterOpen);
|
|
176
|
+
return sameLineClose < 0 ? text.length : sameLineClose + 3;
|
|
177
|
+
}
|
|
178
|
+
const close = text.indexOf('```', firstNewline + 1);
|
|
179
|
+
return close < 0 ? text.length : close + 3;
|
|
180
|
+
}
|
|
181
|
+
function restOfLineIsBlank(text, offset) {
|
|
182
|
+
for (let index = offset + 1; index < text.length; index++) {
|
|
183
|
+
const char = text[index];
|
|
184
|
+
if (char === '\n' || char === '\r') {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
if (char !== ' ' && char !== '\t') {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
function buildBraceScanCache(text) {
|
|
160
194
|
let structuralDepth = 0;
|
|
161
195
|
const proseDepthByStructural = [0];
|
|
196
|
+
const offsets = [0];
|
|
197
|
+
const structuralDepthAt = [0];
|
|
198
|
+
const proseDepthAtOffsets = [0];
|
|
162
199
|
const proseDepthAt = () => proseDepthByStructural[structuralDepth] ?? 0;
|
|
163
200
|
const setProseDepth = (value) => {
|
|
164
201
|
proseDepthByStructural[structuralDepth] = value;
|
|
165
202
|
};
|
|
166
|
-
|
|
203
|
+
const recordStateFrom = (offset) => {
|
|
204
|
+
const last = offsets.length - 1;
|
|
205
|
+
if (offsets[last] === offset) {
|
|
206
|
+
structuralDepthAt[last] = structuralDepth;
|
|
207
|
+
proseDepthAtOffsets[last] = proseDepthAt();
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
offsets.push(offset);
|
|
211
|
+
structuralDepthAt.push(structuralDepth);
|
|
212
|
+
proseDepthAtOffsets.push(proseDepthAt());
|
|
213
|
+
};
|
|
214
|
+
for (let index = 0; index < text.length; index++) {
|
|
215
|
+
// Fenced snippets are opaque to the parser; braces inside must not change depth.
|
|
216
|
+
if (text.charCodeAt(index) === 96
|
|
217
|
+
&& text.charCodeAt(index + 1) === 96
|
|
218
|
+
&& text.charCodeAt(index + 2) === 96) {
|
|
219
|
+
index = fenceEndAfter(text, index) - 1;
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
167
222
|
const char = text[index];
|
|
168
223
|
if (char === '{') {
|
|
169
224
|
if (isEscapedAt(text, index)) {
|
|
@@ -176,6 +231,7 @@ function scanBraceState(text, offset) {
|
|
|
176
231
|
else {
|
|
177
232
|
setProseDepth(proseDepthAt() + 1);
|
|
178
233
|
}
|
|
234
|
+
recordStateFrom(index + 1);
|
|
179
235
|
continue;
|
|
180
236
|
}
|
|
181
237
|
if (char !== '}') {
|
|
@@ -184,23 +240,24 @@ function scanBraceState(text, offset) {
|
|
|
184
240
|
if (isEscapedAt(text, index)) {
|
|
185
241
|
continue;
|
|
186
242
|
}
|
|
187
|
-
const
|
|
188
|
-
const restOfLine = after.split(/\r?\n/, 1)[0] ?? '';
|
|
189
|
-
const atEndOfLine = restOfLine.trim().length === 0;
|
|
243
|
+
const atEndOfLine = restOfLineIsBlank(text, index);
|
|
190
244
|
if (!atEndOfLine) {
|
|
191
245
|
if (proseDepthAt() > 0) {
|
|
192
246
|
setProseDepth(proseDepthAt() - 1);
|
|
247
|
+
recordStateFrom(index + 1);
|
|
193
248
|
}
|
|
194
249
|
continue;
|
|
195
250
|
}
|
|
196
251
|
if (structuralDepth <= 0) {
|
|
197
252
|
if (proseDepthAt() > 0) {
|
|
198
253
|
setProseDepth(proseDepthAt() - 1);
|
|
254
|
+
recordStateFrom(index + 1);
|
|
199
255
|
}
|
|
200
256
|
continue;
|
|
201
257
|
}
|
|
202
258
|
if (isLineStartAt(text, index)) {
|
|
203
259
|
structuralDepth--;
|
|
260
|
+
recordStateFrom(index + 1);
|
|
204
261
|
continue;
|
|
205
262
|
}
|
|
206
263
|
if (proseDepthAt() > 0) {
|
|
@@ -209,17 +266,38 @@ function scanBraceState(text, offset) {
|
|
|
209
266
|
else {
|
|
210
267
|
structuralDepth--;
|
|
211
268
|
}
|
|
269
|
+
recordStateFrom(index + 1);
|
|
212
270
|
}
|
|
271
|
+
return { text, offsets, structuralDepth: structuralDepthAt, proseDepth: proseDepthAtOffsets };
|
|
272
|
+
}
|
|
273
|
+
function braceStateAtOffset(cache, offset) {
|
|
274
|
+
const { offsets, structuralDepth, proseDepth } = cache;
|
|
275
|
+
let low = 0;
|
|
276
|
+
let high = offsets.length - 1;
|
|
277
|
+
while (low <= high) {
|
|
278
|
+
const mid = (low + high) >> 1;
|
|
279
|
+
if (offsets[mid] <= offset) {
|
|
280
|
+
low = mid + 1;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
high = mid - 1;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const index = Math.max(0, high);
|
|
213
287
|
return {
|
|
214
|
-
structuralDepth,
|
|
215
|
-
proseDepth:
|
|
288
|
+
structuralDepth: structuralDepth[index] ?? 0,
|
|
289
|
+
proseDepth: proseDepth[index] ?? 0
|
|
216
290
|
};
|
|
217
291
|
}
|
|
218
|
-
function
|
|
219
|
-
|
|
292
|
+
function braceStateBefore(text, offset) {
|
|
293
|
+
if (braceScanCache?.text !== text) {
|
|
294
|
+
braceScanCache = buildBraceScanCache(text);
|
|
295
|
+
}
|
|
296
|
+
const boundedOffset = Math.max(0, Math.min(offset, text.length));
|
|
297
|
+
return braceStateAtOffset(braceScanCache, boundedOffset);
|
|
220
298
|
}
|
|
221
299
|
function isStructuralOpenBraceAt(text, offset) {
|
|
222
|
-
return isStructuralOpenBraceAtDepth(text, offset,
|
|
300
|
+
return isStructuralOpenBraceAtDepth(text, offset, braceStateBefore(text, offset).structuralDepth);
|
|
223
301
|
}
|
|
224
302
|
const structuralOpenBrace = (text, offset) => {
|
|
225
303
|
if (text[offset] !== '{') {
|
|
@@ -246,7 +324,7 @@ const proseCloseBrace = (text, offset) => {
|
|
|
246
324
|
return isStructuralCloseBraceAt(text, offset) ? null : makeMatch(text, offset, 1);
|
|
247
325
|
};
|
|
248
326
|
function braceDepthBefore(text, offset) {
|
|
249
|
-
return
|
|
327
|
+
return braceStateBefore(text, offset).structuralDepth;
|
|
250
328
|
}
|
|
251
329
|
function isLineStartAt(text, offset) {
|
|
252
330
|
let previousIndex = offset - 1;
|
|
@@ -257,15 +335,14 @@ function isLineStartAt(text, offset) {
|
|
|
257
335
|
}
|
|
258
336
|
function isStringLiteralContext(text, offset) {
|
|
259
337
|
const depth = braceDepthBefore(text, offset);
|
|
260
|
-
const trimmed = text
|
|
338
|
+
const trimmed = textBeforeOnLine(text, offset);
|
|
261
339
|
if (depth === 0 && /\b(?:from|import)\s*$/.test(trimmed)) {
|
|
262
340
|
return true;
|
|
263
341
|
}
|
|
264
342
|
if (/\[\s*$/.test(trimmed)) {
|
|
265
343
|
return true;
|
|
266
344
|
}
|
|
267
|
-
|
|
268
|
-
if (trimmed.slice(lineStart).length === 0 && depth === 0) {
|
|
345
|
+
if (trimmed.length === 0 && depth === 0) {
|
|
269
346
|
return true;
|
|
270
347
|
}
|
|
271
348
|
return false;
|
|
@@ -299,7 +376,7 @@ function topLevelImportKeyword(text, offset) {
|
|
|
299
376
|
if (isLineStartAt(text, offset)) {
|
|
300
377
|
return makeMatch(text, offset, 6);
|
|
301
378
|
}
|
|
302
|
-
const before = text
|
|
379
|
+
const before = textBeforeOnLine(text, offset);
|
|
303
380
|
if (/(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/.test(before)) {
|
|
304
381
|
return makeMatch(text, offset, 6);
|
|
305
382
|
}
|
|
@@ -317,7 +394,7 @@ function topLevelAsKeyword(text, offset) {
|
|
|
317
394
|
if (braceDepthBefore(text, offset) !== 0) {
|
|
318
395
|
return null;
|
|
319
396
|
}
|
|
320
|
-
const before = text
|
|
397
|
+
const before = textBeforeOnLine(text, offset);
|
|
321
398
|
if (/(?:[_a-zA-Z][\w-]*|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/.test(before)) {
|
|
322
399
|
return makeMatch(text, offset, 2);
|
|
323
400
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-token-builder.js","sourceRoot":"","sources":["../src/reqlan-token-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reqlan-token-builder.js","sourceRoot":"","sources":["../src/reqlan-token-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { ValidationAcceptor } from 'langium';
|
|
2
|
-
import { type Model } from './generated/ast.js';
|
|
2
|
+
import { type AnonymousBlock, type Model } from './generated/ast.js';
|
|
3
3
|
import type { ReqlanServices } from './reqlan-module.js';
|
|
4
4
|
/**
|
|
5
5
|
* Registers validation hooks for the requirement graph AST.
|
|
6
6
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
7
7
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
8
8
|
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
9
|
+
* rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
|
|
9
10
|
*/
|
|
10
11
|
export declare function registerValidationChecks(services: ReqlanServices): void;
|
|
11
12
|
/**
|
|
@@ -13,11 +14,18 @@ export declare function registerValidationChecks(services: ReqlanServices): void
|
|
|
13
14
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
14
15
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
15
16
|
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
17
|
+
* rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
|
|
16
18
|
*/
|
|
17
19
|
export declare class ReqlanValidator {
|
|
18
20
|
private readonly services;
|
|
19
21
|
constructor(services: ReqlanServices);
|
|
20
22
|
checkModelDuplicates(model: Model, accept: ValidationAcceptor): void;
|
|
23
|
+
/**
|
|
24
|
+
* Top-level nameless `{ ... }` blocks parse so the rest of the file stays alive,
|
|
25
|
+
* but they need a name to be addressable ideas.
|
|
26
|
+
* List-item anonymous blocks remain valid (see lists).
|
|
27
|
+
*/
|
|
28
|
+
checkNamelessIdeaBlock(block: AnonymousBlock, accept: ValidationAcceptor): void;
|
|
21
29
|
/**
|
|
22
30
|
* Local diagnostics for recoverable but invalid import shapes.
|
|
23
31
|
* Keeps the rest of the file parseable — see import_error_recovery.
|
package/out/reqlan-validator.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AstUtils } from 'langium';
|
|
2
|
-
import { isFromImport, isIdea, isInvalidFromImport, isOneLinerIdea } from './generated/ast.js';
|
|
2
|
+
import { isFromImport, isIdea, isInvalidFromImport, isModel, isOneLinerIdea } from './generated/ast.js';
|
|
3
3
|
import { collectFileLinks, fileLinkTargetIssueMessage } from './reqlan-file-link-resolver.js';
|
|
4
4
|
import { importBindings, importPathOf, isWellFormedFromImport } from './reqlan-import-bindings.js';
|
|
5
5
|
import { isResolvableImportPath } from './reqlan-imports.js';
|
|
@@ -10,12 +10,14 @@ import { unquoteReqlanString } from './reqlan-quoted-strings.js';
|
|
|
10
10
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
11
11
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
12
12
|
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
13
|
+
* rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
|
|
13
14
|
*/
|
|
14
15
|
export function registerValidationChecks(services) {
|
|
15
16
|
const registry = services.validation.ValidationRegistry;
|
|
16
17
|
const validator = services.validation.ReqlanValidator;
|
|
17
18
|
const checks = {
|
|
18
|
-
Model: validator.checkModelDuplicates
|
|
19
|
+
Model: validator.checkModelDuplicates,
|
|
20
|
+
AnonymousBlock: validator.checkNamelessIdeaBlock
|
|
19
21
|
};
|
|
20
22
|
registry.register(checks, validator);
|
|
21
23
|
}
|
|
@@ -24,6 +26,7 @@ export function registerValidationChecks(services) {
|
|
|
24
26
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
25
27
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
26
28
|
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
29
|
+
* rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
|
|
27
30
|
*/
|
|
28
31
|
export class ReqlanValidator {
|
|
29
32
|
constructor(services) {
|
|
@@ -36,6 +39,17 @@ export class ReqlanValidator {
|
|
|
36
39
|
this.checkImportTargets(model, accept);
|
|
37
40
|
this.checkFileReferenceTargets(model, accept);
|
|
38
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Top-level nameless `{ ... }` blocks parse so the rest of the file stays alive,
|
|
44
|
+
* but they need a name to be addressable ideas.
|
|
45
|
+
* List-item anonymous blocks remain valid (see lists).
|
|
46
|
+
*/
|
|
47
|
+
checkNamelessIdeaBlock(block, accept) {
|
|
48
|
+
if (!isModel(block.$container)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
accept('warning', 'Nameless idea block: add a name before `{` (for example `my_idea { ... }`). The block was kept so the rest of the file still parses.', { node: block });
|
|
52
|
+
}
|
|
39
53
|
/**
|
|
40
54
|
* Local diagnostics for recoverable but invalid import shapes.
|
|
41
55
|
* Keeps the rest of the file parseable — see import_error_recovery.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../src/reqlan-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EACH,YAAY,EACZ,MAAM,EACN,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../src/reqlan-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DefaultWorkspaceManager, type LangiumDocument, type LangiumSharedCoreServices, type Stream, type URI } from 'langium';
|
|
2
|
+
/**
|
|
3
|
+
* Loads workspace documents independently so one catastrophic parse failure
|
|
4
|
+
* (for example Chevrotain recovery stack overflow) cannot abort LSP workspace init.
|
|
5
|
+
* rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
|
|
6
|
+
* rq:["../../../reqlan rq/language/parser_lexer.rq".parse_budget_timeout]
|
|
7
|
+
*/
|
|
8
|
+
export declare class ReqlanWorkspaceManager extends DefaultWorkspaceManager {
|
|
9
|
+
constructor(services: LangiumSharedCoreServices);
|
|
10
|
+
protected loadWorkspaceDocuments(uris: Stream<URI>, collector: (document: LangiumDocument) => void): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DefaultWorkspaceManager } from 'langium';
|
|
2
|
+
/**
|
|
3
|
+
* Loads workspace documents independently so one catastrophic parse failure
|
|
4
|
+
* (for example Chevrotain recovery stack overflow) cannot abort LSP workspace init.
|
|
5
|
+
* rq:["../../../reqlan rq/language/syntax.rq".no_name_idea_safe_warning]
|
|
6
|
+
* rq:["../../../reqlan rq/language/parser_lexer.rq".parse_budget_timeout]
|
|
7
|
+
*/
|
|
8
|
+
export class ReqlanWorkspaceManager extends DefaultWorkspaceManager {
|
|
9
|
+
constructor(services) {
|
|
10
|
+
super(services);
|
|
11
|
+
}
|
|
12
|
+
async loadWorkspaceDocuments(uris, collector) {
|
|
13
|
+
await Promise.all(uris.map(async (uri) => {
|
|
14
|
+
try {
|
|
15
|
+
const document = await this.langiumDocuments.getOrCreateDocument(uri);
|
|
16
|
+
collector(document);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.error(`[reqlan] Skipping document that failed to load during workspace init: ${uri.toString()}`, error);
|
|
20
|
+
}
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=reqlan-workspace-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reqlan-workspace-manager.js","sourceRoot":"","sources":["../src/reqlan-workspace-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EAK1B,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAC/D,YAAY,QAAmC;QAC3C,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAEkB,KAAK,CAAC,sBAAsB,CAC3C,IAAiB,EACjB,SAA8C;QAE9C,MAAM,OAAO,CAAC,GAAG,CACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACjB,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACtE,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACT,yEAAyE,GAAG,CAAC,QAAQ,EAAE,EAAE,EACzF,KAAK,CACR,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CACL,CAAC;IACN,CAAC;CACJ"}
|