@lezer/common 1.3.0 → 1.5.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/dist/index.cjs CHANGED
@@ -126,10 +126,17 @@ class MountedTree {
126
126
  /**
127
127
  The parser used to create this subtree.
128
128
  */
129
- parser) {
129
+ parser,
130
+ /**
131
+ [Indicates](#common.IterMode.EnterBracketed) that the nested
132
+ content is delineated with some kind
133
+ of bracket token.
134
+ */
135
+ bracketed = false) {
130
136
  this.tree = tree;
131
137
  this.overlay = overlay;
132
138
  this.parser = parser;
139
+ this.bracketed = bracketed;
133
140
  }
134
141
  /**
135
142
  @internal
@@ -334,6 +341,13 @@ exports.IterMode = void 0;
334
341
  position.
335
342
  */
336
343
  IterMode[IterMode["IgnoreOverlays"] = 8] = "IgnoreOverlays";
344
+ /**
345
+ When set, positions on the boundary of a mounted overlay tree
346
+ that has its [`bracketed`](#common.NestedParse.bracketed) flag
347
+ set will enter that tree regardless of side. Only supported in
348
+ [`enter`](#common.SyntaxNode.enter), not in cursors.
349
+ */
350
+ IterMode[IterMode["EnterBracketed"] = 16] = "EnterBracketed";
337
351
  })(exports.IterMode || (exports.IterMode = {}));
338
352
  /**
339
353
  A piece of syntax tree. There are two ways to approach these
@@ -731,10 +745,13 @@ class TreeNode extends BaseNode {
731
745
  get name() { return this._tree.type.name; }
732
746
  get to() { return this.from + this._tree.length; }
733
747
  nextChild(i, dir, pos, side, mode = 0) {
748
+ var _a;
734
749
  for (let parent = this;;) {
735
750
  for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {
736
751
  let next = children[i], start = positions[i] + parent.from;
737
- if (!checkSide(side, pos, start, start + next.length))
752
+ if (!((mode & exports.IterMode.EnterBracketed) && next instanceof Tree &&
753
+ ((_a = MountedTree.get(next)) === null || _a === void 0 ? void 0 : _a.overlay) === null && (start >= pos || start + next.length <= pos)) &&
754
+ !checkSide(side, pos, start, start + next.length))
738
755
  continue;
739
756
  if (next instanceof TreeBuffer) {
740
757
  if (mode & exports.IterMode.ExcludeBuffers)
@@ -749,7 +766,7 @@ class TreeNode extends BaseNode {
749
766
  return new TreeNode(mounted.tree, start, i, parent);
750
767
  let inner = new TreeNode(next, start, i, parent);
751
768
  return (mode & exports.IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner
752
- : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);
769
+ : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side, mode);
753
770
  }
754
771
  }
755
772
  if ((mode & exports.IterMode.IncludeAnonymous) || !parent.type.isAnonymous)
@@ -767,13 +784,14 @@ class TreeNode extends BaseNode {
767
784
  get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }
768
785
  childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }
769
786
  childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }
787
+ prop(prop) { return this._tree.prop(prop); }
770
788
  enter(pos, side, mode = 0) {
771
789
  let mounted;
772
790
  if (!(mode & exports.IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {
773
- let rPos = pos - this.from;
791
+ let rPos = pos - this.from, enterBracketed = (mode & exports.IterMode.EnterBracketed) && mounted.bracketed;
774
792
  for (let { from, to } of mounted.overlay) {
775
- if ((side > 0 ? from <= rPos : from < rPos) &&
776
- (side < 0 ? to >= rPos : to > rPos))
793
+ if ((side > 0 || enterBracketed ? from <= rPos : from < rPos) &&
794
+ (side < 0 || enterBracketed ? to >= rPos : to > rPos))
777
795
  return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);
778
796
  }
779
797
  }
@@ -860,6 +878,7 @@ class BufferNode extends BaseNode {
860
878
  get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }
861
879
  childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }
862
880
  childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }
881
+ prop(prop) { return this.type.prop(prop); }
863
882
  enter(pos, side, mode = 0) {
864
883
  if (mode & exports.IterMode.ExcludeBuffers)
865
884
  return null;
@@ -961,12 +980,7 @@ class TreeCursor {
961
980
  /**
962
981
  @internal
963
982
  */
964
- constructor(node,
965
- /**
966
- @internal
967
- */
968
- mode = 0) {
969
- this.mode = mode;
983
+ constructor(node, mode = 0) {
970
984
  /**
971
985
  @internal
972
986
  */
@@ -977,6 +991,7 @@ class TreeCursor {
977
991
  */
978
992
  this.index = 0;
979
993
  this.bufferNode = null;
994
+ this.mode = mode & ~exports.IterMode.EnterBracketed;
980
995
  if (node instanceof TreeNode) {
981
996
  this.yieldNode(node);
982
997
  }
@@ -1441,7 +1456,7 @@ function buildTree(data) {
1441
1456
  fork.next();
1442
1457
  while (fork.pos > startPos) {
1443
1458
  if (fork.size < 0) {
1444
- if (fork.size == -3 /* SpecialRecord.ContextChange */)
1459
+ if (fork.size == -3 /* SpecialRecord.ContextChange */ || fork.size == -4 /* SpecialRecord.LookAhead */)
1445
1460
  localSkipped += 4;
1446
1461
  else
1447
1462
  break scan;
@@ -1768,10 +1783,11 @@ function parseMixed(nest) {
1768
1783
  return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);
1769
1784
  }
1770
1785
  class InnerParse {
1771
- constructor(parser, parse, overlay, target, from) {
1786
+ constructor(parser, parse, overlay, bracketed, target, from) {
1772
1787
  this.parser = parser;
1773
1788
  this.parse = parse;
1774
1789
  this.overlay = overlay;
1790
+ this.bracketed = bracketed;
1775
1791
  this.target = target;
1776
1792
  this.from = from;
1777
1793
  }
@@ -1781,12 +1797,13 @@ function checkRanges(ranges) {
1781
1797
  throw new RangeError("Invalid inner parse ranges given: " + JSON.stringify(ranges));
1782
1798
  }
1783
1799
  class ActiveOverlay {
1784
- constructor(parser, predicate, mounts, index, start, target, prev) {
1800
+ constructor(parser, predicate, mounts, index, start, bracketed, target, prev) {
1785
1801
  this.parser = parser;
1786
1802
  this.predicate = predicate;
1787
1803
  this.mounts = mounts;
1788
1804
  this.index = index;
1789
1805
  this.start = start;
1806
+ this.bracketed = bracketed;
1790
1807
  this.target = target;
1791
1808
  this.prev = prev;
1792
1809
  this.depth = 0;
@@ -1832,7 +1849,7 @@ class MixedParse {
1832
1849
  // presumably not aliased anywhere else) to hold the information
1833
1850
  // about the inner parse.
1834
1851
  let props = Object.assign(Object.create(null), inner.target.props);
1835
- props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);
1852
+ props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser, inner.bracketed);
1836
1853
  inner.target.props = props;
1837
1854
  }
1838
1855
  return null;
@@ -1893,7 +1910,7 @@ class MixedParse {
1893
1910
  }
1894
1911
  let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);
1895
1912
  if (typeof nest.overlay == "function") {
1896
- overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);
1913
+ overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, !!nest.bracketed, cursor.tree, overlay);
1897
1914
  }
1898
1915
  else {
1899
1916
  let ranges = punchRanges(this.ranges, nest.overlay ||
@@ -1902,7 +1919,7 @@ class MixedParse {
1902
1919
  checkRanges(ranges);
1903
1920
  if (ranges.length || !nest.overlay)
1904
1921
  this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)
1905
- : nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
1922
+ : nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, !!nest.bracketed, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
1906
1923
  if (!nest.overlay)
1907
1924
  enter = false;
1908
1925
  else if (ranges.length)
@@ -1936,7 +1953,7 @@ class MixedParse {
1936
1953
  let ranges = punchRanges(this.ranges, overlay.ranges);
1937
1954
  if (ranges.length) {
1938
1955
  checkRanges(ranges);
1939
- this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));
1956
+ this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.bracketed, overlay.target, ranges[0].from));
1940
1957
  }
1941
1958
  overlay = overlay.prev;
1942
1959
  }
package/dist/index.d.cts CHANGED
@@ -349,6 +349,12 @@ declare class MountedTree {
349
349
  The parser used to create this subtree.
350
350
  */
351
351
  readonly parser: Parser;
352
+ /**
353
+ [Indicates](#common.IterMode.EnterBracketed) that the nested
354
+ content is delineated with some kind
355
+ of bracket token.
356
+ */
357
+ readonly bracketed: boolean;
352
358
  constructor(
353
359
  /**
354
360
  The inner tree.
@@ -370,7 +376,13 @@ declare class MountedTree {
370
376
  /**
371
377
  The parser used to create this subtree.
372
378
  */
373
- parser: Parser);
379
+ parser: Parser,
380
+ /**
381
+ [Indicates](#common.IterMode.EnterBracketed) that the nested
382
+ content is delineated with some kind
383
+ of bracket token.
384
+ */
385
+ bracketed?: boolean);
374
386
  }
375
387
  /**
376
388
  Type returned by [`NodeProp.add`](#common.NodeProp.add). Describes
@@ -531,7 +543,14 @@ declare enum IterMode {
531
543
  library to not enter mounted overlays if one covers the given
532
544
  position.
533
545
  */
534
- IgnoreOverlays = 8
546
+ IgnoreOverlays = 8,
547
+ /**
548
+ When set, positions on the boundary of a mounted overlay tree
549
+ that has its [`bracketed`](#common.NestedParse.bracketed) flag
550
+ set will enter that tree regardless of side. Only supported in
551
+ [`enter`](#common.SyntaxNode.enter), not in cursors.
552
+ */
553
+ EnterBracketed = 16
535
554
  }
536
555
  /**
537
556
  A piece of syntax tree. There are two ways to approach these
@@ -918,6 +937,10 @@ interface SyntaxNode extends SyntaxNodeRef {
918
937
  */
919
938
  prevSibling: SyntaxNode | null;
920
939
  /**
940
+ Read the given node prop from this node.
941
+ */
942
+ prop<T>(prop: NodeProp<T>): T | undefined;
943
+ /**
921
944
  A [tree cursor](#common.TreeCursor) starting at this node.
922
945
  */
923
946
  cursor(mode?: IterMode): TreeCursor;
@@ -1131,6 +1154,13 @@ interface NestedParse {
1131
1154
  from: number;
1132
1155
  to: number;
1133
1156
  } | boolean);
1157
+ /**
1158
+ When `true`, indicates that this nested language is surrounded
1159
+ by some kind of bracket token, which can be used to make
1160
+ iteration [eagerly](#common.IterMode.EnterBracketed) enter such
1161
+ trees.
1162
+ */
1163
+ bracketed?: boolean;
1134
1164
  }
1135
1165
  /**
1136
1166
  Create a parse wrapper that, after the inner parse completes,
package/dist/index.d.ts CHANGED
@@ -349,6 +349,12 @@ declare class MountedTree {
349
349
  The parser used to create this subtree.
350
350
  */
351
351
  readonly parser: Parser;
352
+ /**
353
+ [Indicates](#common.IterMode.EnterBracketed) that the nested
354
+ content is delineated with some kind
355
+ of bracket token.
356
+ */
357
+ readonly bracketed: boolean;
352
358
  constructor(
353
359
  /**
354
360
  The inner tree.
@@ -370,7 +376,13 @@ declare class MountedTree {
370
376
  /**
371
377
  The parser used to create this subtree.
372
378
  */
373
- parser: Parser);
379
+ parser: Parser,
380
+ /**
381
+ [Indicates](#common.IterMode.EnterBracketed) that the nested
382
+ content is delineated with some kind
383
+ of bracket token.
384
+ */
385
+ bracketed?: boolean);
374
386
  }
375
387
  /**
376
388
  Type returned by [`NodeProp.add`](#common.NodeProp.add). Describes
@@ -531,7 +543,14 @@ declare enum IterMode {
531
543
  library to not enter mounted overlays if one covers the given
532
544
  position.
533
545
  */
534
- IgnoreOverlays = 8
546
+ IgnoreOverlays = 8,
547
+ /**
548
+ When set, positions on the boundary of a mounted overlay tree
549
+ that has its [`bracketed`](#common.NestedParse.bracketed) flag
550
+ set will enter that tree regardless of side. Only supported in
551
+ [`enter`](#common.SyntaxNode.enter), not in cursors.
552
+ */
553
+ EnterBracketed = 16
535
554
  }
536
555
  /**
537
556
  A piece of syntax tree. There are two ways to approach these
@@ -918,6 +937,10 @@ interface SyntaxNode extends SyntaxNodeRef {
918
937
  */
919
938
  prevSibling: SyntaxNode | null;
920
939
  /**
940
+ Read the given node prop from this node.
941
+ */
942
+ prop<T>(prop: NodeProp<T>): T | undefined;
943
+ /**
921
944
  A [tree cursor](#common.TreeCursor) starting at this node.
922
945
  */
923
946
  cursor(mode?: IterMode): TreeCursor;
@@ -1131,6 +1154,13 @@ interface NestedParse {
1131
1154
  from: number;
1132
1155
  to: number;
1133
1156
  } | boolean);
1157
+ /**
1158
+ When `true`, indicates that this nested language is surrounded
1159
+ by some kind of bracket token, which can be used to make
1160
+ iteration [eagerly](#common.IterMode.EnterBracketed) enter such
1161
+ trees.
1162
+ */
1163
+ bracketed?: boolean;
1134
1164
  }
1135
1165
  /**
1136
1166
  Create a parse wrapper that, after the inner parse completes,
package/dist/index.js CHANGED
@@ -124,10 +124,17 @@ class MountedTree {
124
124
  /**
125
125
  The parser used to create this subtree.
126
126
  */
127
- parser) {
127
+ parser,
128
+ /**
129
+ [Indicates](#common.IterMode.EnterBracketed) that the nested
130
+ content is delineated with some kind
131
+ of bracket token.
132
+ */
133
+ bracketed = false) {
128
134
  this.tree = tree;
129
135
  this.overlay = overlay;
130
136
  this.parser = parser;
137
+ this.bracketed = bracketed;
131
138
  }
132
139
  /**
133
140
  @internal
@@ -332,6 +339,13 @@ var IterMode;
332
339
  position.
333
340
  */
334
341
  IterMode[IterMode["IgnoreOverlays"] = 8] = "IgnoreOverlays";
342
+ /**
343
+ When set, positions on the boundary of a mounted overlay tree
344
+ that has its [`bracketed`](#common.NestedParse.bracketed) flag
345
+ set will enter that tree regardless of side. Only supported in
346
+ [`enter`](#common.SyntaxNode.enter), not in cursors.
347
+ */
348
+ IterMode[IterMode["EnterBracketed"] = 16] = "EnterBracketed";
335
349
  })(IterMode || (IterMode = {}));
336
350
  /**
337
351
  A piece of syntax tree. There are two ways to approach these
@@ -729,10 +743,13 @@ class TreeNode extends BaseNode {
729
743
  get name() { return this._tree.type.name; }
730
744
  get to() { return this.from + this._tree.length; }
731
745
  nextChild(i, dir, pos, side, mode = 0) {
746
+ var _a;
732
747
  for (let parent = this;;) {
733
748
  for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {
734
749
  let next = children[i], start = positions[i] + parent.from;
735
- if (!checkSide(side, pos, start, start + next.length))
750
+ if (!((mode & IterMode.EnterBracketed) && next instanceof Tree &&
751
+ ((_a = MountedTree.get(next)) === null || _a === void 0 ? void 0 : _a.overlay) === null && (start >= pos || start + next.length <= pos)) &&
752
+ !checkSide(side, pos, start, start + next.length))
736
753
  continue;
737
754
  if (next instanceof TreeBuffer) {
738
755
  if (mode & IterMode.ExcludeBuffers)
@@ -747,7 +764,7 @@ class TreeNode extends BaseNode {
747
764
  return new TreeNode(mounted.tree, start, i, parent);
748
765
  let inner = new TreeNode(next, start, i, parent);
749
766
  return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner
750
- : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);
767
+ : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side, mode);
751
768
  }
752
769
  }
753
770
  if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)
@@ -765,13 +782,14 @@ class TreeNode extends BaseNode {
765
782
  get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }
766
783
  childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }
767
784
  childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }
785
+ prop(prop) { return this._tree.prop(prop); }
768
786
  enter(pos, side, mode = 0) {
769
787
  let mounted;
770
788
  if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {
771
- let rPos = pos - this.from;
789
+ let rPos = pos - this.from, enterBracketed = (mode & IterMode.EnterBracketed) && mounted.bracketed;
772
790
  for (let { from, to } of mounted.overlay) {
773
- if ((side > 0 ? from <= rPos : from < rPos) &&
774
- (side < 0 ? to >= rPos : to > rPos))
791
+ if ((side > 0 || enterBracketed ? from <= rPos : from < rPos) &&
792
+ (side < 0 || enterBracketed ? to >= rPos : to > rPos))
775
793
  return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);
776
794
  }
777
795
  }
@@ -858,6 +876,7 @@ class BufferNode extends BaseNode {
858
876
  get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }
859
877
  childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }
860
878
  childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }
879
+ prop(prop) { return this.type.prop(prop); }
861
880
  enter(pos, side, mode = 0) {
862
881
  if (mode & IterMode.ExcludeBuffers)
863
882
  return null;
@@ -959,12 +978,7 @@ class TreeCursor {
959
978
  /**
960
979
  @internal
961
980
  */
962
- constructor(node,
963
- /**
964
- @internal
965
- */
966
- mode = 0) {
967
- this.mode = mode;
981
+ constructor(node, mode = 0) {
968
982
  /**
969
983
  @internal
970
984
  */
@@ -975,6 +989,7 @@ class TreeCursor {
975
989
  */
976
990
  this.index = 0;
977
991
  this.bufferNode = null;
992
+ this.mode = mode & ~IterMode.EnterBracketed;
978
993
  if (node instanceof TreeNode) {
979
994
  this.yieldNode(node);
980
995
  }
@@ -1439,7 +1454,7 @@ function buildTree(data) {
1439
1454
  fork.next();
1440
1455
  while (fork.pos > startPos) {
1441
1456
  if (fork.size < 0) {
1442
- if (fork.size == -3 /* SpecialRecord.ContextChange */)
1457
+ if (fork.size == -3 /* SpecialRecord.ContextChange */ || fork.size == -4 /* SpecialRecord.LookAhead */)
1443
1458
  localSkipped += 4;
1444
1459
  else
1445
1460
  break scan;
@@ -1766,10 +1781,11 @@ function parseMixed(nest) {
1766
1781
  return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);
1767
1782
  }
1768
1783
  class InnerParse {
1769
- constructor(parser, parse, overlay, target, from) {
1784
+ constructor(parser, parse, overlay, bracketed, target, from) {
1770
1785
  this.parser = parser;
1771
1786
  this.parse = parse;
1772
1787
  this.overlay = overlay;
1788
+ this.bracketed = bracketed;
1773
1789
  this.target = target;
1774
1790
  this.from = from;
1775
1791
  }
@@ -1779,12 +1795,13 @@ function checkRanges(ranges) {
1779
1795
  throw new RangeError("Invalid inner parse ranges given: " + JSON.stringify(ranges));
1780
1796
  }
1781
1797
  class ActiveOverlay {
1782
- constructor(parser, predicate, mounts, index, start, target, prev) {
1798
+ constructor(parser, predicate, mounts, index, start, bracketed, target, prev) {
1783
1799
  this.parser = parser;
1784
1800
  this.predicate = predicate;
1785
1801
  this.mounts = mounts;
1786
1802
  this.index = index;
1787
1803
  this.start = start;
1804
+ this.bracketed = bracketed;
1788
1805
  this.target = target;
1789
1806
  this.prev = prev;
1790
1807
  this.depth = 0;
@@ -1830,7 +1847,7 @@ class MixedParse {
1830
1847
  // presumably not aliased anywhere else) to hold the information
1831
1848
  // about the inner parse.
1832
1849
  let props = Object.assign(Object.create(null), inner.target.props);
1833
- props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);
1850
+ props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser, inner.bracketed);
1834
1851
  inner.target.props = props;
1835
1852
  }
1836
1853
  return null;
@@ -1891,7 +1908,7 @@ class MixedParse {
1891
1908
  }
1892
1909
  let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);
1893
1910
  if (typeof nest.overlay == "function") {
1894
- overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);
1911
+ overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, !!nest.bracketed, cursor.tree, overlay);
1895
1912
  }
1896
1913
  else {
1897
1914
  let ranges = punchRanges(this.ranges, nest.overlay ||
@@ -1900,7 +1917,7 @@ class MixedParse {
1900
1917
  checkRanges(ranges);
1901
1918
  if (ranges.length || !nest.overlay)
1902
1919
  this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)
1903
- : nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
1920
+ : nest.parser.startParse(""), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, !!nest.bracketed, cursor.tree, ranges.length ? ranges[0].from : cursor.from));
1904
1921
  if (!nest.overlay)
1905
1922
  enter = false;
1906
1923
  else if (ranges.length)
@@ -1934,7 +1951,7 @@ class MixedParse {
1934
1951
  let ranges = punchRanges(this.ranges, overlay.ranges);
1935
1952
  if (ranges.length) {
1936
1953
  checkRanges(ranges);
1937
- this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));
1954
+ this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.bracketed, overlay.target, ranges[0].from));
1938
1955
  }
1939
1956
  overlay = overlay.prev;
1940
1957
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lezer/common",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "Syntax tree data structure and parser interfaces for the lezer parser",
5
5
  "main": "dist/index.cjs",
6
6
  "type": "module",