File tree Expand file tree Collapse file tree 3 files changed +36
-3
lines changed
src/StaticAnalysis/Visitor
tests/StaticAnalysis/Visitor Expand file tree Collapse file tree 3 files changed +36
-3
lines changed Original file line number Diff line number Diff line change @@ -105,7 +105,7 @@ public function leaveNode(Node $node): null
105105 return null ;
106106 }
107107
108- if (!$ node instanceof Class_ && !$ node instanceof Trait_) {
108+ if (!$ node instanceof Class_ && !$ node instanceof Enum_ && ! $ node instanceof Trait_) {
109109 return null ;
110110 }
111111
@@ -396,11 +396,11 @@ private function typeAsString(Identifier|Name $node): string
396396 /**
397397 * @param list<non-empty-string> $traits
398398 */
399- private function postProcessClassOrTrait (Class_ |Trait_ $ node , array $ traits ): void
399+ private function postProcessClassOrTrait (Class_ |Enum_ | Trait_ $ node , array $ traits ): void
400400 {
401401 $ name = $ node ->namespacedName ->toString ();
402402
403- if ($ node instanceof Class_) {
403+ if ($ node instanceof Class_ || $ node instanceof Enum_ ) {
404404 assert (isset ($ this ->classes [$ name ]));
405405
406406 $ this ->classes [$ name ] = new \SebastianBergmann \CodeCoverage \StaticAnalysis \Class_ (
Original file line number Diff line number Diff line change 1+ <?php declare (strict_types=1 );
2+ namespace SebastianBergmann \CodeCoverage \TestFixture ;
3+
4+ trait EnumTrait
5+ {
6+ public function traitMethod (): string
7+ {
8+ return 'from trait ' ;
9+ }
10+ }
11+
12+ enum EnumWithTrait: string
13+ {
14+ use EnumTrait;
15+
16+ case Foo = 'foo ' ;
17+ }
Original file line number Diff line number Diff line change @@ -255,6 +255,22 @@ public function testDetailsAboutExtendedClassesImplementedInterfacesAndUsedTrait
255255 $ this ->assertArrayHasKey ('six ' , $ methods );
256256 }
257257
258+ public function testHandlesEnumUsingTrait (): void
259+ {
260+ $ codeUnitFindingVisitor = $ this ->findCodeUnits (__DIR__ . '/../../../_files/source_with_enum_using_trait.php ' );
261+
262+ $ classes = $ codeUnitFindingVisitor ->classes ();
263+
264+ $ this ->assertCount (1 , $ classes );
265+
266+ $ enum = $ classes ['SebastianBergmann\CodeCoverage\TestFixture\EnumWithTrait ' ];
267+
268+ $ this ->assertSame (
269+ ['SebastianBergmann\CodeCoverage\TestFixture\EnumTrait ' ],
270+ $ enum ->traits (),
271+ );
272+ }
273+
258274 private function findCodeUnits (string $ filename ): CodeUnitFindingVisitor
259275 {
260276 $ nodes = (new ParserFactory )->createForHostVersion ()->parse (
You can’t perform that action at this time.
0 commit comments