@@ -982,17 +982,27 @@ fn consume_to_eof(input: &str, token_type: RawTokenType) -> (usize, RawTokenType
982
982
983
983
fn compiler_directive_type ( input : & str , offset : usize ) -> RawTokenType {
984
984
let count = count_matching ( input, offset, |b| b. is_ascii_alphabetic ( ) ) ;
985
- // `to_lowercase` here is slow, but this code isn't hit very often.
986
- match input[ offset..( offset + count) ] . to_lowercase ( ) . as_str ( ) {
987
- "if" => TT :: ConditionalDirective ( CDK :: If ) ,
988
- "ifdef" => TT :: ConditionalDirective ( CDK :: Ifdef ) ,
989
- "ifndef" => TT :: ConditionalDirective ( CDK :: Ifndef ) ,
990
- "ifopt" => TT :: ConditionalDirective ( CDK :: Ifopt ) ,
991
- "elseif" => TT :: ConditionalDirective ( CDK :: Elseif ) ,
992
- "else" => TT :: ConditionalDirective ( CDK :: Else ) ,
993
- "ifend" => TT :: ConditionalDirective ( CDK :: Ifend ) ,
994
- "endif" => TT :: ConditionalDirective ( CDK :: Endif ) ,
995
- _ => TT :: CompilerDirective ,
985
+
986
+ let directive = & input[ offset..( offset + count) ] ;
987
+
988
+ if directive. eq_ignore_ascii_case ( "if" ) {
989
+ TT :: ConditionalDirective ( CDK :: If )
990
+ } else if directive. eq_ignore_ascii_case ( "ifdef" ) {
991
+ TT :: ConditionalDirective ( CDK :: Ifdef )
992
+ } else if directive. eq_ignore_ascii_case ( "ifndef" ) {
993
+ TT :: ConditionalDirective ( CDK :: Ifndef )
994
+ } else if directive. eq_ignore_ascii_case ( "ifopt" ) {
995
+ TT :: ConditionalDirective ( CDK :: Ifopt )
996
+ } else if directive. eq_ignore_ascii_case ( "elseif" ) {
997
+ TT :: ConditionalDirective ( CDK :: Elseif )
998
+ } else if directive. eq_ignore_ascii_case ( "else" ) {
999
+ TT :: ConditionalDirective ( CDK :: Else )
1000
+ } else if directive. eq_ignore_ascii_case ( "ifend" ) {
1001
+ TT :: ConditionalDirective ( CDK :: Ifend )
1002
+ } else if directive. eq_ignore_ascii_case ( "endif" ) {
1003
+ TT :: ConditionalDirective ( CDK :: Endif )
1004
+ } else {
1005
+ TT :: CompilerDirective
996
1006
}
997
1007
}
998
1008
0 commit comments