@hydranium/core 1.0.0-next.387 → 1.0.0-next.390
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/document-builder/document-builder.d.ts +14 -1
- package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
- package/lib/langium/document-builder/document-builder.js +15 -0
- package/lib/langium/document-builder/document-builder.js.map +1 -1
- package/lib/langium/integrity/integrity-service.d.ts +118 -2
- package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
- package/lib/langium/integrity/integrity-service.js +286 -3
- package/lib/langium/integrity/integrity-service.js.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts +15 -8
- package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
- package/lib/langium/workspace/hydranium-workspace-lock.js +25 -10
- package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
- package/lib/testing/stub-document-builder.d.ts +1 -1
- package/lib/testing/stub-document-builder.d.ts.map +1 -1
- package/lib/testing/stub-document-builder.js +3 -0
- package/lib/testing/stub-document-builder.js.map +1 -1
- package/package.json +5 -5
- package/src/langium/document-builder/document-builder.ts +17 -1
- package/src/langium/integrity/integrity-service.ts +325 -2
- package/src/langium/workspace/hydranium-workspace-lock.ts +25 -10
- package/src/testing/stub-document-builder.ts +5 -0
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { isPromiseLike, Logger } from '@hydranium/protocol';
|
|
10
|
-
import { AstUtils, DocumentState, interruptAndCheck, isOperationCancelled, UriUtils } from '@hydranium/langium';
|
|
9
|
+
import { describeErrorWithStack, isPromiseLike, Logger, textHash } from '@hydranium/protocol';
|
|
10
|
+
import { AstUtils, DocumentState, interruptAndCheck, isMultiReference, isOperationCancelled, UriUtils } from '@hydranium/langium';
|
|
11
11
|
import { CancellationToken } from 'vscode-languageserver';
|
|
12
12
|
import { Registry } from '../../util/registry.js';
|
|
13
13
|
import { hasSkippedText } from '../workspace/syntax-errors.js';
|
|
@@ -34,6 +34,13 @@ export var IntegrityService;
|
|
|
34
34
|
* `textDocument` still mirrors disk — read the repair off the AST, or from
|
|
35
35
|
* the staged content the next open consumes.
|
|
36
36
|
*
|
|
37
|
+
* A `Linked`-phase repair settles the documents that reference the repaired
|
|
38
|
+
* one in the same build against what the repair replaced. A build after it
|
|
39
|
+
* relinks them, and they settle again. Past `maxRelinkChain` such builds in
|
|
40
|
+
* a row they keep stale links. A closed `'editor'` document whose CST was
|
|
41
|
+
* shed re-reads its unrepaired text in that build and repeats the repair,
|
|
42
|
+
* so they resolve a renamed element by its old name until the next change.
|
|
43
|
+
*
|
|
37
44
|
* Invariant: integrity rules only register at Parsed or Linked, so the build
|
|
38
45
|
* is guaranteed post-integrity once it advances past `onBuildPhase(Linked)`
|
|
39
46
|
* into `IndexedReferences`. {@link IntegrityService.register} enforces this at
|
|
@@ -49,6 +56,8 @@ export var IntegrityService;
|
|
|
49
56
|
* per server rather than once per language.
|
|
50
57
|
*/
|
|
51
58
|
const silentWriteReported = new WeakSet();
|
|
59
|
+
/** The running builds that relink dependents, per server, because a repair in one language can extend a chain in another. */
|
|
60
|
+
const runningRelinksByServer = new WeakMap();
|
|
52
61
|
/**
|
|
53
62
|
* Default {@link IntegrityService} implementation. Enforces rules,
|
|
54
63
|
* resyncs document text after mutations, and propagates corrections.
|
|
@@ -94,6 +103,25 @@ export class DefaultIntegrityService {
|
|
|
94
103
|
* Linked-phase correction (see {@link resyncDocument}).
|
|
95
104
|
*/
|
|
96
105
|
documentBuilder;
|
|
106
|
+
/** Each document's {@link DependentRelink}, from its request until it settles. See {@link relinkDependents}. */
|
|
107
|
+
relinkBuilds = new WeakMap();
|
|
108
|
+
/** The {@link replayKey} of the latest repair of each document that {@link stagesRepairs}, with the hash of the text it came from. */
|
|
109
|
+
replayKeys = new WeakMap();
|
|
110
|
+
/** The relinks the check inside the lock found needed, until their build starts. */
|
|
111
|
+
scheduledRelinks = new WeakSet();
|
|
112
|
+
/** The relinks of every language whose build runs, from its start until it settles or the next build starts. */
|
|
113
|
+
runningRelinks;
|
|
114
|
+
/** The rules of a repair while a relink's build waited or ran. Only one while it ran gets the next build in the chain. */
|
|
115
|
+
repairedAgain = new WeakMap();
|
|
116
|
+
/**
|
|
117
|
+
* Marks {@link scheduledRelinks} running as their builds start. Set on the
|
|
118
|
+
* first request only so it subscribes once, and never disposed.
|
|
119
|
+
*/
|
|
120
|
+
relinkStarts;
|
|
121
|
+
/** See {@link IntegrityServiceOptions.maxRelinkChain}. */
|
|
122
|
+
maxRelinkChain;
|
|
123
|
+
/** The rules that mutated each document in its latest `Linked`-phase {@link enforceIntegrity} pass, so a warning can name them. */
|
|
124
|
+
mutatingRules = new WeakMap();
|
|
97
125
|
constructor(services, options = {}) {
|
|
98
126
|
this.services = services;
|
|
99
127
|
this.textDocuments = services.shared.workspace.TextDocuments;
|
|
@@ -101,6 +129,12 @@ export class DefaultIntegrityService {
|
|
|
101
129
|
this.tracer = services.shared.Tracer.for(options.logName ?? 'Integrity').trace('instantiated');
|
|
102
130
|
this.documentBuilder = services.shared.workspace.DocumentBuilder;
|
|
103
131
|
this.syncMode = options.syncMode ?? 'silent';
|
|
132
|
+
this.maxRelinkChain = options.maxRelinkChain ?? 3;
|
|
133
|
+
if (!Number.isInteger(this.maxRelinkChain) || this.maxRelinkChain < 1) {
|
|
134
|
+
throw new RangeError(`The integrity service's maxRelinkChain option must be an integer of at least 1, not ${this.maxRelinkChain}.`);
|
|
135
|
+
}
|
|
136
|
+
this.runningRelinks = runningRelinksByServer.get(services.shared) ?? new Set();
|
|
137
|
+
runningRelinksByServer.set(services.shared, this.runningRelinks);
|
|
104
138
|
// Read the language's IntegrityRuleContribution group and let each
|
|
105
139
|
// contribution register one or many rules through this service (the
|
|
106
140
|
// declarative path; equivalent to imperative `register(rule)` calls).
|
|
@@ -132,6 +166,10 @@ export class DefaultIntegrityService {
|
|
|
132
166
|
// debug threshold is active, so the production `info` path allocates
|
|
133
167
|
// nothing and the hot rule loop stays a single const-branch off `session`.
|
|
134
168
|
const session = Logger.isLevelEnabled('debug') ? this.tracer.profile(`integrity ${DocumentState[phase]}`) : undefined;
|
|
169
|
+
// Before any skip or cancel, so text with parse errors also ends a replay.
|
|
170
|
+
for (const document of documents) {
|
|
171
|
+
this.forgetReplayOfOtherText(document);
|
|
172
|
+
}
|
|
135
173
|
for (const document of documents) {
|
|
136
174
|
if (this.isStructurallyBroken(document)) {
|
|
137
175
|
this.tracer.with(document.uri.toString()).debug('Parse errors: rules skipped until the document parses');
|
|
@@ -227,6 +265,13 @@ export class DefaultIntegrityService {
|
|
|
227
265
|
if (rulesByType.size === 0) {
|
|
228
266
|
return false;
|
|
229
267
|
}
|
|
268
|
+
// Read only after a Linked-phase repair. Cleared when such a pass starts, so
|
|
269
|
+
// one that records nothing leaves no older record to be named in its place.
|
|
270
|
+
const recorded = phase > DocumentState.Parsed;
|
|
271
|
+
if (recorded) {
|
|
272
|
+
this.mutatingRules.delete(document);
|
|
273
|
+
}
|
|
274
|
+
let mutating;
|
|
230
275
|
const relativeUri = this.services.shared.workspace.WorkspaceManager.wsRelativePath(document.uri);
|
|
231
276
|
for (const node of AstUtils.streamAst(document.parseResult.value)) {
|
|
232
277
|
for (const rule of rulesByType.get(node.$type) ?? NO_RULES) {
|
|
@@ -238,6 +283,12 @@ export class DefaultIntegrityService {
|
|
|
238
283
|
: rule.enforce(node, document, ruleLogger);
|
|
239
284
|
const mutated = isPromiseLike(enforced) ? await enforced : enforced;
|
|
240
285
|
if (mutated) {
|
|
286
|
+
if (recorded && mutating === undefined) {
|
|
287
|
+
// Only a mutating pass leads to a read, so a pass that mutates nothing allocates nothing.
|
|
288
|
+
mutating = new Set();
|
|
289
|
+
this.mutatingRules.set(document, mutating);
|
|
290
|
+
}
|
|
291
|
+
mutating?.add(rule);
|
|
241
292
|
ruleLogger.trace(`[${relativeUri}] Mutated ${this.formatNode(node)}`);
|
|
242
293
|
}
|
|
243
294
|
changed = mutated || changed;
|
|
@@ -311,6 +362,8 @@ export class DefaultIntegrityService {
|
|
|
311
362
|
// mutation in place would answer questions about this document from a
|
|
312
363
|
// parse of text nobody has. Reconciling discards it by re-reading the
|
|
313
364
|
// store, which is what the document now has to agree with.
|
|
365
|
+
//
|
|
366
|
+
// No dependents are relinked, because the edit's build relinks them.
|
|
314
367
|
await this.reconcileDocument(document, cancelToken);
|
|
315
368
|
return;
|
|
316
369
|
}
|
|
@@ -321,6 +374,17 @@ export class DefaultIntegrityService {
|
|
|
321
374
|
// on adopter-custom text-document types.
|
|
322
375
|
const textDocument = commit.status === 'committed' ? commit.document : this.textDocuments.update(document.textDocument, [{ text: newText }], version);
|
|
323
376
|
await this.syncCorrections(textDocument, parsedFrom);
|
|
377
|
+
if (document.state > DocumentState.Parsed) {
|
|
378
|
+
// Requested before the in-place relink, and an error logged, so neither skips the other.
|
|
379
|
+
try {
|
|
380
|
+
this.relinkDependents(document, { from: parsedFrom, to: newText });
|
|
381
|
+
}
|
|
382
|
+
catch (error) {
|
|
383
|
+
this.tracer
|
|
384
|
+
.with(document.uri.toString())
|
|
385
|
+
.error(`Relinking the dependents of a repaired document failed. ${describeErrorWithStack(error)}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
324
388
|
await this.reconcileDocument(document, cancelToken);
|
|
325
389
|
// Re-version against the REPAIRED text, after either branch. The repair is
|
|
326
390
|
// a content change the store has not seen: whatever reconciliation ran
|
|
@@ -379,6 +443,217 @@ export class DefaultIntegrityService {
|
|
|
379
443
|
await this.documentBuilder.reparseAndRelink(document, cancelToken);
|
|
380
444
|
}
|
|
381
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* Relink the documents that reference `document` in a build after this
|
|
448
|
+
* one, where it counts as changed. They were linked before the repair, so
|
|
449
|
+
* they hold nodes a re-parse replaced, or names the repair changed.
|
|
450
|
+
*
|
|
451
|
+
* Each document has at most one such build, its {@link DependentRelink},
|
|
452
|
+
* which goes through four steps.
|
|
453
|
+
*
|
|
454
|
+
* 1. Requested here, and kept in {@link relinkBuilds}. A repair while it
|
|
455
|
+
* waits is relinked by it.
|
|
456
|
+
* 2. Checked inside the lock, which skips it unless {@link isRelinkNeeded}.
|
|
457
|
+
* A needed one joins {@link scheduledRelinks}. While a build outside the
|
|
458
|
+
* lock runs, it is requested again once that build ends.
|
|
459
|
+
* 3. Started, when `onUpdate` reports its build. An explicit `build` starts
|
|
460
|
+
* none. It is in {@link runningRelinks} until it settles or the next
|
|
461
|
+
* build starts that overlaps no other. A repair while it runs is kept in
|
|
462
|
+
* {@link repairedAgain} and gets the next build.
|
|
463
|
+
* 4. Settled, when its request resolves, which drops it from every record.
|
|
464
|
+
*
|
|
465
|
+
* A repair of a document that a running build relinked continues that
|
|
466
|
+
* build's chain, which {@link maxRelinkChain} bounds. A repair with the
|
|
467
|
+
* {@link replayKey} of the one before requests none.
|
|
468
|
+
*/
|
|
469
|
+
relinkDependents(document, repair) {
|
|
470
|
+
const key = this.replayKey(document, repair);
|
|
471
|
+
if (key !== undefined && this.replayKeys.get(document)?.key === key) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
const rules = [...(this.mutatingRules.get(document) ?? [])];
|
|
475
|
+
const pending = this.relinkBuilds.get(document);
|
|
476
|
+
let requested = true;
|
|
477
|
+
if (pending !== undefined) {
|
|
478
|
+
this.repairedAgain.set(pending, rules);
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
const causes = [...this.runningRelinks].filter(relink => this.isRelinkedBy(document, relink.document));
|
|
482
|
+
requested = this.relinkInChain(document, Math.max(0, ...causes.map(relink => relink.chain)) + 1, rules);
|
|
483
|
+
}
|
|
484
|
+
// Recorded after the request, so one that throws or is past the bound leaves no key that skips the next repair.
|
|
485
|
+
if (key !== undefined && requested) {
|
|
486
|
+
this.replayKeys.set(document, { key, fromHash: textHash(repair.from) });
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Whether a build where `changed` counts as changed relinks `document`, as
|
|
491
|
+
* Langium's `shouldRelink` decides. Read from the document's links, because
|
|
492
|
+
* its build has dropped its indexed references until it indexes again.
|
|
493
|
+
*/
|
|
494
|
+
isRelinkedBy(document, changed) {
|
|
495
|
+
const target = changed.uri.toString();
|
|
496
|
+
return document.references.some(reference => {
|
|
497
|
+
const descriptions = isMultiReference(reference)
|
|
498
|
+
? reference.items.map(item => item.$nodeDescription)
|
|
499
|
+
: [reference.$nodeDescription];
|
|
500
|
+
return reference.error !== undefined || descriptions.some(description => description?.documentUri.toString() === target);
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Request the build at `chain`, or warn naming `rules` past
|
|
505
|
+
* {@link maxRelinkChain} and drop the {@link replayKey} of `document`.
|
|
506
|
+
* Returns whether it requested the build.
|
|
507
|
+
*/
|
|
508
|
+
relinkInChain(document, chain, rules) {
|
|
509
|
+
if (chain > this.maxRelinkChain) {
|
|
510
|
+
this.replayKeys.delete(document);
|
|
511
|
+
const builds = this.maxRelinkChain === 1 ? '1 build in a row that relinks' : `${this.maxRelinkChain} builds in a row that relink`;
|
|
512
|
+
this.tracer
|
|
513
|
+
.with(document.uri.toString())
|
|
514
|
+
.warn(`${this.formatRules(rules)} repaired documents in ${builds} their dependents, ` +
|
|
515
|
+
'which keep stale links until the next change. A rule that does not settle causes this, ' +
|
|
516
|
+
'or documents with linking errors that rules repair one after another.');
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
this.requestRelink(document, chain);
|
|
520
|
+
return true;
|
|
521
|
+
}
|
|
522
|
+
/** Request the build {@link relinkInChain} decided on, skipped unless {@link isRelinkNeeded}. */
|
|
523
|
+
requestRelink(document, chain) {
|
|
524
|
+
const uri = document.uri;
|
|
525
|
+
this.relinkStarts ??= this.documentBuilder.onUpdate(changed => this.startRelinks(changed));
|
|
526
|
+
const relink = { document, chain };
|
|
527
|
+
let unlockedBuild;
|
|
528
|
+
const stillNeeded = () => {
|
|
529
|
+
// No locked build runs during the lock read, so one seen here runs outside the lock.
|
|
530
|
+
unlockedBuild = this.documentBuilder.activeBuild;
|
|
531
|
+
if (unlockedBuild !== undefined) {
|
|
532
|
+
return false;
|
|
533
|
+
}
|
|
534
|
+
// Marked before the deferral check, so a deferred relink stays scheduled until it settles.
|
|
535
|
+
const needed = this.isRelinkNeeded(document);
|
|
536
|
+
if (needed) {
|
|
537
|
+
this.scheduledRelinks.add(relink);
|
|
538
|
+
}
|
|
539
|
+
return needed;
|
|
540
|
+
};
|
|
541
|
+
const settled = () => {
|
|
542
|
+
this.relinkBuilds.delete(document);
|
|
543
|
+
this.scheduledRelinks.delete(relink);
|
|
544
|
+
this.runningRelinks.delete(relink);
|
|
545
|
+
};
|
|
546
|
+
const requestFailed = (error) => {
|
|
547
|
+
// No build relinks the dependents, so the same repair again needs one.
|
|
548
|
+
this.replayKeys.delete(document);
|
|
549
|
+
this.tracer
|
|
550
|
+
.with(uri.toString())
|
|
551
|
+
.error(`Requesting the next build that relinks the dependents of a repaired document failed. ${describeErrorWithStack(error)}`);
|
|
552
|
+
};
|
|
553
|
+
const request = this.services.shared.workspace.VersionSyncService.requestRecoveryBuild(uri, { stillNeeded });
|
|
554
|
+
// Recorded after the request, so one that throws leaves no relink that never settles.
|
|
555
|
+
this.relinkBuilds.set(document, relink);
|
|
556
|
+
request
|
|
557
|
+
.then(() => {
|
|
558
|
+
if (unlockedBuild !== undefined) {
|
|
559
|
+
// Requested again once that build ends, so the two never overlap. A repair meanwhile waits for it.
|
|
560
|
+
unlockedBuild
|
|
561
|
+
.then(() => {
|
|
562
|
+
settled();
|
|
563
|
+
this.requestRelink(document, chain);
|
|
564
|
+
})
|
|
565
|
+
.catch(requestFailed);
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
// A build that never started, or was cancelled and not run again,
|
|
569
|
+
// leaves the repair to the build that held it back. Read before the
|
|
570
|
+
// next build's `onUpdate` clears it, which the lock's queue orders later.
|
|
571
|
+
const ran = this.runningRelinks.has(relink);
|
|
572
|
+
settled();
|
|
573
|
+
const again = this.repairedAgain.get(relink);
|
|
574
|
+
if (ran && again !== undefined) {
|
|
575
|
+
this.relinkInChain(document, chain + 1, again);
|
|
576
|
+
}
|
|
577
|
+
}, (error) => {
|
|
578
|
+
settled();
|
|
579
|
+
// The dependents were not relinked, so the same repair again needs its build.
|
|
580
|
+
this.replayKeys.delete(document);
|
|
581
|
+
this.tracer
|
|
582
|
+
.with(uri.toString())
|
|
583
|
+
.error(`The build that relinks the dependents of a repaired document failed. ${describeErrorWithStack(error)}`);
|
|
584
|
+
})
|
|
585
|
+
.catch(requestFailed);
|
|
586
|
+
}
|
|
587
|
+
/** Mark the {@link scheduledRelinks} of the `changed` documents running, as the build that carries them starts. */
|
|
588
|
+
startRelinks(changed) {
|
|
589
|
+
// An explicit build relinks no dependents and ends no build it overlaps.
|
|
590
|
+
if (this.documentBuilder.isInsideBuildUpdate()) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
// The build before this one ended, done or cancelled, so its relinks run no more,
|
|
594
|
+
// unless this one overlaps it, as a reentrant build does.
|
|
595
|
+
// The set is shared by every language. Each service clears only its own,
|
|
596
|
+
// because another's listener may already have marked this build's relinks running.
|
|
597
|
+
if (!this.documentBuilder.overlapsRunningBuild()) {
|
|
598
|
+
for (const relink of this.runningRelinks) {
|
|
599
|
+
if (this.relinkBuilds.get(relink.document) === relink) {
|
|
600
|
+
this.runningRelinks.delete(relink);
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
const documents = this.services.shared.workspace.LangiumDocuments;
|
|
605
|
+
for (const uri of changed) {
|
|
606
|
+
const document = documents.getDocument(uri);
|
|
607
|
+
const relink = document === undefined ? undefined : this.relinkBuilds.get(document);
|
|
608
|
+
if (relink !== undefined && this.scheduledRelinks.delete(relink)) {
|
|
609
|
+
// The starting build relinks any repair while it waited.
|
|
610
|
+
this.repairedAgain.delete(relink);
|
|
611
|
+
this.runningRelinks.add(relink);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Whether a build where `document` counts as changed relinks another
|
|
617
|
+
* document, by the builder's own test, which counts a document a cancelled
|
|
618
|
+
* build left unindexed as relinked.
|
|
619
|
+
*/
|
|
620
|
+
isRelinkNeeded(document) {
|
|
621
|
+
const documents = this.services.shared.workspace.LangiumDocuments;
|
|
622
|
+
const changed = new Set([document.uri.toString()]);
|
|
623
|
+
return (documents.getDocument(document.uri) === document &&
|
|
624
|
+
documents.all.some(other => other !== document && this.documentBuilder.shouldRelink(other, changed)));
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Whether `document` stages its repairs rather than writing them, as a
|
|
628
|
+
* closed document does in `'editor'` mode, so its source keeps the
|
|
629
|
+
* unrepaired text.
|
|
630
|
+
*/
|
|
631
|
+
stagesRepairs(document) {
|
|
632
|
+
return this.syncMode === 'editor' && !this.textDocuments.isOpen(document.textDocument.uri);
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* What tells `repair` made again from the same text apart from a new one,
|
|
636
|
+
* for a document that {@link stagesRepairs}, which reads the unrepaired
|
|
637
|
+
* text again in every build that re-parses it after its CST was shed. Such
|
|
638
|
+
* a repair requests no build, because the build that re-parsed the
|
|
639
|
+
* document relinked its dependents, and another would replay it again.
|
|
640
|
+
* Hashes, so the record keeps no text the shed freed.
|
|
641
|
+
*/
|
|
642
|
+
replayKey(document, repair) {
|
|
643
|
+
return this.stagesRepairs(document) ? textHash(repair.from) + textHash(repair.to) : undefined;
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Drop the {@link replayKey} of `document` once it was parsed from other
|
|
647
|
+
* text than its repair came from, such as a save and a revert. A repair of
|
|
648
|
+
* that text again is a new one, whose dependents need their build.
|
|
649
|
+
*/
|
|
650
|
+
forgetReplayOfOtherText(document) {
|
|
651
|
+
const recorded = this.replayKeys.get(document);
|
|
652
|
+
const parsedFrom = document.parseResult.value.$cstNode?.root.fullText;
|
|
653
|
+
if (recorded !== undefined && parsedFrom !== undefined && recorded.fromHash !== textHash(parsedFrom)) {
|
|
654
|
+
this.replayKeys.delete(document);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
382
657
|
/**
|
|
383
658
|
* Propagate a correction to disk and/or the editor. The corrected text is
|
|
384
659
|
* already in the synced store (in-place in {@link resyncDocument}); this
|
|
@@ -518,13 +793,21 @@ export class DefaultIntegrityService {
|
|
|
518
793
|
}
|
|
519
794
|
/**
|
|
520
795
|
* Format a rule's name for inclusion in user-facing diagnostic strings
|
|
521
|
-
* (error messages thrown during registration). Defaults to
|
|
796
|
+
* (error messages thrown during registration, and log lines). Defaults to
|
|
522
797
|
* `label ?? id`. Adopters override when their error reporting needs
|
|
523
798
|
* richer rule context.
|
|
524
799
|
*/
|
|
525
800
|
formatRule(rule) {
|
|
526
801
|
return rule.label ?? rule.id;
|
|
527
802
|
}
|
|
803
|
+
/** `rules` as the subject of a log line, or a rule left unnamed when an override recorded none. */
|
|
804
|
+
formatRules(rules) {
|
|
805
|
+
if (rules.length === 0) {
|
|
806
|
+
return 'An integrity rule';
|
|
807
|
+
}
|
|
808
|
+
const names = rules.map(rule => `'${this.formatRule(rule)}'`).join(', ');
|
|
809
|
+
return rules.length === 1 ? `Integrity rule ${names}` : `Integrity rules ${names}`;
|
|
810
|
+
}
|
|
528
811
|
/**
|
|
529
812
|
* Format an AST node for the per-mutation `trace` log line. Returns
|
|
530
813
|
* `'TypeName'` or `"TypeName('label')"` when the node carries a string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrity-service.js","sourceRoot":"","sources":["../../../src/langium/integrity/integrity-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integrity-service.js","sourceRoot":"","sources":["../../../src/langium/integrity/integrity-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,14 +49,19 @@ export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
|
49
49
|
protected readonly tracer: Tracer;
|
|
50
50
|
protected readonly stalledWriteWarnMs: number;
|
|
51
51
|
protected runningWrite?: RunningWrite;
|
|
52
|
+
/** Writes queued and not yet started. */
|
|
53
|
+
protected queuedWrites: number;
|
|
52
54
|
constructor(services: Pick<ServerSharedServicesMinimal, 'Clock' | 'Tracer'>, options?: HydraniumWorkspaceLockOptions);
|
|
53
55
|
/**
|
|
54
|
-
* How many calls
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
56
|
+
* How many calls to `write` or `cancelWrite` came while a write was still
|
|
57
|
+
* queued or running. A caller that reads this right after queuing a
|
|
58
|
+
* write, and reads the same number later, holds a write nothing has
|
|
59
|
+
* cancelled, whether it is still queued or already running. Its token
|
|
60
|
+
* answers that only once the write runs, since a queued write has not been
|
|
61
|
+
* handed it yet. A different number read after the caller's write ended
|
|
62
|
+
* does not prove that write was cancelled, since a later write that
|
|
63
|
+
* cancels another queued or running write counts too. A caller that
|
|
64
|
+
* retries on it builds once more than it needs to.
|
|
60
65
|
*/
|
|
61
66
|
get writeCancellations(): number;
|
|
62
67
|
write(action: (token: CancellationToken) => MaybePromise<void>): Promise<void>;
|
|
@@ -64,8 +69,10 @@ export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
|
64
69
|
protected runWrite(action: (token: CancellationToken) => MaybePromise<void>, token: CancellationToken): Promise<void>;
|
|
65
70
|
/**
|
|
66
71
|
* Counted here rather than in {@link write}, because Langium's `write` cancels
|
|
67
|
-
* through this method too. A write
|
|
68
|
-
*
|
|
72
|
+
* through this method too. A write that has ended is not counted, so the
|
|
73
|
+
* next write does not count as cancelling it. A write running when this is
|
|
74
|
+
* called has been cancelled, by this call or an earlier one, so its timer
|
|
75
|
+
* starts here.
|
|
69
76
|
*/
|
|
70
77
|
cancelWrite(): void;
|
|
71
78
|
protected reportStalledWrite(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,8DAA8D;AAC9D,MAAM,WAAW,6BAA8B,SAAQ,cAAc;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID,6GAA6G;AAC7G,MAAM,WAAW,YAAY;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,8DAA8D;AAC9D,MAAM,WAAW,6BAA8B,SAAQ,cAAc;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID,6GAA6G;AAC7G,MAAM,WAAW,YAAY;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACtC,yCAAyC;IACzC,SAAS,CAAC,YAAY,SAAK;IAE3B,YAAY,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,OAAO,GAAE,6BAAkC,EAKvH;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAEQ,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtF;IAED,yFAAyF;IACzF,UAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1H;IAED;;;;;;OAMG;IACM,WAAW,IAAI,IAAI,CAS3B;IAED,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAOnC;CACH"}
|
|
@@ -33,6 +33,8 @@ export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
|
33
33
|
tracer;
|
|
34
34
|
stalledWriteWarnMs;
|
|
35
35
|
runningWrite;
|
|
36
|
+
/** Writes queued and not yet started. */
|
|
37
|
+
queuedWrites = 0;
|
|
36
38
|
constructor(services, options = {}) {
|
|
37
39
|
super();
|
|
38
40
|
this.clock = services.Clock;
|
|
@@ -40,18 +42,27 @@ export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
|
40
42
|
this.stalledWriteWarnMs = options.stalledWriteWarnMs ?? DEFAULT_STALLED_WRITE_WARN_MS;
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
|
-
* How many calls
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
45
|
+
* How many calls to `write` or `cancelWrite` came while a write was still
|
|
46
|
+
* queued or running. A caller that reads this right after queuing a
|
|
47
|
+
* write, and reads the same number later, holds a write nothing has
|
|
48
|
+
* cancelled, whether it is still queued or already running. Its token
|
|
49
|
+
* answers that only once the write runs, since a queued write has not been
|
|
50
|
+
* handed it yet. A different number read after the caller's write ended
|
|
51
|
+
* does not prove that write was cancelled, since a later write that
|
|
52
|
+
* cancels another queued or running write counts too. A caller that
|
|
53
|
+
* retries on it builds once more than it needs to.
|
|
49
54
|
*/
|
|
50
55
|
get writeCancellations() {
|
|
51
56
|
return this.cancelledWriteCount;
|
|
52
57
|
}
|
|
53
58
|
write(action) {
|
|
54
|
-
|
|
59
|
+
const queued = super.write(token => {
|
|
60
|
+
this.queuedWrites--;
|
|
61
|
+
return runInWriteLockScope(() => this.runWrite(action, token));
|
|
62
|
+
});
|
|
63
|
+
// Counted after Langium's `write` has cancelled the write before it, so the new write does not count itself.
|
|
64
|
+
this.queuedWrites++;
|
|
65
|
+
return queued;
|
|
55
66
|
}
|
|
56
67
|
/** Run `action` as {@link runningWrite}, so a cancellation while it runs can time it. */
|
|
57
68
|
async runWrite(action, token) {
|
|
@@ -69,11 +80,15 @@ export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
|
|
|
69
80
|
}
|
|
70
81
|
/**
|
|
71
82
|
* Counted here rather than in {@link write}, because Langium's `write` cancels
|
|
72
|
-
* through this method too. A write
|
|
73
|
-
*
|
|
83
|
+
* through this method too. A write that has ended is not counted, so the
|
|
84
|
+
* next write does not count as cancelling it. A write running when this is
|
|
85
|
+
* called has been cancelled, by this call or an earlier one, so its timer
|
|
86
|
+
* starts here.
|
|
74
87
|
*/
|
|
75
88
|
cancelWrite() {
|
|
76
|
-
this.
|
|
89
|
+
if (this.queuedWrites > 0 || this.runningWrite !== undefined) {
|
|
90
|
+
this.cancelledWriteCount++;
|
|
91
|
+
}
|
|
77
92
|
const running = this.runningWrite;
|
|
78
93
|
if (running && !running.stallTimer && this.stalledWriteWarnMs > 0) {
|
|
79
94
|
running.stallTimer = this.clock.setTimer(() => this.reportStalledWrite(), this.stalledWriteWarnMs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAI7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAa5D,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAO7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IACf,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,kBAAkB,CAAS;IACpC,YAAY,CAAgB;
|
|
1
|
+
{"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAI7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAa5D,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAO7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IACf,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,kBAAkB,CAAS;IACpC,YAAY,CAAgB;IACtC,yCAAyC;IAC/B,YAAY,GAAG,CAAC,CAAC;IAE3B,YAAY,QAA+D,EAAE,OAAO,GAAkC,EAAE;QACrH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IACzF,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,MAAwD;QACpE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,6GAA6G;QAC7G,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IACjB,CAAC;IAED,yFAAyF;IAC/E,KAAK,CAAC,QAAQ,CAAC,MAAwD,EAAE,KAAwB;QACxG,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;gBAAS,CAAC;YACR,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YACjC,CAAC;QACJ,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACM,WAAW;QACjB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtG,CAAC;QACD,KAAK,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAES,kBAAkB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CACb,4BAA4B,IAAI,CAAC,kBAAkB,wEAAwE;YACxH,kHAAkH;YAClH,+FAA+F;YAC/F,+DAA+D,CACpE,CAAC;IACL,CAAC;CACH"}
|
|
@@ -60,7 +60,7 @@ export interface StubWaitUntilGate {
|
|
|
60
60
|
* stub claims but doesn't meaningfully implement) fails with a clear
|
|
61
61
|
* message instead of "undefined is not a function".
|
|
62
62
|
*/
|
|
63
|
-
export interface StubDocumentBuilder extends Pick<DocumentBuilder, 'update' | 'onDocumentPhase' | 'onUpdate' | 'build' | 'onBuildPhase' | 'resetToState' | 'updateBuildOptions'>, Pick<HydraniumDocumentBuilder, 'onDocumentPhaseDelivered' | 'scheduleUpdate' | 'finalBuildState' | 'onBuildEnded' | 'isInsideBuildUpdate' | 'activeBuild' | 'markNextReason' | 'shouldValidateDocument'> {
|
|
63
|
+
export interface StubDocumentBuilder extends Pick<DocumentBuilder, 'update' | 'onDocumentPhase' | 'onUpdate' | 'build' | 'onBuildPhase' | 'resetToState' | 'updateBuildOptions'>, Pick<HydraniumDocumentBuilder, 'onDocumentPhaseDelivered' | 'scheduleUpdate' | 'finalBuildState' | 'onBuildEnded' | 'isInsideBuildUpdate' | 'overlapsRunningBuild' | 'shouldRelink' | 'activeBuild' | 'markNextReason' | 'shouldValidateDocument'> {
|
|
64
64
|
/**
|
|
65
65
|
* Single-overload stub of {@link DocumentBuilder.waitUntil}. Real has
|
|
66
66
|
* two overloads (`(state, cancelToken?): Promise<void>` and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub-document-builder.d.ts","sourceRoot":"","sources":["../../src/testing/stub-document-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,eAAe,EAGpB,KAAK,aAAa,EAGlB,KAAK,eAAe,EACpB,KAAK,GAAG,EACR,KAAK,aAAa,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,iBAAiB,EAAc,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EACJ,KAAK,eAAe,EAGpB,wBAAwB,EAC1B,MAAM,iDAAiD,CAAC;AAEzD,iEAAiE;AACjE,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,OAAO,EAAE;IACzD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC/B;;;;;;;OAOG;IACH,OAAO,IAAI,IAAI,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,mBACd,SACG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,GAAG,oBAAoB,CAAC,EACnI,IAAI,CACD,wBAAwB,EACtB,0BAA0B,GAC1B,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,qBAAqB,GACrB,aAAa,GACb,gBAAgB,GAChB,wBAAwB,CAC5B;IACJ;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACrE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9F;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClG,+DAA+D;IAC/D,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACnD;;;;;;OAMG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtG;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C;;;OAGG;IACH,iBAAiB,IAAI,iBAAiB,CAAC;IACvC,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAAC;CAChB;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"stub-document-builder.d.ts","sourceRoot":"","sources":["../../src/testing/stub-document-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EACJ,KAAK,eAAe,EAGpB,KAAK,aAAa,EAGlB,KAAK,eAAe,EACpB,KAAK,GAAG,EACR,KAAK,aAAa,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,iBAAiB,EAAc,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EACJ,KAAK,eAAe,EAGpB,wBAAwB,EAC1B,MAAM,iDAAiD,CAAC;AAEzD,iEAAiE;AACjE,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,OAAO,EAAE;IACzD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC/B;;;;;;;OAOG;IACH,OAAO,IAAI,IAAI,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,mBACd,SACG,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,GAAG,oBAAoB,CAAC,EACnI,IAAI,CACD,wBAAwB,EACtB,0BAA0B,GAC1B,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,qBAAqB,GACrB,sBAAsB,GACtB,cAAc,GACd,aAAa,GACb,gBAAgB,GAChB,wBAAwB,CAC5B;IACJ;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACrE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9F;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClG,+DAA+D;IAC/D,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACnD;;;;;;OAMG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtG;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C;;;OAGG;IACH,iBAAiB,IAAI,iBAAiB,CAAC;IACvC,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAAC;CAChB;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,mBAAmB,CAkN1F"}
|
|
@@ -62,6 +62,9 @@ export function makeStubDocumentBuilder(workspaceLock) {
|
|
|
62
62
|
shouldValidateDocument: () => Boolean(stub.updateBuildOptions.validation),
|
|
63
63
|
// The stub never runs a build of its own.
|
|
64
64
|
isInsideBuildUpdate: () => false,
|
|
65
|
+
overlapsRunningBuild: () => false,
|
|
66
|
+
// It builds no document, so a change relinks none.
|
|
67
|
+
shouldRelink: () => false,
|
|
65
68
|
activeBuild: undefined,
|
|
66
69
|
markNextReason: () => undefined,
|
|
67
70
|
get updateCalls() {
|