Skip to content

Commit 5cd5185

Browse files
authored
refactor(es/parser): Reduce token query (#10834)
1 parent ed6956a commit 5cd5185

File tree

1 file changed

+10
-10
lines changed
  • crates/swc_ecma_lexer/src/common/parser

1 file changed

+10
-10
lines changed

crates/swc_ecma_lexer/src/common/parser/expr.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,11 @@ pub(crate) fn parse_tagged_tpl<'a, P: Parser<'a>>(
228228
}
229229

230230
pub fn parse_str_lit<'a>(p: &mut impl Parser<'a>) -> swc_ecma_ast::Str {
231-
let start = p.cur_pos();
231+
debug_assert!(p.input_mut().cur().is_some_and(|cur| cur.is_str()));
232+
let Some(token_and_span) = p.input().get_cur() else {
233+
unreachable!();
234+
};
235+
let start = token_and_span.span().lo;
232236
let t = p.bump();
233237
debug_assert!(t.is_str());
234238
let (value, raw) = t.take_str(p.input_mut());
@@ -240,10 +244,12 @@ pub fn parse_str_lit<'a>(p: &mut impl Parser<'a>) -> swc_ecma_ast::Str {
240244
}
241245

242246
pub fn parse_lit<'a, P: Parser<'a>>(p: &mut P) -> PResult<Lit> {
243-
let start = p.cur_pos();
244-
let Some(cur) = p.input_mut().cur() else {
247+
p.input_mut().cur();
248+
let Some(token_and_span) = p.input().get_cur() else {
245249
return Err(eof_error(p));
246250
};
251+
let start = token_and_span.span().lo;
252+
let cur = token_and_span.token();
247253
let v = if cur.is_null() {
248254
p.bump();
249255
let span = p.span(start);
@@ -254,13 +260,7 @@ pub fn parse_lit<'a, P: Parser<'a>>(p: &mut P) -> PResult<Lit> {
254260
let span = p.span(start);
255261
Lit::Bool(swc_ecma_ast::Bool { span, value })
256262
} else if cur.is_str() {
257-
let t = p.bump();
258-
let (value, raw) = t.take_str(p.input_mut());
259-
Lit::Str(swc_ecma_ast::Str {
260-
span: p.span(start),
261-
value,
262-
raw: Some(raw),
263-
})
263+
Lit::Str(parse_str_lit(p))
264264
} else if cur.is_num() {
265265
let t = p.bump();
266266
let (value, raw) = t.take_num(p.input_mut());

0 commit comments

Comments
 (0)