@@ -330,15 +330,15 @@ impl<'a> Lexer<'a> {
330
330
///
331
331
/// This is extracted as a method to reduce size of `read_token`.
332
332
#[ 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 > {
334
334
let had_line_break_before_last = self . had_line_break_before_last ( ) ;
335
335
let start = self . cur_pos ( ) ;
336
336
337
337
unsafe {
338
338
// Safety: cur() is Some(c as char)
339
339
self . input . bump ( ) ;
340
340
}
341
- let token = if c == b'&' {
341
+ let token = if C == b'&' {
342
342
BinOpToken :: BitAnd
343
343
} else {
344
344
BinOpToken :: BitOr
@@ -354,7 +354,7 @@ impl<'a> Lexer<'a> {
354
354
}
355
355
356
356
// '||', '&&'
357
- if self . input . cur ( ) == Some ( c as char ) {
357
+ if self . input . cur ( ) == Some ( C as char ) {
358
358
unsafe {
359
359
// Safety: cur() is Some(c)
360
360
self . input . bump ( ) ;
@@ -396,8 +396,8 @@ impl<'a> Lexer<'a> {
396
396
///
397
397
/// This is extracted as a method to reduce size of `read_token`.
398
398
#[ 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'*' ;
401
401
unsafe {
402
402
// Safety: cur() is Some(c)
403
403
self . input . bump ( ) ;
@@ -552,7 +552,7 @@ impl<'a> Lexer<'a> {
552
552
Ok ( Some ( vec ! [ c. into( ) ] ) )
553
553
}
554
554
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 > > {
556
556
let start = self . cur_pos ( ) ;
557
557
558
558
unsafe {
@@ -561,41 +561,41 @@ impl<'a> Lexer<'a> {
561
561
}
562
562
563
563
// '++', '--'
564
- Ok ( Some ( if self . input . cur ( ) == Some ( c as char ) {
564
+ Ok ( Some ( if self . input . cur ( ) == Some ( C as char ) {
565
565
unsafe {
566
566
// Safety: cur() is Some(c)
567
567
self . input . bump ( ) ;
568
568
}
569
569
570
570
// 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'>' ) {
572
572
self . emit_module_mode_error ( start, SyntaxError :: LegacyCommentInModule ) ;
573
573
self . skip_line_comment ( 0 ) ;
574
574
self . skip_space :: < true > ( ) ;
575
575
return self . read_token ( ) ;
576
576
}
577
577
578
- if c == b'+' {
578
+ if C == b'+' {
579
579
Token :: PlusPlus
580
580
} else {
581
581
Token :: MinusMinus
582
582
}
583
583
} else if self . input . eat_byte ( b'=' ) {
584
- Token :: AssignOp ( if c == b'+' {
584
+ Token :: AssignOp ( if C == b'+' {
585
585
AssignOp :: AddAssign
586
586
} else {
587
587
AssignOp :: SubAssign
588
588
} )
589
589
} else {
590
- Token :: BinOp ( if c == b'+' {
590
+ Token :: BinOp ( if C == b'+' {
591
591
BinOpToken :: Add
592
592
} else {
593
593
BinOpToken :: Sub
594
594
} )
595
595
} ) )
596
596
}
597
597
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 > > {
599
599
let start = self . cur_pos ( ) ;
600
600
let had_line_break_before_last = self . had_line_break_before_last ( ) ;
601
601
@@ -608,7 +608,7 @@ impl<'a> Lexer<'a> {
608
608
// "=="
609
609
610
610
if self . input . eat_byte ( b'=' ) {
611
- if c == b'!' {
611
+ if C == b'!' {
612
612
Token :: BinOp ( BinOpToken :: NotEqEq )
613
613
} else {
614
614
// =======
@@ -622,16 +622,16 @@ impl<'a> Lexer<'a> {
622
622
623
623
Token :: BinOp ( BinOpToken :: EqEqEq )
624
624
}
625
- } else if c == b'!' {
625
+ } else if C == b'!' {
626
626
Token :: BinOp ( BinOpToken :: NotEq )
627
627
} else {
628
628
Token :: BinOp ( BinOpToken :: EqEq )
629
629
}
630
- } else if c == b'=' && self . input . eat_byte ( b'>' ) {
630
+ } else if C == b'=' && self . input . eat_byte ( b'>' ) {
631
631
// "=>"
632
632
633
633
Token :: Arrow
634
- } else if c == b'!' {
634
+ } else if C == b'!' {
635
635
Token :: Bang
636
636
} else {
637
637
Token :: AssignOp ( AssignOp :: Assign )
@@ -655,51 +655,49 @@ impl Lexer<'_> {
655
655
}
656
656
657
657
#[ 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 > > {
661
659
let had_line_break_before_last = self . had_line_break_before_last ( ) ;
662
660
let start = self . cur_pos ( ) ;
663
- let c = self . cur ( ) . unwrap ( ) ;
664
661
self . bump ( ) ;
665
662
666
663
if self . syntax . typescript ( )
667
664
&& self . ctx . contains ( Context :: InType )
668
665
&& !self . ctx . contains ( Context :: ShouldNotLexLtOrGtAsType )
669
666
{
670
- if c == '<' {
667
+ if C == b '<' {
671
668
return Ok ( Some ( tok ! ( '<' ) ) ) ;
672
- } else if c == '>' {
669
+ } else if C == b '>' {
673
670
return Ok ( Some ( tok ! ( '>' ) ) ) ;
674
671
}
675
672
}
676
673
677
674
// 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
+ {
679
677
self . skip_line_comment ( 3 ) ;
680
678
self . skip_space :: < true > ( ) ;
681
679
self . emit_module_mode_error ( start, SyntaxError :: LegacyCommentInModule ) ;
682
680
683
681
return self . read_token ( ) ;
684
682
}
685
683
686
- let mut op = if c == '<' {
684
+ let mut op = if C == b '<' {
687
685
BinOpToken :: Lt
688
686
} else {
689
687
BinOpToken :: Gt
690
688
} ;
691
689
692
690
// '<<', '>>'
693
- if self . cur ( ) == Some ( c ) {
691
+ if self . cur ( ) == Some ( C as char ) {
694
692
self . bump ( ) ;
695
- op = if c == '<' {
693
+ op = if C == b '<' {
696
694
BinOpToken :: LShift
697
695
} else {
698
696
BinOpToken :: RShift
699
697
} ;
700
698
701
699
//'>>>'
702
- if c == '>' && self . cur ( ) == Some ( c ) {
700
+ if C == b '>' && self . cur ( ) == Some ( C as char ) {
703
701
self . bump ( ) ;
704
702
op = BinOpToken :: ZeroFillRShift ;
705
703
}
0 commit comments