Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/parser/src/parser.rs')
| -rw-r--r-- | crates/parser/src/parser.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/crates/parser/src/parser.rs b/crates/parser/src/parser.rs index f6b8308c57..ff2af130be 100644 --- a/crates/parser/src/parser.rs +++ b/crates/parser/src/parser.rs @@ -340,10 +340,14 @@ impl CompletedMarker { /// Extends this completed marker *to the left* up to `m`. pub(crate) fn extend_to(self, p: &mut Parser, mut m: Marker) { - assert!(m.pos <= self.pos); m.bomb.defuse(); - - p.events.swap(self.pos as usize, m.pos as usize); + let idx = m.pos as usize; + match &mut p.events[idx] { + Event::Start { forward_parent, .. } => { + *forward_parent = Some(self.pos - m.pos); + } + _ => unreachable!(), + } } pub(crate) fn kind(&self) -> SyntaxKind { |