File tree Expand file tree Collapse file tree
src/StaticAnalysis/Visitor
tests/StaticAnalysis/Visitor Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -107,7 +107,7 @@ public function leaveNode(Node $node): null
107107 return null ;
108108 }
109109
110- if (!$ node instanceof Class_ && !$ node instanceof Trait_) {
110+ if (!$ node instanceof Class_ && !$ node instanceof Enum_ && ! $ node instanceof Trait_) {
111111 return null ;
112112 }
113113
@@ -398,11 +398,11 @@ private function typeAsString(Identifier|Name $node): string
398398 /**
399399 * @param list<non-empty-string> $traits
400400 */
401- private function postProcessClassOrTrait (Class_ |Trait_ $ node , array $ traits ): void
401+ private function postProcessClassOrTrait (Class_ |Enum_ | Trait_ $ node , array $ traits ): void
402402 {
403403 $ name = $ node ->namespacedName ->toString ();
404404
405- if ($ node instanceof Class_) {
405+ if ($ node instanceof Class_ || $ node instanceof Enum_ ) {
406406 assert (isset ($ this ->classes [$ name ]));
407407
408408 $ 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 @@ -304,6 +304,22 @@ public function testHandlesTraitUsingTrait(): void
304304 );
305305 }
306306
307+ public function testHandlesEnumUsingTrait (): void
308+ {
309+ $ codeUnitFindingVisitor = $ this ->findCodeUnits (__DIR__ . '/../../../_files/source_with_enum_using_trait.php ' );
310+
311+ $ classes = $ codeUnitFindingVisitor ->classes ();
312+
313+ $ this ->assertCount (1 , $ classes );
314+
315+ $ enum = $ classes ['SebastianBergmann\CodeCoverage\TestFixture\EnumWithTrait ' ];
316+
317+ $ this ->assertSame (
318+ ['SebastianBergmann\CodeCoverage\TestFixture\EnumTrait ' ],
319+ $ enum ->traits (),
320+ );
321+ }
322+
307323 private function findCodeUnits (string $ filename ): CodeUnitFindingVisitor
308324 {
309325 $ nodes = (new ParserFactory )->createForHostVersion ()->parse (
You can’t perform that action at this time.
0 commit comments