@hydranium/core 1.0.0-next.335 → 1.0.0-next.338

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 CHANGED
@@ -30,7 +30,7 @@ npm install @hydranium/core
30
30
  | `vscode-languageserver` | `~10.0.1` |
31
31
  | `vscode-languageserver-protocol` | `~3.18.1` |
32
32
  | `vscode-languageserver-textdocument` | `^1.0.12` |
33
- | `vscode-languageserver-types` | `^3.17.5` |
33
+ | `vscode-languageserver-types` | `^3.18.0` |
34
34
 
35
35
  Import Langium through `@hydranium/langium`, so your project uses the same copy
36
36
  as the framework. `@playwright/test` is optional; only `./testing/playwright`
@@ -1343,7 +1343,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
1343
1343
  const text = this.messageRenderer.renderDiagnostic(diagnostic);
1344
1344
  // Against the message's STRING FORM, not the field. `renderDiagnostic`
1345
1345
  // answers a `string` by contract, while `Diagnostic.message` is
1346
- // `string | MarkupContent` since LSP 3.17 — so comparing the answer
1346
+ // `string | MarkupContent` since LSP 3.18 — so comparing the answer
1347
1347
  // against the field never matches for a markup message, and a pass
1348
1348
  // that replaced on mismatch flattened every un-identified markup
1349
1349
  // diagnostic to its own plain text. That is silent data loss on the
@@ -116,6 +116,36 @@ export interface IndentationTokenNames {
116
116
  readonly indent: string;
117
117
  readonly dedent: string;
118
118
  }
119
+ /**
120
+ * A container a run of comment lines can be placed in: the run's own, or one
121
+ * it is lifted into when a block's DEDENT follows the run. `last` is the index
122
+ * in its content the run is placed after, `closed` the block the run is lifted
123
+ * out of, and `liftBelow` the column a comment line has to start left of to be
124
+ * lifted this far.
125
+ */
126
+ export interface CommentLiftTarget {
127
+ readonly container: CompositeCstNode;
128
+ readonly last: number;
129
+ readonly closed?: CompositeCstNode;
130
+ readonly liftBelow?: number;
131
+ }
132
+ /**
133
+ * A run of hidden nodes in `content`, from `start` to `end`, with the syntax
134
+ * before it and the containers its comments can be placed in, innermost first.
135
+ */
136
+ export interface CommentRun {
137
+ readonly content: readonly CstNode[];
138
+ readonly start: number;
139
+ readonly end: number;
140
+ readonly previous?: {
141
+ readonly end: number;
142
+ };
143
+ readonly targets: readonly CommentLiftTarget[];
144
+ /** The nodes {@link CommentPreserver.neighbours} finds before the run, in order. */
145
+ readonly before: readonly CstNode[];
146
+ /** Per target, the nodes {@link CommentPreserver.neighbours} finds after its `last`. */
147
+ readonly after: readonly (readonly CstNode[])[];
148
+ }
119
149
  /**
120
150
  * One splice, with what it takes to check the risky kind afterwards.
121
151
  *
@@ -166,6 +196,21 @@ export declare class CommentPreserver implements TriviaPreserver<CommentTrivia>
166
196
  protected readonly maxIsolatedEdits: number;
167
197
  protected commentTokenNames?: readonly string[];
168
198
  protected indentationTokenNames?: IndentationTokenNames | null;
199
+ /**
200
+ * Set for the duration of one {@link extract}: the run
201
+ * {@link resolveCommentRun} resolved last, so the run's next comment reuses
202
+ * it.
203
+ */
204
+ protected commentRun?: CommentRun;
205
+ /**
206
+ * Set for the duration of one {@link extract}: {@link syntaxSpan} per node,
207
+ * as a block a run is lifted out of would otherwise be measured once per
208
+ * comment.
209
+ */
210
+ protected spanMemo?: Map<CstNode, {
211
+ readonly offset: number;
212
+ readonly end: number;
213
+ } | undefined>;
169
214
  /** Set for the duration of one {@link apply}; see {@link cachedAnchorKey}. */
170
215
  protected keyMemo?: Map<AstNode, string | undefined>;
171
216
  /** Set for the duration of one {@link apply}; see {@link ambiguousRetainedKey}. */
@@ -261,8 +306,10 @@ export declare class CommentPreserver implements TriviaPreserver<CommentTrivia>
261
306
  */
262
307
  protected classify(comment: CstNode, index: number, container: CompositeCstNode, source: string): DocumentComment;
263
308
  /**
264
- * Resolves the container {@link classify} anchors `comment` in and its
265
- * siblings there without INDENT and DEDENT tokens.
309
+ * Resolves the container {@link classify} anchors `comment` in, and the
310
+ * comment's adjacent siblings there and the nearest syntax on each side,
311
+ * without INDENT and DEDENT tokens. The content is that window, not all of
312
+ * the container's siblings.
266
313
  *
267
314
  * An indentation-aware lexer can emit a block's DEDENT after the comment
268
315
  * lines that follow the block, so the parser nests them in it. An own-line
@@ -275,10 +322,25 @@ export declare class CommentPreserver implements TriviaPreserver<CommentTrivia>
275
322
  readonly content: readonly CstNode[];
276
323
  readonly index: number;
277
324
  };
278
- /** Whether only hidden and indentation tokens follow `node` in `content`. */
279
- protected closesAfter(content: readonly CstNode[], node: CstNode): boolean;
280
- /** The column the last INDENT before `node` in `content` opens, `undefined` without one. */
281
- protected openedColumn(content: readonly CstNode[], node: CstNode, source: string): number | undefined;
325
+ /**
326
+ * The run of hidden nodes around `container.content[index]`, and the blocks
327
+ * it can be lifted out of: each that ends right after the run and whose
328
+ * INDENT opened a column, up to the first that does not.
329
+ */
330
+ protected resolveCommentRun(index: number, container: CompositeCstNode, source: string): CommentRun;
331
+ /** The nodes of `content` from `from` in `step` direction up to the first that is syntax, without indentation tokens. */
332
+ protected neighbours(content: readonly CstNode[], from: number, step: 1 | -1): CstNode[];
333
+ /** Whether only hidden and indentation tokens follow `index` in `content`. */
334
+ protected closesAfter(content: readonly CstNode[], index: number): boolean;
335
+ /** The column the last INDENT before `content[index]` opens, `undefined` without one. */
336
+ protected openedColumn(content: readonly CstNode[], index: number, source: string): number | undefined;
337
+ /**
338
+ * The index of `node` in `content`, found by offset: `indexOf` per lifted
339
+ * block makes extraction quadratic in a block's siblings.
340
+ */
341
+ protected indexIn(content: readonly CstNode[], node: CstNode): number;
342
+ /** Whether `text` has a line break from `from` up to `to`, without copying the span. */
343
+ protected breaksLine(text: string, from: number, to: number): boolean;
282
344
  /** The column of `offset` in `text`. */
283
345
  protected columnAt(text: string, offset: number): number;
284
346
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"comment-preserver.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/comment-preserver.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACJ,KAAK,OAAO,EAEZ,KAAK,gBAAgB,EACrB,KAAK,OAAO,EAKZ,KAAK,eAAe,EACpB,KAAK,GAAG,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,qBAAqB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEpI,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC/B;AAED,yDAAyD;AACzD,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACrC;AAUD;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,YAAW,eAAe,CAAC,aAAa,CAAC;IAwBjE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IAvBzD;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,cAAc;IAE5B,gEAAgE;IAChE,MAAM,CAAC,QAAQ,CAAC,sBAAsB,MAAM;IAE5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC5C,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,SAAS,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC/D,8EAA8E;IAC9E,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD,mFAAmF;IACnF,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,YACsB,QAAQ,EAAE,yBAAyB,EACtD,OAAO,GAAE,uBAA4B,EAKvC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAQlD;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,wBAAwB,IAAI,qBAAqB,GAAG,SAAS,CAStE;IAED,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAI9C;IAED;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAOjG;IAED,4GAA4G;IAC5G,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAYpE;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAarD;IAED;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,CAehD;IAED,0FAA0F;IAC1F,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,CAYpH;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAkEhH;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,gBAAgB,CACvB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,MAAM,GACd;QAAE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAiCxG;IAED,6EAA6E;IAC7E,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAEzE;IAED,4FAA4F;IAC5F,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQrG;IAED,wCAAwC;IACxC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;IAED;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;IAED,wEAAwE;IACxE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAejE;IAED,mEAAmE;IACnE,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAanF;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAS3D;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,GAAG,SAAS,CAQnE;IAED,iEAAiE;IACjE,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAuFpF;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAK/F;IAED;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAWxF;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAoCxE;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA6BlG;IAED;;;;;;;;;;OAUG;IACH,SAAS,CAAC,qBAAqB,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,GAClB,GAAG,CAAC,eAAe,CAAC,CA6CtB;IAED,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAWvG;IAED,SAAS,CAAC,mBAAmB,CAC1B,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CA+CtB;IAED,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAkBrE;IAED;;;;;;;;;;OAUG;IACH,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE9D;IAED,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAqB1D;IAED,iFAAiF;IACjF,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAkD9G;IAED;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAuBzE;IAED,6EAA6E;IAC7E,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjE;IAED,wEAAwE;IACxE,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAElE;IAED;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1D;IAED,yFAAyF;IACzF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAmDlF;CACH;AAED,iFAAiF;AACjF,qBAAa,4BAA6B,YAAW,kBAAkB;IACxD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB;IAAlE,YAA+B,QAAQ,EAAE,yBAAyB,EAAI;IAEtE,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEvD;CACH"}
1
+ {"version":3,"file":"comment-preserver.d.ts","sourceRoot":"","sources":["../../../src/langium/trivia/comment-preserver.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,18 @@ export class CommentPreserver {
42
42
  maxIsolatedEdits;
43
43
  commentTokenNames;
44
44
  indentationTokenNames;
45
+ /**
46
+ * Set for the duration of one {@link extract}: the run
47
+ * {@link resolveCommentRun} resolved last, so the run's next comment reuses
48
+ * it.
49
+ */
50
+ commentRun;
51
+ /**
52
+ * Set for the duration of one {@link extract}: {@link syntaxSpan} per node,
53
+ * as a block a run is lifted out of would otherwise be measured once per
54
+ * comment.
55
+ */
56
+ spanMemo;
45
57
  /** Set for the duration of one {@link apply}; see {@link cachedAnchorKey}. */
46
58
  keyMemo;
47
59
  /** Set for the duration of one {@link apply}; see {@link ambiguousRetainedKey}. */
@@ -102,9 +114,14 @@ export class CommentPreserver {
102
114
  if (this.getIndentationTokenNames() === undefined) {
103
115
  return node;
104
116
  }
117
+ if (this.spanMemo?.has(node)) {
118
+ return this.spanMemo.get(node);
119
+ }
105
120
  const first = this.edgeToken(node, 1);
106
121
  const last = this.edgeToken(node, -1);
107
- return first && last && { offset: first.offset, end: last.end };
122
+ const span = first && last && { offset: first.offset, end: last.end };
123
+ this.spanMemo?.set(node, span);
124
+ return span;
108
125
  }
109
126
  /** The first token of `node` for a `step` of 1, the last for -1, that is neither hidden nor indentation. */
110
127
  edgeToken(node, step) {
@@ -194,7 +211,15 @@ export class CommentPreserver {
194
211
  }
195
212
  const source = document.textDocument.getText();
196
213
  const comments = [];
197
- this.captureFrom(root, source, commentTokens, comments);
214
+ this.commentRun = undefined;
215
+ this.spanMemo = new Map();
216
+ try {
217
+ this.captureFrom(root, source, commentTokens, comments);
218
+ }
219
+ finally {
220
+ this.commentRun = undefined;
221
+ this.spanMemo = undefined;
222
+ }
198
223
  return { comments, sourceRoot: document.parseResult.value };
199
224
  }
200
225
  /** Recursive half of {@link extract}: one composite node's content, then its children. */
@@ -243,14 +268,21 @@ export class CommentPreserver {
243
268
  const following = content[at + 1];
244
269
  const blankLinesAfter = following === undefined ? 0 : this.countBlankLines(source.slice(comment.end, offsetOf(following)));
245
270
  const preceding = at > 0 ? content[at - 1] : undefined;
246
- const blankLinesBefore = preceding === undefined ? 0 : this.countBlankLines(source.slice(endOf(preceding), comment.offset));
271
+ // From the last text before the comment: a block it is lifted out of can
272
+ // end with comment lines of its own, after the block's syntax.
273
+ const precedingEnd = preceding === undefined ? comment.offset : endOf(preceding);
274
+ let gapStart = comment.offset;
275
+ while (gapStart > precedingEnd && /\s/.test(source[gapStart - 1])) {
276
+ gapStart--;
277
+ }
278
+ const blankLinesBefore = preceding === undefined ? 0 : this.countBlankLines(source.slice(gapStart, comment.offset));
247
279
  // Only a comment that OWNS its line can be reindented — one sharing a line
248
280
  // with code keeps whatever spacing that line gives it.
249
281
  const lineStart = source.lastIndexOf('\n', comment.offset - 1) + 1;
250
282
  const beforeOnLine = source.slice(lineStart, comment.offset);
251
283
  const sourceIndent = beforeOnLine.trim().length === 0 ? beforeOnLine : undefined;
252
284
  const text = this.normalizeLineEndings(comment.text);
253
- const sharesLineWithPrevious = previous !== undefined && !source.slice(endOf(previous), comment.offset).includes('\n');
285
+ const sharesLineWithPrevious = previous !== undefined && !this.breaksLine(source, endOf(previous), comment.offset);
254
286
  if (sharesLineWithPrevious) {
255
287
  // On the same line as whatever precedes it, so it annotates that line.
256
288
  // When the preceding sibling is the CONTAINER's own syntax — an opening
@@ -281,8 +313,10 @@ export class CommentPreserver {
281
313
  return { text, anchor: owner.astNode, placement, blankLinesAfter, blankLinesBefore, sourceIndent };
282
314
  }
283
315
  /**
284
- * Resolves the container {@link classify} anchors `comment` in and its
285
- * siblings there without INDENT and DEDENT tokens.
316
+ * Resolves the container {@link classify} anchors `comment` in, and the
317
+ * comment's adjacent siblings there and the nearest syntax on each side,
318
+ * without INDENT and DEDENT tokens. The content is that window, not all of
319
+ * the container's siblings.
286
320
  *
287
321
  * An indentation-aware lexer can emit a block's DEDENT after the comment
288
322
  * lines that follow the block, so the parser nests them in it. An own-line
@@ -291,10 +325,34 @@ export class CommentPreserver {
291
325
  * after that block in the enclosing container.
292
326
  */
293
327
  placeAmongSyntax(comment, index, container, source) {
294
- if (this.getIndentationTokenNames() === undefined) {
295
- return { container, content: container.content, index };
328
+ const content = container.content;
329
+ const run = this.resolveCommentRun(index, container, source);
330
+ let placed = 0;
331
+ if (run.targets.length > 1 && (run.previous === undefined || this.breaksLine(source, run.previous.end, comment.offset))) {
332
+ const column = this.columnAt(source, comment.offset);
333
+ while (placed + 1 < run.targets.length && column < (run.targets[placed + 1].liftBelow ?? 0)) {
334
+ placed++;
335
+ }
296
336
  }
337
+ const { container: parent, closed } = run.targets[placed];
338
+ const before = closed ? [closed] : run.before;
339
+ const around = content.slice(Math.max(index - 1, run.start), Math.min(index + 1, run.end) + 1);
340
+ const view = [...before, ...around, ...run.after[placed]];
341
+ return { container: parent, content: view, index: before.length + (index > run.start ? 1 : 0) };
342
+ }
343
+ /**
344
+ * The run of hidden nodes around `container.content[index]`, and the blocks
345
+ * it can be lifted out of: each that ends right after the run and whose
346
+ * INDENT opened a column, up to the first that does not.
347
+ */
348
+ resolveCommentRun(index, container, source) {
297
349
  const content = container.content;
350
+ const cached = this.commentRun;
351
+ // Resolved once per run, not per comment: a run of k comment lines would
352
+ // otherwise cost k scans of the run.
353
+ if (cached?.content === content && index >= cached.start && index <= cached.end) {
354
+ return cached;
355
+ }
298
356
  let start = index;
299
357
  while (start > 0 && content[start - 1].hidden) {
300
358
  start--;
@@ -303,39 +361,99 @@ export class CommentPreserver {
303
361
  while (end + 1 < content.length && content[end + 1].hidden) {
304
362
  end++;
305
363
  }
306
- const run = content.slice(start, end + 1);
307
364
  let previous;
308
- for (let scan = start - 1; scan >= 0 && previous === undefined; scan--) {
309
- previous = content[scan].hidden ? undefined : this.syntaxSpan(content[scan]);
365
+ const targets = [{ container, last: end }];
366
+ if (this.getIndentationTokenNames() !== undefined) {
367
+ for (let scan = start - 1; scan >= 0 && previous === undefined; scan--) {
368
+ previous = content[scan].hidden ? undefined : this.syntaxSpan(content[scan]);
369
+ }
370
+ let target = targets[0];
371
+ while (target.container.container && this.closesAfter(target.container.content, target.last)) {
372
+ const opened = this.openedColumn(target.container.content, target.closed ? target.last : start, source) ?? 0;
373
+ if (opened === 0) {
374
+ break;
375
+ }
376
+ const parent = target.container.container;
377
+ target = {
378
+ container: parent,
379
+ last: this.indexIn(parent.content, target.container),
380
+ closed: target.container,
381
+ liftBelow: opened
382
+ };
383
+ targets.push(target);
384
+ }
310
385
  }
311
- let parent = container;
312
- let closed;
313
- if (previous === undefined || source.slice(previous.end, comment.offset).includes('\n')) {
314
- const column = this.columnAt(source, comment.offset);
315
- while (parent.container &&
316
- this.closesAfter(parent.content, closed ?? run[run.length - 1]) &&
317
- column < (this.openedColumn(parent.content, closed ?? run[0], source) ?? 0)) {
318
- closed = parent;
319
- parent = parent.container;
386
+ const before = this.neighbours(content, start - 1, -1).reverse();
387
+ const after = targets.map(target => this.neighbours(target.container.content, target.last + 1, 1));
388
+ return (this.commentRun = { content, start, end, previous, targets, before, after });
389
+ }
390
+ /** The nodes of `content` from `from` in `step` direction up to the first that is syntax, without indentation tokens. */
391
+ neighbours(content, from, step) {
392
+ const found = [];
393
+ for (let scan = from; scan >= 0 && scan < content.length; scan += step) {
394
+ const node = content[scan];
395
+ if (!this.isIndentation(node)) {
396
+ found.push(node);
397
+ if (!node.hidden) {
398
+ break;
399
+ }
320
400
  }
321
401
  }
322
- const view = parent.content.flatMap(node => (node === closed ? [node, ...run] : this.isIndentation(node) ? [] : [node]));
323
- return { container: parent, content: view, index: view.indexOf(comment) };
402
+ return found;
324
403
  }
325
- /** Whether only hidden and indentation tokens follow `node` in `content`. */
326
- closesAfter(content, node) {
327
- return content.slice(content.indexOf(node) + 1).every(sibling => sibling.hidden || this.isIndentation(sibling));
404
+ /** Whether only hidden and indentation tokens follow `index` in `content`. */
405
+ closesAfter(content, index) {
406
+ for (let scan = index + 1; scan < content.length; scan++) {
407
+ if (!content[scan].hidden && !this.isIndentation(content[scan])) {
408
+ return false;
409
+ }
410
+ }
411
+ return true;
328
412
  }
329
- /** The column the last INDENT before `node` in `content` opens, `undefined` without one. */
330
- openedColumn(content, node, source) {
413
+ /** The column the last INDENT before `content[index]` opens, `undefined` without one. */
414
+ openedColumn(content, index, source) {
331
415
  const indent = this.getIndentationTokenNames()?.indent;
332
- for (let scan = content.indexOf(node) - 1; scan >= 0; scan--) {
416
+ for (let scan = index - 1; scan >= 0; scan--) {
333
417
  if (tokenNameOf(content[scan]) === indent) {
334
418
  return this.columnAt(source, content[scan].end);
335
419
  }
336
420
  }
337
421
  return undefined;
338
422
  }
423
+ /**
424
+ * The index of `node` in `content`, found by offset: `indexOf` per lifted
425
+ * block makes extraction quadratic in a block's siblings.
426
+ */
427
+ indexIn(content, node) {
428
+ let low = 0;
429
+ let high = content.length;
430
+ while (low < high) {
431
+ const middle = (low + high) >> 1;
432
+ if (content[middle].offset < node.offset) {
433
+ low = middle + 1;
434
+ }
435
+ else {
436
+ high = middle;
437
+ }
438
+ }
439
+ // Zero-width tokens can share the node's offset.
440
+ for (let index = low; index < content.length && content[index].offset === node.offset; index++) {
441
+ if (content[index] === node) {
442
+ return index;
443
+ }
444
+ }
445
+ return content.indexOf(node);
446
+ }
447
+ /** Whether `text` has a line break from `from` up to `to`, without copying the span. */
448
+ breaksLine(text, from, to) {
449
+ // Not indexOf, which scans on to the next line break past `to`.
450
+ for (let offset = from; offset < to; offset++) {
451
+ if (text.charCodeAt(offset) === 10) {
452
+ return true;
453
+ }
454
+ }
455
+ return false;
456
+ }
339
457
  /** The column of `offset` in `text`. */
340
458
  columnAt(text, offset) {
341
459
  return offset - (text.lastIndexOf('\n', offset - 1) + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"comment-preserver.js","sourceRoot":"","sources":["../../../src/langium/trivia/comment-preserver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comment-preserver.js","sourceRoot":"","sources":["../../../src/langium/trivia/comment-preserver.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  import { defineMessage, describeError, interpolate, messageData, ObservableValue, TransferDiagnostic } from '@hydranium/protocol';
10
10
  import { DefaultDocumentValidator, DocumentValidator } from '@hydranium/langium';
11
11
  // A VALUE import, for `Diagnostic.getMessageString`: `message` is
12
- // `string | MarkupContent` in LSP 3.17+, so upstream's own reader is what
12
+ // `string | MarkupContent` since LSP 3.18, so upstream's own reader is what
13
13
  // narrows it rather than a hand-rolled union check here.
14
14
  import { Diagnostic } from 'vscode-languageserver-types';
15
15
  import { isSyntheticNode } from '../workspace/synthetic.js';
@@ -1 +1 @@
1
- {"version":3,"file":"document-validator.js","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-validator.js","sourceRoot":"","sources":["../../../src/langium/validation/document-validator.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export declare function acceptMessage<S extends string, N extends AstNode, P ext
43
43
  * Recover the identity from a published diagnostic, for a surface that
44
44
  * identifies or renders diagnostics itself.
45
45
  *
46
- * `Diagnostic.message` is `string | MarkupContent` in LSP 3.17+, so the text
46
+ * `Diagnostic.message` is `string | MarkupContent` since LSP 3.18, so the text
47
47
  * comes from upstream's own `Diagnostic.getMessageString` rather than a
48
48
  * hand-rolled narrowing — consuming the library in its style, and one fewer
49
49
  * place restating the union.
@@ -46,7 +46,7 @@ export function acceptMessage(accept, severity, message, info, ...params) {
46
46
  * Recover the identity from a published diagnostic, for a surface that
47
47
  * identifies or renders diagnostics itself.
48
48
  *
49
- * `Diagnostic.message` is `string | MarkupContent` in LSP 3.17+, so the text
49
+ * `Diagnostic.message` is `string | MarkupContent` since LSP 3.18, so the text
50
50
  * comes from upstream's own `Diagnostic.getMessageString` rather than a
51
51
  * hand-rolled narrowing — consuming the library in its style, and one fewer
52
52
  * place restating the union.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/core",
3
- "version": "1.0.0-next.335",
3
+ "version": "1.0.0-next.338",
4
4
  "description": "Foundational runtime of the hydranium framework: AST coordination layer (services, integrity, AST extension, serialization, multi-client documents) plus the LSP textual head at the /lsp subpath. Consumed by protocol-head packages (@hydranium/data-server, @hydranium/glsp-server).",
5
5
  "keywords": [
6
6
  "ast",
@@ -87,8 +87,8 @@
87
87
  "diff": "^5.2.0"
88
88
  },
89
89
  "devDependencies": {
90
- "@hydranium/langium": "1.0.0-next.335",
91
- "@hydranium/protocol": "1.0.0-next.335",
90
+ "@hydranium/langium": "1.0.0-next.338",
91
+ "@hydranium/protocol": "1.0.0-next.338",
92
92
  "@playwright/test": "^1.55.0",
93
93
  "@types/diff": "^5.2.0",
94
94
  "fake-indexeddb": "^6.2.5",
@@ -98,17 +98,17 @@
98
98
  "vscode-languageserver": "10.0.1",
99
99
  "vscode-languageserver-protocol": "3.18.1",
100
100
  "vscode-languageserver-textdocument": "^1.0.12",
101
- "vscode-languageserver-types": "^3.17.5"
101
+ "vscode-languageserver-types": "3.18.0"
102
102
  },
103
103
  "peerDependencies": {
104
- "@hydranium/langium": "1.0.0-next.335",
105
- "@hydranium/protocol": "1.0.0-next.335",
104
+ "@hydranium/langium": "1.0.0-next.338",
105
+ "@hydranium/protocol": "1.0.0-next.338",
106
106
  "@playwright/test": "^1.40.0",
107
107
  "vscode-jsonrpc": "^9.0.0",
108
108
  "vscode-languageserver": "~10.0.1",
109
109
  "vscode-languageserver-protocol": "~3.18.1",
110
110
  "vscode-languageserver-textdocument": "^1.0.12",
111
- "vscode-languageserver-types": "^3.17.5"
111
+ "vscode-languageserver-types": "^3.18.0"
112
112
  },
113
113
  "peerDependenciesMeta": {
114
114
  "@playwright/test": {
@@ -1597,7 +1597,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
1597
1597
  const text = this.messageRenderer.renderDiagnostic(diagnostic);
1598
1598
  // Against the message's STRING FORM, not the field. `renderDiagnostic`
1599
1599
  // answers a `string` by contract, while `Diagnostic.message` is
1600
- // `string | MarkupContent` since LSP 3.17 — so comparing the answer
1600
+ // `string | MarkupContent` since LSP 3.18 — so comparing the answer
1601
1601
  // against the field never matches for a markup message, and a pass
1602
1602
  // that replaced on mismatch flattened every un-identified markup
1603
1603
  // diagnostic to its own plain text. That is silent data loss on the
@@ -143,6 +143,36 @@ export interface IndentationTokenNames {
143
143
  readonly dedent: string;
144
144
  }
145
145
 
146
+ /**
147
+ * A container a run of comment lines can be placed in: the run's own, or one
148
+ * it is lifted into when a block's DEDENT follows the run. `last` is the index
149
+ * in its content the run is placed after, `closed` the block the run is lifted
150
+ * out of, and `liftBelow` the column a comment line has to start left of to be
151
+ * lifted this far.
152
+ */
153
+ export interface CommentLiftTarget {
154
+ readonly container: CompositeCstNode;
155
+ readonly last: number;
156
+ readonly closed?: CompositeCstNode;
157
+ readonly liftBelow?: number;
158
+ }
159
+
160
+ /**
161
+ * A run of hidden nodes in `content`, from `start` to `end`, with the syntax
162
+ * before it and the containers its comments can be placed in, innermost first.
163
+ */
164
+ export interface CommentRun {
165
+ readonly content: readonly CstNode[];
166
+ readonly start: number;
167
+ readonly end: number;
168
+ readonly previous?: { readonly end: number };
169
+ readonly targets: readonly CommentLiftTarget[];
170
+ /** The nodes {@link CommentPreserver.neighbours} finds before the run, in order. */
171
+ readonly before: readonly CstNode[];
172
+ /** Per target, the nodes {@link CommentPreserver.neighbours} finds after its `last`. */
173
+ readonly after: readonly (readonly CstNode[])[];
174
+ }
175
+
146
176
  /**
147
177
  * One splice, with what it takes to check the risky kind afterwards.
148
178
  *
@@ -192,6 +222,18 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
192
222
  protected readonly maxIsolatedEdits: number;
193
223
  protected commentTokenNames?: readonly string[];
194
224
  protected indentationTokenNames?: IndentationTokenNames | null;
225
+ /**
226
+ * Set for the duration of one {@link extract}: the run
227
+ * {@link resolveCommentRun} resolved last, so the run's next comment reuses
228
+ * it.
229
+ */
230
+ protected commentRun?: CommentRun;
231
+ /**
232
+ * Set for the duration of one {@link extract}: {@link syntaxSpan} per node,
233
+ * as a block a run is lifted out of would otherwise be measured once per
234
+ * comment.
235
+ */
236
+ protected spanMemo?: Map<CstNode, { readonly offset: number; readonly end: number } | undefined>;
195
237
  /** Set for the duration of one {@link apply}; see {@link cachedAnchorKey}. */
196
238
  protected keyMemo?: Map<AstNode, string | undefined>;
197
239
  /** Set for the duration of one {@link apply}; see {@link ambiguousRetainedKey}. */
@@ -259,9 +301,14 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
259
301
  if (this.getIndentationTokenNames() === undefined) {
260
302
  return node;
261
303
  }
304
+ if (this.spanMemo?.has(node)) {
305
+ return this.spanMemo.get(node);
306
+ }
262
307
  const first = this.edgeToken(node, 1);
263
308
  const last = this.edgeToken(node, -1);
264
- return first && last && { offset: first.offset, end: last.end };
309
+ const span = first && last && { offset: first.offset, end: last.end };
310
+ this.spanMemo?.set(node, span);
311
+ return span;
265
312
  }
266
313
 
267
314
  /** The first token of `node` for a `step` of 1, the last for -1, that is neither hidden nor indentation. */
@@ -355,7 +402,14 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
355
402
  }
356
403
  const source = document.textDocument.getText();
357
404
  const comments: DocumentComment[] = [];
358
- this.captureFrom(root, source, commentTokens, comments);
405
+ this.commentRun = undefined;
406
+ this.spanMemo = new Map();
407
+ try {
408
+ this.captureFrom(root, source, commentTokens, comments);
409
+ } finally {
410
+ this.commentRun = undefined;
411
+ this.spanMemo = undefined;
412
+ }
359
413
  return { comments, sourceRoot: document.parseResult.value };
360
414
  }
361
415
 
@@ -409,7 +463,14 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
409
463
  const following = content[at + 1];
410
464
  const blankLinesAfter = following === undefined ? 0 : this.countBlankLines(source.slice(comment.end, offsetOf(following)));
411
465
  const preceding = at > 0 ? content[at - 1] : undefined;
412
- const blankLinesBefore = preceding === undefined ? 0 : this.countBlankLines(source.slice(endOf(preceding), comment.offset));
466
+ // From the last text before the comment: a block it is lifted out of can
467
+ // end with comment lines of its own, after the block's syntax.
468
+ const precedingEnd = preceding === undefined ? comment.offset : endOf(preceding);
469
+ let gapStart = comment.offset;
470
+ while (gapStart > precedingEnd && /\s/.test(source[gapStart - 1])) {
471
+ gapStart--;
472
+ }
473
+ const blankLinesBefore = preceding === undefined ? 0 : this.countBlankLines(source.slice(gapStart, comment.offset));
413
474
 
414
475
  // Only a comment that OWNS its line can be reindented — one sharing a line
415
476
  // with code keeps whatever spacing that line gives it.
@@ -418,7 +479,7 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
418
479
  const sourceIndent = beforeOnLine.trim().length === 0 ? beforeOnLine : undefined;
419
480
 
420
481
  const text = this.normalizeLineEndings(comment.text);
421
- const sharesLineWithPrevious = previous !== undefined && !source.slice(endOf(previous), comment.offset).includes('\n');
482
+ const sharesLineWithPrevious = previous !== undefined && !this.breaksLine(source, endOf(previous), comment.offset);
422
483
 
423
484
  if (sharesLineWithPrevious) {
424
485
  // On the same line as whatever precedes it, so it annotates that line.
@@ -451,8 +512,10 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
451
512
  }
452
513
 
453
514
  /**
454
- * Resolves the container {@link classify} anchors `comment` in and its
455
- * siblings there without INDENT and DEDENT tokens.
515
+ * Resolves the container {@link classify} anchors `comment` in, and the
516
+ * comment's adjacent siblings there and the nearest syntax on each side,
517
+ * without INDENT and DEDENT tokens. The content is that window, not all of
518
+ * the container's siblings.
456
519
  *
457
520
  * An indentation-aware lexer can emit a block's DEDENT after the comment
458
521
  * lines that follow the block, so the parser nests them in it. An own-line
@@ -466,10 +529,35 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
466
529
  container: CompositeCstNode,
467
530
  source: string
468
531
  ): { readonly container: CompositeCstNode; readonly content: readonly CstNode[]; readonly index: number } {
469
- if (this.getIndentationTokenNames() === undefined) {
470
- return { container, content: container.content, index };
532
+ const content = container.content;
533
+ const run = this.resolveCommentRun(index, container, source);
534
+ let placed = 0;
535
+ if (run.targets.length > 1 && (run.previous === undefined || this.breaksLine(source, run.previous.end, comment.offset))) {
536
+ const column = this.columnAt(source, comment.offset);
537
+ while (placed + 1 < run.targets.length && column < (run.targets[placed + 1].liftBelow ?? 0)) {
538
+ placed++;
539
+ }
471
540
  }
541
+ const { container: parent, closed } = run.targets[placed];
542
+ const before = closed ? [closed] : run.before;
543
+ const around = content.slice(Math.max(index - 1, run.start), Math.min(index + 1, run.end) + 1);
544
+ const view = [...before, ...around, ...run.after[placed]];
545
+ return { container: parent, content: view, index: before.length + (index > run.start ? 1 : 0) };
546
+ }
547
+
548
+ /**
549
+ * The run of hidden nodes around `container.content[index]`, and the blocks
550
+ * it can be lifted out of: each that ends right after the run and whose
551
+ * INDENT opened a column, up to the first that does not.
552
+ */
553
+ protected resolveCommentRun(index: number, container: CompositeCstNode, source: string): CommentRun {
472
554
  const content = container.content;
555
+ const cached = this.commentRun;
556
+ // Resolved once per run, not per comment: a run of k comment lines would
557
+ // otherwise cost k scans of the run.
558
+ if (cached?.content === content && index >= cached.start && index <= cached.end) {
559
+ return cached;
560
+ }
473
561
  let start = index;
474
562
  while (start > 0 && content[start - 1].hidden) {
475
563
  start--;
@@ -478,37 +566,62 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
478
566
  while (end + 1 < content.length && content[end + 1].hidden) {
479
567
  end++;
480
568
  }
481
- const run = content.slice(start, end + 1);
482
569
  let previous: { readonly end: number } | undefined;
483
- for (let scan = start - 1; scan >= 0 && previous === undefined; scan--) {
484
- previous = content[scan].hidden ? undefined : this.syntaxSpan(content[scan]);
570
+ const targets: CommentLiftTarget[] = [{ container, last: end }];
571
+ if (this.getIndentationTokenNames() !== undefined) {
572
+ for (let scan = start - 1; scan >= 0 && previous === undefined; scan--) {
573
+ previous = content[scan].hidden ? undefined : this.syntaxSpan(content[scan]);
574
+ }
575
+ let target = targets[0];
576
+ while (target.container.container && this.closesAfter(target.container.content, target.last)) {
577
+ const opened = this.openedColumn(target.container.content, target.closed ? target.last : start, source) ?? 0;
578
+ if (opened === 0) {
579
+ break;
580
+ }
581
+ const parent = target.container.container;
582
+ target = {
583
+ container: parent,
584
+ last: this.indexIn(parent.content, target.container),
585
+ closed: target.container,
586
+ liftBelow: opened
587
+ };
588
+ targets.push(target);
589
+ }
485
590
  }
486
- let parent = container;
487
- let closed: CstNode | undefined;
488
- if (previous === undefined || source.slice(previous.end, comment.offset).includes('\n')) {
489
- const column = this.columnAt(source, comment.offset);
490
- while (
491
- parent.container &&
492
- this.closesAfter(parent.content, closed ?? run[run.length - 1]) &&
493
- column < (this.openedColumn(parent.content, closed ?? run[0], source) ?? 0)
494
- ) {
495
- closed = parent;
496
- parent = parent.container;
591
+ const before = this.neighbours(content, start - 1, -1).reverse();
592
+ const after = targets.map(target => this.neighbours(target.container.content, target.last + 1, 1));
593
+ return (this.commentRun = { content, start, end, previous, targets, before, after });
594
+ }
595
+
596
+ /** The nodes of `content` from `from` in `step` direction up to the first that is syntax, without indentation tokens. */
597
+ protected neighbours(content: readonly CstNode[], from: number, step: 1 | -1): CstNode[] {
598
+ const found: CstNode[] = [];
599
+ for (let scan = from; scan >= 0 && scan < content.length; scan += step) {
600
+ const node = content[scan];
601
+ if (!this.isIndentation(node)) {
602
+ found.push(node);
603
+ if (!node.hidden) {
604
+ break;
605
+ }
497
606
  }
498
607
  }
499
- const view = parent.content.flatMap(node => (node === closed ? [node, ...run] : this.isIndentation(node) ? [] : [node]));
500
- return { container: parent, content: view, index: view.indexOf(comment) };
608
+ return found;
501
609
  }
502
610
 
503
- /** Whether only hidden and indentation tokens follow `node` in `content`. */
504
- protected closesAfter(content: readonly CstNode[], node: CstNode): boolean {
505
- return content.slice(content.indexOf(node) + 1).every(sibling => sibling.hidden || this.isIndentation(sibling));
611
+ /** Whether only hidden and indentation tokens follow `index` in `content`. */
612
+ protected closesAfter(content: readonly CstNode[], index: number): boolean {
613
+ for (let scan = index + 1; scan < content.length; scan++) {
614
+ if (!content[scan].hidden && !this.isIndentation(content[scan])) {
615
+ return false;
616
+ }
617
+ }
618
+ return true;
506
619
  }
507
620
 
508
- /** The column the last INDENT before `node` in `content` opens, `undefined` without one. */
509
- protected openedColumn(content: readonly CstNode[], node: CstNode, source: string): number | undefined {
621
+ /** The column the last INDENT before `content[index]` opens, `undefined` without one. */
622
+ protected openedColumn(content: readonly CstNode[], index: number, source: string): number | undefined {
510
623
  const indent = this.getIndentationTokenNames()?.indent;
511
- for (let scan = content.indexOf(node) - 1; scan >= 0; scan--) {
624
+ for (let scan = index - 1; scan >= 0; scan--) {
512
625
  if (tokenNameOf(content[scan]) === indent) {
513
626
  return this.columnAt(source, content[scan].end);
514
627
  }
@@ -516,6 +629,41 @@ export class CommentPreserver implements TriviaPreserver<CommentTrivia> {
516
629
  return undefined;
517
630
  }
518
631
 
632
+ /**
633
+ * The index of `node` in `content`, found by offset: `indexOf` per lifted
634
+ * block makes extraction quadratic in a block's siblings.
635
+ */
636
+ protected indexIn(content: readonly CstNode[], node: CstNode): number {
637
+ let low = 0;
638
+ let high = content.length;
639
+ while (low < high) {
640
+ const middle = (low + high) >> 1;
641
+ if (content[middle].offset < node.offset) {
642
+ low = middle + 1;
643
+ } else {
644
+ high = middle;
645
+ }
646
+ }
647
+ // Zero-width tokens can share the node's offset.
648
+ for (let index = low; index < content.length && content[index].offset === node.offset; index++) {
649
+ if (content[index] === node) {
650
+ return index;
651
+ }
652
+ }
653
+ return content.indexOf(node);
654
+ }
655
+
656
+ /** Whether `text` has a line break from `from` up to `to`, without copying the span. */
657
+ protected breaksLine(text: string, from: number, to: number): boolean {
658
+ // Not indexOf, which scans on to the next line break past `to`.
659
+ for (let offset = from; offset < to; offset++) {
660
+ if (text.charCodeAt(offset) === 10) {
661
+ return true;
662
+ }
663
+ }
664
+ return false;
665
+ }
666
+
519
667
  /** The column of `offset` in `text`. */
520
668
  protected columnAt(text: string, offset: number): number {
521
669
  return offset - (text.lastIndexOf('\n', offset - 1) + 1);
@@ -38,7 +38,7 @@ import {
38
38
  } from '@hydranium/langium';
39
39
  import type { CancellationToken } from 'vscode-languageserver-protocol';
40
40
  // A VALUE import, for `Diagnostic.getMessageString`: `message` is
41
- // `string | MarkupContent` in LSP 3.17+, so upstream's own reader is what
41
+ // `string | MarkupContent` since LSP 3.18, so upstream's own reader is what
42
42
  // narrows it rather than a hand-rolled union check here.
43
43
  import { Diagnostic } from 'vscode-languageserver-types';
44
44
  import { type LogNameOptions } from '../diagnostics/logger.js';
@@ -63,7 +63,7 @@ export function acceptMessage<S extends string, N extends AstNode, P extends Pro
63
63
  * Recover the identity from a published diagnostic, for a surface that
64
64
  * identifies or renders diagnostics itself.
65
65
  *
66
- * `Diagnostic.message` is `string | MarkupContent` in LSP 3.17+, so the text
66
+ * `Diagnostic.message` is `string | MarkupContent` since LSP 3.18, so the text
67
67
  * comes from upstream's own `Diagnostic.getMessageString` rather than a
68
68
  * hand-rolled narrowing — consuming the library in its style, and one fewer
69
69
  * place restating the union.