diff --git a/rules-tests/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector/Fixture/skip_trait_use_adaptation_of_other_statement.php.inc b/rules-tests/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector/Fixture/skip_trait_use_adaptation_of_other_statement.php.inc new file mode 100644 index 00000000000..81ea1368205 --- /dev/null +++ b/rules-tests/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector/Fixture/skip_trait_use_adaptation_of_other_statement.php.inc @@ -0,0 +1,15 @@ + +----- + diff --git a/rules-tests/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector/Source/ThirdTrait.php b/rules-tests/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector/Source/ThirdTrait.php new file mode 100644 index 00000000000..663f08840e4 --- /dev/null +++ b/rules-tests/CodingStyle/Rector/Use_/SeparateMultiUseImportsRector/Source/ThirdTrait.php @@ -0,0 +1,13 @@ + $trait->toString(), + $traitUse->traits + ); + + foreach ($traitUse->adaptations as $traitAdaptation) { + // an adaptation that names no trait applies to all of them, and one that + // names a trait used elsewhere belongs to no statement here; either way it + // cannot follow a single trait, so the statement is left alone + if (! $traitAdaptation->trait instanceof Name) { + return null; + } + + if (! in_array($traitAdaptation->trait->toString(), $traitNames, true)) { + return null; + } + } + $traitUses = []; foreach ($traitUse->traits as $singleTraitUse) { $adaptation = []; foreach ($traitUse->adaptations as $traitAdaptation) { - if ($traitAdaptation instanceof Alias - && $traitAdaptation->trait instanceof Name + if ($traitAdaptation->trait instanceof Name && $traitAdaptation->trait->toString() === $singleTraitUse->toString()) { $adaptation[] = $traitAdaptation; }