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
27
27
$ class ->setType ($ from ->isInterface () ? 'interface ' : ($ from ->isTrait () ? 'trait ' : 'class ' ));
28
28
$ class ->setFinal ($ from ->isFinal () && $ class ->getType () === 'class ' );
29
29
$ 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
+
31
39
$ class ->setComment (Helpers::unformatDocComment ((string ) $ from ->getDocComment ()));
32
40
if ($ from ->getParentClass ()) {
33
41
$ 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
2
2
{
3
3
public $d;
4
4
Original file line number Diff line number Diff line change @@ -8,7 +8,22 @@ use Tester\Assert;
8
8
require __DIR__ . '/../bootstrap.php ' ;
9
9
10
10
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
12
27
{
13
28
public $ a ;
14
29
@@ -23,7 +38,7 @@ class A
23
38
}
24
39
25
40
26
- class B extends A
41
+ class B extends A implements I3
27
42
{
28
43
public $ d ;
29
44
You can’t perform that action at this time.
0 commit comments