@@ -1241,6 +1241,38 @@ protected function tokenize($string)
1241
1241
}//end if
1242
1242
}//end if
1243
1243
1244
+ /*
1245
+ "readonly" keyword for PHP < 8.1
1246
+ */
1247
+
1248
+ if (PHP_VERSION_ID < 80100
1249
+ && $ tokenIsArray === true
1250
+ && strtolower ($ token [1 ]) === 'readonly '
1251
+ && isset ($ this ->tstringContexts [$ finalTokens [$ lastNotEmptyToken ]['code ' ]]) === false
1252
+ ) {
1253
+ // Get the next non-whitespace token.
1254
+ for ($ i = ($ stackPtr + 1 ); $ i < $ numTokens ; $ i ++) {
1255
+ if (is_array ($ tokens [$ i ]) === false
1256
+ || $ tokens [$ i ][0 ] !== T_WHITESPACE
1257
+ ) {
1258
+ break ;
1259
+ }
1260
+ }
1261
+
1262
+ if (isset ($ tokens [$ i ]) === false
1263
+ || $ tokens [$ i ] !== '( '
1264
+ ) {
1265
+ $ finalTokens [$ newStackPtr ] = [
1266
+ 'code ' => T_READONLY ,
1267
+ 'type ' => 'T_READONLY ' ,
1268
+ 'content ' => $ token [1 ],
1269
+ ];
1270
+ $ newStackPtr ++;
1271
+
1272
+ continue ;
1273
+ }
1274
+ }//end if
1275
+
1244
1276
/*
1245
1277
Before PHP 7.0, the "yield from" was tokenized as
1246
1278
T_YIELD, T_WHITESPACE and T_STRING. So look for
@@ -2924,65 +2956,6 @@ protected function processAdditional()
2924
2956
$ this ->tokens [$ i ]['code ' ] = T_STRING ;
2925
2957
$ this ->tokens [$ i ]['type ' ] = 'T_STRING ' ;
2926
2958
}
2927
- } else if ($ this ->tokens [$ i ]['code ' ] === T_STRING
2928
- && strtolower ($ this ->tokens [$ i ]['content ' ]) === 'readonly '
2929
- ) {
2930
- /*
2931
- Adds "readonly" keyword support for PHP < 8.1.
2932
- */
2933
-
2934
- $ allowedAfter = [
2935
- T_STRING => T_STRING ,
2936
- T_NS_SEPARATOR => T_NS_SEPARATOR ,
2937
- T_NAME_FULLY_QUALIFIED => T_NAME_FULLY_QUALIFIED ,
2938
- T_NAME_RELATIVE => T_NAME_RELATIVE ,
2939
- T_NAME_QUALIFIED => T_NAME_QUALIFIED ,
2940
- T_TYPE_UNION => T_TYPE_UNION ,
2941
- T_BITWISE_OR => T_BITWISE_OR ,
2942
- T_BITWISE_AND => T_BITWISE_AND ,
2943
- T_ARRAY => T_ARRAY ,
2944
- T_CALLABLE => T_CALLABLE ,
2945
- T_SELF => T_SELF ,
2946
- T_PARENT => T_PARENT ,
2947
- T_NULL => T_FALSE ,
2948
- T_NULLABLE => T_NULLABLE ,
2949
- T_STATIC => T_STATIC ,
2950
- T_PUBLIC => T_PUBLIC ,
2951
- T_PROTECTED => T_PROTECTED ,
2952
- T_PRIVATE => T_PRIVATE ,
2953
- T_VAR => T_VAR ,
2954
- ];
2955
-
2956
- $ shouldBeReadonly = true ;
2957
-
2958
- for ($ x = ($ i + 1 ); $ x < $ numTokens ; $ x ++) {
2959
- if (isset (Util \Tokens::$ emptyTokens [$ this ->tokens [$ x ]['code ' ]]) === true ) {
2960
- continue ;
2961
- }
2962
-
2963
- if ($ this ->tokens [$ x ]['code ' ] === T_VARIABLE
2964
- || $ this ->tokens [$ x ]['code ' ] === T_CONST
2965
- ) {
2966
- break ;
2967
- }
2968
-
2969
- if (isset ($ allowedAfter [$ this ->tokens [$ x ]['code ' ]]) === false ) {
2970
- $ shouldBeReadonly = false ;
2971
- break ;
2972
- }
2973
- }
2974
-
2975
- if ($ shouldBeReadonly === true ) {
2976
- if (PHP_CODESNIFFER_VERBOSITY > 1 ) {
2977
- $ line = $ this ->tokens [$ i ]['line ' ];
2978
- echo "\t* token $ i on line $ line changed from T_STRING to T_READONLY " .PHP_EOL ;
2979
- }
2980
-
2981
- $ this ->tokens [$ i ]['code ' ] = T_READONLY ;
2982
- $ this ->tokens [$ i ]['type ' ] = 'T_READONLY ' ;
2983
- }
2984
-
2985
- continue ;
2986
2959
}//end if
2987
2960
2988
2961
if (($ this ->tokens [$ i ]['code ' ] !== T_CASE
0 commit comments