@@ -469,22 +469,37 @@ impl<'a> Classifier<'a> {
469
469
// Assume that '&' or '*' is the reference or dereference operator
470
470
// or a reference or pointer type. Unless, of course, it looks like
471
471
// a logical and or a multiplication operator: `&&` or `* `.
472
- TokenKind :: Star => match self . peek ( ) {
473
- Some ( TokenKind :: Whitespace ) => Class :: Op ,
472
+ TokenKind :: Star => match self . tokens . peek ( ) {
473
+ Some ( ( TokenKind :: Whitespace , _) ) => Class :: Op ,
474
+ Some ( ( TokenKind :: Ident , "mut" ) ) => {
475
+ self . next ( ) ;
476
+ sink ( Highlight :: Token { text : "*mut" , class : Some ( Class :: RefKeyWord ) } ) ;
477
+ return ;
478
+ }
479
+ Some ( ( TokenKind :: Ident , "const" ) ) => {
480
+ self . next ( ) ;
481
+ sink ( Highlight :: Token { text : "*const" , class : Some ( Class :: RefKeyWord ) } ) ;
482
+ return ;
483
+ }
474
484
_ => Class :: RefKeyWord ,
475
485
} ,
476
- TokenKind :: And => match lookahead {
477
- Some ( TokenKind :: And ) => {
486
+ TokenKind :: And => match self . tokens . peek ( ) {
487
+ Some ( ( TokenKind :: And , _ ) ) => {
478
488
self . next ( ) ;
479
489
sink ( Highlight :: Token { text : "&&" , class : Some ( Class :: Op ) } ) ;
480
490
return ;
481
491
}
482
- Some ( TokenKind :: Eq ) => {
492
+ Some ( ( TokenKind :: Eq , _ ) ) => {
483
493
self . next ( ) ;
484
494
sink ( Highlight :: Token { text : "&=" , class : Some ( Class :: Op ) } ) ;
485
495
return ;
486
496
}
487
- Some ( TokenKind :: Whitespace ) => Class :: Op ,
497
+ Some ( ( TokenKind :: Whitespace , _) ) => Class :: Op ,
498
+ Some ( ( TokenKind :: Ident , "mut" ) ) => {
499
+ self . next ( ) ;
500
+ sink ( Highlight :: Token { text : "&mut" , class : Some ( Class :: RefKeyWord ) } ) ;
501
+ return ;
502
+ }
488
503
_ => Class :: RefKeyWord ,
489
504
} ,
490
505
0 commit comments