@@ -13,36 +13,29 @@ class CatchHelper
1313 */
1414 public static function findCatchedTypesInCatch (\PHP_CodeSniffer_File $ phpcsFile , array $ useStatements , array $ catchToken ): array
1515 {
16- $ catchedVariablePointer = $ phpcsFile ->findNext (T_VARIABLE , $ catchToken ['parenthesis_opener ' ] + 1 , $ catchToken ['parenthesis_closer ' ]);
17-
18- $ startPointer = TokenHelper::findNextEffective ($ phpcsFile , $ catchToken ['parenthesis_opener ' ] + 1 , $ catchedVariablePointer );
16+ $ nameEndPointer = $ catchToken ['parenthesis_opener ' ];
1917 $ tokens = $ phpcsFile ->getTokens ();
2018 $ catchedTypes = [];
21- while (true ) {
22- $ nextPointer = $ phpcsFile ->findNext (
23- array_merge ([T_BITWISE_OR ], TokenHelper::$ nameTokenCodes ),
24- $ startPointer ,
25- $ catchedVariablePointer
26- );
27- if ($ nextPointer === false ) {
19+ do {
20+ $ nameStartPointer = $ phpcsFile ->findNext (array_merge ([T_BITWISE_OR ], TokenHelper::$ nameTokenCodes ), $ nameEndPointer + 1 , $ catchToken ['parenthesis_closer ' ]);
21+ if ($ nameStartPointer === false ) {
2822 break ;
2923 }
30- $ nextToken = $ tokens [$ nextPointer ];
31- if ($ nextToken ['code ' ] === T_BITWISE_OR ) {
32- $ startPointer = TokenHelper::findNextEffective ($ phpcsFile , $ nextPointer + 1 , $ catchedVariablePointer );
33- continue ;
24+
25+ if ($ tokens [$ nameStartPointer ]['code ' ] === T_BITWISE_OR ) {
26+ $ nameStartPointer = TokenHelper::findNextEffective ($ phpcsFile , $ nameStartPointer + 1 , $ catchToken ['parenthesis_closer ' ]);
3427 }
3528
36- $ endPointer = TokenHelper::findNextExcluding ($ phpcsFile , TokenHelper::$ nameTokenCodes , $ nextPointer ) - 1 ;
29+ $ pointerAfterNameEndPointer = TokenHelper::findNextExcluding ($ phpcsFile , TokenHelper::$ nameTokenCodes , $ nameStartPointer + 1 );
30+ $ nameEndPointer = $ pointerAfterNameEndPointer === null ? $ nameStartPointer : $ pointerAfterNameEndPointer - 1 ;
31+
3732 $ catchedTypes [] = NamespaceHelper::resolveName (
3833 $ phpcsFile ,
39- TokenHelper::getContent ($ phpcsFile , $ startPointer , $ endPointer ),
34+ TokenHelper::getContent ($ phpcsFile , $ nameStartPointer , $ nameEndPointer ),
4035 $ useStatements ,
4136 $ catchToken ['parenthesis_opener ' ]
4237 );
43-
44- $ startPointer = $ endPointer + 1 ;
45- }
38+ } while (true );
4639
4740 return $ catchedTypes ;
4841 }
0 commit comments