@@ -330,15 +330,15 @@ impl<'a> Lexer<'a> {
330330 ///
331331 /// This is extracted as a method to reduce size of `read_token`.
332332 #[ inline( never) ]
333- fn read_token_logical ( & mut self , c : u8 ) -> LexResult < Token > {
333+ fn read_token_logical < const C : u8 > ( & mut self ) -> LexResult < Token > {
334334 let had_line_break_before_last = self . had_line_break_before_last ( ) ;
335335 let start = self . cur_pos ( ) ;
336336
337337 unsafe {
338338 // Safety: cur() is Some(c as char)
339339 self . input . bump ( ) ;
340340 }
341- let token = if c == b'&' {
341+ let token = if C == b'&' {
342342 BinOpToken :: BitAnd
343343 } else {
344344 BinOpToken :: BitOr
@@ -354,7 +354,7 @@ impl<'a> Lexer<'a> {
354354 }
355355
356356 // '||', '&&'
357- if self . input . cur ( ) == Some ( c as char ) {
357+ if self . input . cur ( ) == Some ( C as char ) {
358358 unsafe {
359359 // Safety: cur() is Some(c)
360360 self . input . bump ( ) ;
@@ -396,8 +396,8 @@ impl<'a> Lexer<'a> {
396396 ///
397397 /// This is extracted as a method to reduce size of `read_token`.
398398 #[ inline( never) ]
399- fn read_token_mul_mod ( & mut self , c : u8 ) -> LexResult < Token > {
400- let is_mul = c == b'*' ;
399+ fn read_token_mul_mod < const C : u8 > ( & mut self ) -> LexResult < Token > {
400+ let is_mul = C == b'*' ;
401401 unsafe {
402402 // Safety: cur() is Some(c)
403403 self . input . bump ( ) ;
@@ -552,7 +552,7 @@ impl<'a> Lexer<'a> {
552552 Ok ( Some ( vec ! [ c. into( ) ] ) )
553553 }
554554
555- fn read_token_plus_minus ( & mut self , c : u8 ) -> LexResult < Option < Token > > {
555+ fn read_token_plus_minus < const C : u8 > ( & mut self ) -> LexResult < Option < Token > > {
556556 let start = self . cur_pos ( ) ;
557557
558558 unsafe {
@@ -561,41 +561,41 @@ impl<'a> Lexer<'a> {
561561 }
562562
563563 // '++', '--'
564- Ok ( Some ( if self . input . cur ( ) == Some ( c as char ) {
564+ Ok ( Some ( if self . input . cur ( ) == Some ( C as char ) {
565565 unsafe {
566566 // Safety: cur() is Some(c)
567567 self . input . bump ( ) ;
568568 }
569569
570570 // Handle -->
571- if self . state . had_line_break && c == b'-' && self . eat ( b'>' ) {
571+ if self . state . had_line_break && C == b'-' && self . eat ( b'>' ) {
572572 self . emit_module_mode_error ( start, SyntaxError :: LegacyCommentInModule ) ;
573573 self . skip_line_comment ( 0 ) ;
574574 self . skip_space :: < true > ( ) ;
575575 return self . read_token ( ) ;
576576 }
577577
578- if c == b'+' {
578+ if C == b'+' {
579579 Token :: PlusPlus
580580 } else {
581581 Token :: MinusMinus
582582 }
583583 } else if self . input . eat_byte ( b'=' ) {
584- Token :: AssignOp ( if c == b'+' {
584+ Token :: AssignOp ( if C == b'+' {
585585 AssignOp :: AddAssign
586586 } else {
587587 AssignOp :: SubAssign
588588 } )
589589 } else {
590- Token :: BinOp ( if c == b'+' {
590+ Token :: BinOp ( if C == b'+' {
591591 BinOpToken :: Add
592592 } else {
593593 BinOpToken :: Sub
594594 } )
595595 } ) )
596596 }
597597
598- fn read_token_bang_or_eq ( & mut self , c : u8 ) -> LexResult < Option < Token > > {
598+ fn read_token_bang_or_eq < const C : u8 > ( & mut self ) -> LexResult < Option < Token > > {
599599 let start = self . cur_pos ( ) ;
600600 let had_line_break_before_last = self . had_line_break_before_last ( ) ;
601601
@@ -608,7 +608,7 @@ impl<'a> Lexer<'a> {
608608 // "=="
609609
610610 if self . input . eat_byte ( b'=' ) {
611- if c == b'!' {
611+ if C == b'!' {
612612 Token :: BinOp ( BinOpToken :: NotEqEq )
613613 } else {
614614 // =======
@@ -622,16 +622,16 @@ impl<'a> Lexer<'a> {
622622
623623 Token :: BinOp ( BinOpToken :: EqEqEq )
624624 }
625- } else if c == b'!' {
625+ } else if C == b'!' {
626626 Token :: BinOp ( BinOpToken :: NotEq )
627627 } else {
628628 Token :: BinOp ( BinOpToken :: EqEq )
629629 }
630- } else if c == b'=' && self . input . eat_byte ( b'>' ) {
630+ } else if C == b'=' && self . input . eat_byte ( b'>' ) {
631631 // "=>"
632632
633633 Token :: Arrow
634- } else if c == b'!' {
634+ } else if C == b'!' {
635635 Token :: Bang
636636 } else {
637637 Token :: AssignOp ( AssignOp :: Assign )
@@ -655,51 +655,49 @@ impl Lexer<'_> {
655655 }
656656
657657 #[ inline( never) ]
658- fn read_token_lt_gt ( & mut self ) -> LexResult < Option < Token > > {
659- debug_assert ! ( self . cur( ) == Some ( '<' ) || self . cur( ) == Some ( '>' ) ) ;
660-
658+ fn read_token_lt_gt < const C : u8 > ( & mut self ) -> LexResult < Option < Token > > {
661659 let had_line_break_before_last = self . had_line_break_before_last ( ) ;
662660 let start = self . cur_pos ( ) ;
663- let c = self . cur ( ) . unwrap ( ) ;
664661 self . bump ( ) ;
665662
666663 if self . syntax . typescript ( )
667664 && self . ctx . contains ( Context :: InType )
668665 && !self . ctx . contains ( Context :: ShouldNotLexLtOrGtAsType )
669666 {
670- if c == '<' {
667+ if C == b '<' {
671668 return Ok ( Some ( tok ! ( '<' ) ) ) ;
672- } else if c == '>' {
669+ } else if C == b '>' {
673670 return Ok ( Some ( tok ! ( '>' ) ) ) ;
674671 }
675672 }
676673
677674 // XML style comment. `<!--`
678- if c == '<' && self . is ( b'!' ) && self . peek ( ) == Some ( '-' ) && self . peek_ahead ( ) == Some ( '-' ) {
675+ if C == b'<' && self . is ( b'!' ) && self . peek ( ) == Some ( '-' ) && self . peek_ahead ( ) == Some ( '-' )
676+ {
679677 self . skip_line_comment ( 3 ) ;
680678 self . skip_space :: < true > ( ) ;
681679 self . emit_module_mode_error ( start, SyntaxError :: LegacyCommentInModule ) ;
682680
683681 return self . read_token ( ) ;
684682 }
685683
686- let mut op = if c == '<' {
684+ let mut op = if C == b '<' {
687685 BinOpToken :: Lt
688686 } else {
689687 BinOpToken :: Gt
690688 } ;
691689
692690 // '<<', '>>'
693- if self . cur ( ) == Some ( c ) {
691+ if self . cur ( ) == Some ( C as char ) {
694692 self . bump ( ) ;
695- op = if c == '<' {
693+ op = if C == b '<' {
696694 BinOpToken :: LShift
697695 } else {
698696 BinOpToken :: RShift
699697 } ;
700698
701699 //'>>>'
702- if c == '>' && self . cur ( ) == Some ( c ) {
700+ if C == b '>' && self . cur ( ) == Some ( C as char ) {
703701 self . bump ( ) ;
704702 op = BinOpToken :: ZeroFillRShift ;
705703 }
0 commit comments