difftreelog
fix remove unused code from rowan-parser
in: master
3 files changed
crates/jrsonnet-rowan-parser/src/event.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/event.rs
+++ b/crates/jrsonnet-rowan-parser/src/event.rs
@@ -23,7 +23,7 @@
/// Eat token
Token { kind: SyntaxKind },
/// Push token, but do not eat anything,
- VirtualToken { kind: SyntaxKind },
+ // VirtualToken { kind: SyntaxKind },
/// Position of finished node
Finish {
/// Same as forward_parent of Start, but for wrapping
@@ -120,13 +120,13 @@
self.token(kind);
eat_start_whitespace = true;
}
- Event::VirtualToken { kind } => {
- if eat_start_whitespace {
- self.skip_whitespace();
- }
- self.virtual_token(kind);
- eat_start_whitespace = false;
- }
+ // Event::VirtualToken { kind } => {
+ // if eat_start_whitespace {
+ // self.skip_whitespace();
+ // }
+ // self.virtual_token(kind);
+ // eat_start_whitespace = false;
+ // }
Event::Finish { wrapper, error } => {
if depth == 1 {
self.skip_whitespace();
@@ -183,9 +183,9 @@
errors: self.errors,
}
}
- fn virtual_token(&mut self, kind: SyntaxKind) {
- self.builder.token(JsonnetLanguage::kind_to_raw(kind), "")
- }
+ // fn virtual_token(&mut self, kind: SyntaxKind) {
+ // self.builder.token(JsonnetLanguage::kind_to_raw(kind), "")
+ // }
fn token(&mut self, kind: SyntaxKind) {
let lexeme = self.lexemes[self.offset];
self.builder
crates/jrsonnet-rowan-parser/src/marker.rsdiffbeforeafterboth1use std::num::NonZeroUsize;23use drop_bomb::DropBomb;45use crate::{6 event::Event,7 parser::{ExpectedSyntax, Parser, SyntaxError},8 SyntaxKind,9};1011pub struct Ranger {12 pub pos: usize,13}14impl Ranger {15 pub fn finish(self, p: &Parser) -> FinishedRanger {16 FinishedRanger {17 start_token: self.pos,18 end_token: self.pos.max(p.offset.saturating_sub(1)),19 }20 }21}2223pub struct FinishedRanger {24 pub start_token: usize,25 pub end_token: usize,26}27impl FinishedRanger {28 #[allow(dead_code)]29 pub fn had_error_since(&self, p: &Parser) -> bool {30 p.last_error_token >= self.start_token31 }32}3334#[must_use]35pub struct Marker {36 pub start_event_idx: usize,37 bomb: DropBomb,38}39impl Marker {40 pub fn new(pos: usize) -> Self {41 Self {42 start_event_idx: pos,43 bomb: DropBomb::new("marked dropped while not completed"),44 }45 }46 fn complete_raw(47 mut self,48 p: &mut Parser,49 kind: SyntaxKind,50 error: Option<SyntaxError>,51 ) -> CompletedMarker {52 self.bomb.defuse();53 assert!(54 !kind.is_enum(),55 "{kind:?} is a enum kind, you should use variant kinds instead"56 );57 // TODO: is_lexer should return true if enum variant has #[regex]/#[token] over it, or it is defined as lexer error explicitly58 // debug_assert!(59 // !kind.is_lexer(),60 // "{kind:?} should be only emitted by lexer, not used directly"61 // );62 let event_at_pos = &mut p.events[self.start_event_idx];63 assert!(matches!(event_at_pos, Event::Pending));6465 *event_at_pos = Event::Start {66 kind,67 forward_parent: None,68 };6970 let finish_event_idx = p.events.len();71 p.events.push(Event::Finish {72 wrapper: None,73 error: error.map(Box::new),74 });75 p.entered -= 1;76 p.clear_outdated_hints();77 CompletedMarker {78 start_event_idx: self.start_event_idx,79 finish_event_idx,80 }81 }82 pub fn complete(mut self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker {83 self.complete_raw(p, kind, None)84 }85 pub fn complete_error(mut self, p: &mut Parser, msg: impl AsRef<str>) -> CompletedMarker {86 self.complete_raw(87 p,88 SyntaxKind::ERROR_CUSTOM,89 Some(SyntaxError::Custom {90 error: msg.as_ref().to_owned(),91 }),92 )93 }94 pub fn complete_missing(mut self, p: &mut Parser, expected: ExpectedSyntax) -> CompletedMarker {95 self.complete_raw(96 p,97 SyntaxKind::ERROR_MISSING_TOKEN,98 Some(SyntaxError::Missing { expected }),99 )100 }101 pub fn complete_unexpected(102 mut self,103 p: &mut Parser,104 expected: ExpectedSyntax,105 found: SyntaxKind,106 ) -> CompletedMarker {107 self.complete_raw(108 p,109 SyntaxKind::ERROR_UNEXPECTED_TOKEN,110 Some(SyntaxError::Unexpected { expected, found }),111 )112 }113114 pub fn forget(mut self, p: &mut Parser) {115 self.bomb.defuse();116 let event_at_pos = &mut p.events[self.start_event_idx];117 assert!(matches!(event_at_pos, Event::Pending));118119 *event_at_pos = Event::Noop;120 p.entered -= 1;121 p.clear_outdated_hints();122 }123}124pub struct CompletedMarker {125 start_event_idx: usize,126 finish_event_idx: usize,127}128impl CompletedMarker {129 pub(super) fn precede(self, p: &mut Parser) -> Marker {130 let new_m = p.start();131 match &mut p.events[self.start_event_idx] {132 Event::Start { forward_parent, .. } => {133 *forward_parent = Some(134 NonZeroUsize::new(new_m.start_event_idx - self.start_event_idx).expect("!= 0"),135 );136 }137 _ => unreachable!(),138 }139140 new_m141 }142 /// Create new node around existing marker, not counting anything that comes after it143 fn wrap_raw(144 self,145 p: &mut Parser,146 kind: SyntaxKind,147 error: Option<SyntaxError>,148 ) -> CompletedMarker {149 let new_m = p.start();150 match &mut p.events[self.start_event_idx] {151 Event::Start { forward_parent, .. } => {152 *forward_parent = Some(153 NonZeroUsize::new(new_m.start_event_idx - self.start_event_idx).expect("!= 0"),154 );155 }156 _ => unreachable!(),157 }158159 let completed = new_m.complete_raw(p, kind, error);160161 match &mut p.events[self.finish_event_idx] {162 Event::Finish {163 wrapper,164 error: _error,165 } => {166 *wrapper = Some(167 NonZeroUsize::new(completed.finish_event_idx - self.finish_event_idx)168 .expect("!= 0"),169 );170 }171 _ => unreachable!(),172 }173 completed174 }175 pub fn wrap(self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker {176 self.wrap_raw(p, kind, None)177 }178 pub fn wrap_error(self, p: &mut Parser, msg: impl AsRef<str>) -> CompletedMarker {179 self.wrap_raw(180 p,181 SyntaxKind::ERROR_CUSTOM,182 Some(SyntaxError::Custom {183 error: msg.as_ref().to_owned(),184 }),185 )186 }187}1use std::num::NonZeroUsize;23use drop_bomb::DropBomb;45use crate::{6 event::Event,7 parser::{ExpectedSyntax, Parser, SyntaxError},8 SyntaxKind,9};1011// pub struct Ranger {12// pub pos: usize,13// }14// impl Ranger {15// pub fn finish(self, p: &Parser) -> FinishedRanger {16// FinishedRanger {17// start_token: self.pos,18// end_token: self.pos.max(p.offset.saturating_sub(1)),19// }20// }21// }2223pub struct FinishedRanger {24 pub start_token: usize,25 pub end_token: usize,26}27impl FinishedRanger {28 #[allow(dead_code)]29 pub fn had_error_since(&self, p: &Parser) -> bool {30 p.last_error_token >= self.start_token31 }32}3334#[must_use]35pub struct Marker {36 pub start_event_idx: usize,37 bomb: DropBomb,38}39impl Marker {40 pub fn new(pos: usize) -> Self {41 Self {42 start_event_idx: pos,43 bomb: DropBomb::new("marked dropped while not completed"),44 }45 }46 fn complete_raw(47 mut self,48 p: &mut Parser,49 kind: SyntaxKind,50 error: Option<SyntaxError>,51 ) -> CompletedMarker {52 self.bomb.defuse();53 assert!(54 !kind.is_enum(),55 "{kind:?} is a enum kind, you should use variant kinds instead"56 );57 // TODO: is_lexer should return true if enum variant has #[regex]/#[token] over it, or it is defined as lexer error explicitly58 // debug_assert!(59 // !kind.is_lexer(),60 // "{kind:?} should be only emitted by lexer, not used directly"61 // );62 let event_at_pos = &mut p.events[self.start_event_idx];63 assert!(matches!(event_at_pos, Event::Pending));6465 *event_at_pos = Event::Start {66 kind,67 forward_parent: None,68 };6970 let finish_event_idx = p.events.len();71 p.events.push(Event::Finish {72 wrapper: None,73 error: error.map(Box::new),74 });75 p.entered -= 1;76 p.clear_outdated_hints();77 CompletedMarker {78 start_event_idx: self.start_event_idx,79 finish_event_idx,80 }81 }82 pub fn complete(self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker {83 self.complete_raw(p, kind, None)84 }85 pub fn complete_error(self, p: &mut Parser, msg: impl AsRef<str>) -> CompletedMarker {86 self.complete_raw(87 p,88 SyntaxKind::ERROR_CUSTOM,89 Some(SyntaxError::Custom {90 error: msg.as_ref().to_owned(),91 }),92 )93 }94 pub fn complete_missing(self, p: &mut Parser, expected: ExpectedSyntax) -> CompletedMarker {95 self.complete_raw(96 p,97 SyntaxKind::ERROR_MISSING_TOKEN,98 Some(SyntaxError::Missing { expected }),99 )100 }101 pub fn complete_unexpected(102 self,103 p: &mut Parser,104 expected: ExpectedSyntax,105 found: SyntaxKind,106 ) -> CompletedMarker {107 self.complete_raw(108 p,109 SyntaxKind::ERROR_UNEXPECTED_TOKEN,110 Some(SyntaxError::Unexpected { expected, found }),111 )112 }113114 pub fn forget(mut self, p: &mut Parser) {115 self.bomb.defuse();116 let event_at_pos = &mut p.events[self.start_event_idx];117 assert!(matches!(event_at_pos, Event::Pending));118119 *event_at_pos = Event::Noop;120 p.entered -= 1;121 p.clear_outdated_hints();122 }123}124pub struct CompletedMarker {125 start_event_idx: usize,126 finish_event_idx: usize,127}128impl CompletedMarker {129 pub(super) fn precede(self, p: &mut Parser) -> Marker {130 let new_m = p.start();131 match &mut p.events[self.start_event_idx] {132 Event::Start { forward_parent, .. } => {133 *forward_parent = Some(134 NonZeroUsize::new(new_m.start_event_idx - self.start_event_idx).expect("!= 0"),135 );136 }137 _ => unreachable!(),138 }139140 new_m141 }142 /// Create new node around existing marker, not counting anything that comes after it143 fn wrap_raw(144 self,145 p: &mut Parser,146 kind: SyntaxKind,147 error: Option<SyntaxError>,148 ) -> CompletedMarker {149 let new_m = p.start();150 match &mut p.events[self.start_event_idx] {151 Event::Start { forward_parent, .. } => {152 *forward_parent = Some(153 NonZeroUsize::new(new_m.start_event_idx - self.start_event_idx).expect("!= 0"),154 );155 }156 _ => unreachable!(),157 }158159 let completed = new_m.complete_raw(p, kind, error);160161 match &mut p.events[self.finish_event_idx] {162 Event::Finish {163 wrapper,164 error: _error,165 } => {166 *wrapper = Some(167 NonZeroUsize::new(completed.finish_event_idx - self.finish_event_idx)168 .expect("!= 0"),169 );170 }171 _ => unreachable!(),172 }173 completed174 }175 pub fn wrap(self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker {176 self.wrap_raw(p, kind, None)177 }178 pub fn wrap_error(self, p: &mut Parser, msg: impl AsRef<str>) -> CompletedMarker {179 self.wrap_raw(180 p,181 SyntaxKind::ERROR_CUSTOM,182 Some(SyntaxError::Custom {183 error: msg.as_ref().to_owned(),184 }),185 )186 }187}crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -5,7 +5,7 @@
use crate::{
event::Event,
- marker::{CompletedMarker, Marker, Ranger},
+ marker::{CompletedMarker, Marker},
nodes::{BinaryOperatorKind, Literal, Number, Text, UnaryOperatorKind},
token_set::SyntaxKindSet,
AstToken, SyntaxKind,
@@ -107,10 +107,10 @@
self.entered += 1;
Marker::new(start_event_idx)
}
- pub fn start_ranger(&mut self) -> Ranger {
- let pos = self.offset;
- Ranger { pos }
- }
+ // pub fn start_ranger(&mut self) -> Ranger {
+ // let pos = self.offset;
+ // Ranger { pos }
+ // }
pub fn parse(mut self) -> Vec<Event> {
let m = self.start();
expr(&mut self);
@@ -144,13 +144,13 @@
}
}
- pub(crate) fn expect_with_no_skip(&mut self, kind: SyntaxKind) {
- if self.at(kind) {
- self.bump();
- } else {
- self.error_with_no_skip();
- }
- }
+ // pub(crate) fn expect_with_no_skip(&mut self, kind: SyntaxKind) {
+ // if self.at(kind) {
+ // self.bump();
+ // } else {
+ // self.error_with_no_skip();
+ // }
+ // }
pub fn error_with_no_skip(&mut self) -> CompletedMarker {
self.error_with_recovery_set(SyntaxKindSet::ALL)
}
@@ -773,18 +773,18 @@
m.complete(p, DESTRUCT_SKIP)
} else if p.at(T!['[']) {
p.bump();
- let mut had_rest = false;
+ // let mut had_rest = false;
loop {
if p.at(T![']']) {
p.bump();
break;
} else if p.at(T![...]) {
- let m_err = p.start_ranger();
+ // let m_err = p.start_ranger();
destruct_rest(p);
// if had_rest {
// p.custom_error(m_err.finish(p), "only one rest can be present in array");
// }
- had_rest = true;
+ // had_rest = true;
} else {
destruct(p);
}
@@ -804,7 +804,7 @@
p.bump();
break;
} else if p.at(T![...]) {
- let m_err = p.start_ranger();
+ // let m_err = p.start_ranger();
destruct_rest(p);
// if had_rest {
// p.custom_error(m_err.finish(p), "only one rest can be present in object");