File tree Expand file tree Collapse file tree 3 files changed +27
-4
lines changed
Expand file tree Collapse file tree 3 files changed +27
-4
lines changed Original file line number Diff line number Diff line change @@ -27,7 +27,15 @@ public function fromClassReflection(\ReflectionClass $from): ClassType
2727 $ class ->setType ($ from ->isInterface () ? 'interface ' : ($ from ->isTrait () ? 'trait ' : 'class ' ));
2828 $ class ->setFinal ($ from ->isFinal () && $ class ->getType () === 'class ' );
2929 $ class ->setAbstract ($ from ->isAbstract () && $ class ->getType () === 'class ' );
30- $ class ->setImplements ($ from ->getInterfaceNames ());
30+
31+ $ ifaces = $ from ->getInterfaceNames ();
32+ foreach ($ ifaces as $ iface ) {
33+ $ ifaces = array_filter ($ ifaces , function ($ item ) use ($ iface ) {
34+ return !is_subclass_of ($ iface , $ item );
35+ });
36+ }
37+ $ class ->setImplements ($ ifaces );
38+
3139 $ class ->setComment (Helpers::unformatDocComment ((string ) $ from ->getDocComment ()));
3240 if ($ from ->getParentClass ()) {
3341 $ class ->setExtends ($ from ->getParentClass ()->getName ());
Original file line number Diff line number Diff line change 1- class B extends A
1+ class B extends A implements I3
22{
33 public $d;
44
Original file line number Diff line number Diff line change @@ -8,7 +8,22 @@ use Tester\Assert;
88require __DIR__ . '/../bootstrap.php ' ;
99
1010
11- class A
11+ interface I1
12+ {
13+ }
14+
15+
16+ interface I2
17+ {
18+ }
19+
20+
21+ interface I3 extends I2
22+ {
23+ }
24+
25+
26+ class A implements I1
1227{
1328 public $ a ;
1429
@@ -23,7 +38,7 @@ class A
2338}
2439
2540
26- class B extends A
41+ class B extends A implements I3
2742{
2843 public $ d ;
2944
You can’t perform that action at this time.
0 commit comments