@@ -228,7 +228,11 @@ pub(crate) fn parse_tagged_tpl<'a, P: Parser<'a>>(
228228}
229229
230230pub 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
242246pub 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