diff --git a/crates/oxc_parser/src/js/arrow.rs b/crates/oxc_parser/src/js/arrow.rs index fb59f3a668d20..7582945e819bd 100644 --- a/crates/oxc_parser/src/js/arrow.rs +++ b/crates/oxc_parser/src/js/arrow.rs @@ -61,8 +61,7 @@ impl<'a> ParserImpl<'a> { } fn is_parenthesized_arrow_function_expression_worker(&mut self) -> Tristate { - if self.at(Kind::Async) { - self.bump(Kind::Async); + if self.eat(Kind::Async) { if self.cur_token().is_on_new_line() { return Tristate::False; } diff --git a/crates/oxc_parser/src/js/declaration.rs b/crates/oxc_parser/src/js/declaration.rs index 265173123c1f9..b3f5e84e11ad7 100644 --- a/crates/oxc_parser/src/js/declaration.rs +++ b/crates/oxc_parser/src/js/declaration.rs @@ -41,8 +41,7 @@ impl<'a> ParserImpl<'a> { fn is_next_token_using_keyword_then_binding_identifier(&mut self) -> bool { self.bump_any(); - if self.at(Kind::Using) && !self.cur_token().is_on_new_line() { - self.bump_any(); + if !self.cur_token().is_on_new_line() && self.eat(Kind::Using) { self.cur_kind().is_binding_identifier() && !self.cur_token().is_on_new_line() } else { false @@ -111,10 +110,9 @@ impl<'a> ParserImpl<'a> { // ^ definite let mut definite = false; if binding_kind.is_binding_identifier() - && self.at(Kind::Bang) && !self.cur_token().is_on_new_line() + && self.eat(Kind::Bang) { - self.bump(Kind::Bang); definite = true; } let optional = self.eat(Kind::Question); // not allowed, but checked in checker/typescript.rs diff --git a/crates/oxc_parser/src/js/expression.rs b/crates/oxc_parser/src/js/expression.rs index 783c9a52df62c..0f935b9c67861 100644 --- a/crates/oxc_parser/src/js/expression.rs +++ b/crates/oxc_parser/src/js/expression.rs @@ -758,8 +758,7 @@ impl<'a> ParserImpl<'a> { } if !question_dot { - if self.at(Kind::Bang) && !self.cur_token().is_on_new_line() && self.is_ts { - self.bump_any(); + if self.is_ts && !self.cur_token().is_on_new_line() && self.eat(Kind::Bang) { lhs = self.ast.expression_ts_non_null(self.end_span(lhs_span), lhs); continue; }