@@ -192,8 +192,20 @@ private function checkParametersTypeHints(\PHP_CodeSniffer_File $phpcsFile, int
192192 }
193193 } elseif ($ this ->definitionContainsTraversableTypeHint ($ phpcsFile , $ functionPointer , $ parameterTypeHintDefinition )) {
194194 $ parameterTypeHintDefinitionParts = explode ('| ' , $ parameterTypeHintDefinition );
195- $ possibleParameterTypeHint = $ this ->isTraversableTypeHint (TypeHintHelper::getFullyQualifiedTypeHint ($ phpcsFile , $ functionPointer , $ parameterTypeHintDefinitionParts [0 ])) ? $ parameterTypeHintDefinitionParts [0 ] : $ parameterTypeHintDefinitionParts [1 ];
196195 $ nullableParameterTypeHint = false ;
196+
197+ if ($ this ->isTraversableTypeHint (TypeHintHelper::getFullyQualifiedTypeHint ($ phpcsFile , $ functionPointer , $ parameterTypeHintDefinitionParts [0 ]))) {
198+ $ possibleParameterTypeHint = $ parameterTypeHintDefinitionParts [0 ];
199+ $ itemsTypeHintDefinition = $ parameterTypeHintDefinitionParts [1 ];
200+ } else {
201+ $ possibleParameterTypeHint = $ parameterTypeHintDefinitionParts [1 ];
202+ $ itemsTypeHintDefinition = $ parameterTypeHintDefinitionParts [0 ];
203+ }
204+
205+ if (!$ this ->definitionContainsTraversableTypeHintSpeficication ($ itemsTypeHintDefinition )) {
206+ return ;
207+ }
208+
197209 } else {
198210 return ;
199211 }
@@ -398,8 +410,20 @@ private function checkReturnTypeHints(\PHP_CodeSniffer_File $phpcsFile, int $fun
398410 }
399411 } elseif ($ this ->definitionContainsTraversableTypeHint ($ phpcsFile , $ functionPointer , $ returnTypeHintDefinition )) {
400412 $ returnTypeHintDefinitionParts = explode ('| ' , $ returnTypeHintDefinition );
401- $ possibleReturnTypeHint = $ this ->isTraversableTypeHint (TypeHintHelper::getFullyQualifiedTypeHint ($ phpcsFile , $ functionPointer , $ returnTypeHintDefinitionParts [0 ])) ? $ returnTypeHintDefinitionParts [0 ] : $ returnTypeHintDefinitionParts [1 ];
402413 $ nullableReturnTypeHint = false ;
414+
415+ if ($ this ->isTraversableTypeHint (TypeHintHelper::getFullyQualifiedTypeHint ($ phpcsFile , $ functionPointer , $ returnTypeHintDefinitionParts [0 ]))) {
416+ $ possibleReturnTypeHint = $ returnTypeHintDefinitionParts [0 ];
417+ $ itemsTypeHintDefinition = $ returnTypeHintDefinitionParts [1 ];
418+ } else {
419+ $ possibleReturnTypeHint = $ returnTypeHintDefinitionParts [1 ];
420+ $ itemsTypeHintDefinition = $ returnTypeHintDefinitionParts [0 ];
421+ }
422+
423+ if (!$ this ->definitionContainsTraversableTypeHintSpeficication ($ itemsTypeHintDefinition )) {
424+ return ;
425+ }
426+
403427 } else {
404428 return ;
405429 }
0 commit comments