parse empty statemet as statemetn

This commit is contained in:
Aleksey Kladov 2021-12-29 20:04:36 +03:00
parent 841cd30b45
commit b5369927d7
4 changed files with 15 additions and 20 deletions

View file

@ -98,11 +98,6 @@ pub(crate) mod entry {
let m = p.start();
while !p.at(EOF) {
if p.at(T![;]) {
p.bump(T![;]);
continue;
}
expressions::stmt(p, expressions::Semicolon::Optional);
}

View file

@ -30,6 +30,10 @@ fn expr_no_struct(p: &mut Parser) {
}
pub(super) fn stmt(p: &mut Parser, semicolon: Semicolon) {
if p.eat(T![;]) {
return;
}
let m = p.start();
// test attr_on_expr_stmt
// fn foo() {
@ -143,12 +147,6 @@ pub(super) fn expr_block_contents(p: &mut Parser) {
// fn f() {};
// struct S {};
// }
if p.at(T![;]) {
p.bump(T![;]);
continue;
}
stmt(p, Semicolon::Required);
}
}

View file

@ -76,8 +76,7 @@ impl<'a> LexedStr<'a> {
builder.eat_trivias();
(builder.sink)(StrStep::Exit);
}
State::PendingEnter => (),
State::Normal => unreachable!(),
State::PendingEnter | State::Normal => (),
}
let is_eof = builder.pos == builder.lexed.len();
@ -101,9 +100,8 @@ enum State {
impl Builder<'_, '_> {
fn token(&mut self, kind: SyntaxKind, n_tokens: u8) {
match mem::replace(&mut self.state, State::Normal) {
State::PendingEnter => unreachable!(),
State::PendingExit => (self.sink)(StrStep::Exit),
State::Normal => (),
State::PendingEnter | State::Normal => (),
}
self.eat_trivias();
self.do_token(kind, n_tokens as usize);