Skip to content

Commit 2df14af

Browse files
committed
OverridingMethodRule - search for method prototype in traits
1 parent 22e21f0 commit 2df14af

18 files changed

+158
-3
lines changed

src/Php/PhpVersion.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,4 +247,9 @@ public function supportsNativeTypesInClassConstants(): bool
247247
return $this->versionId >= 80300;
248248
}
249249

250+
public function supportsAbstractTraitMethods(): bool
251+
{
252+
return $this->versionId >= 80000;
253+
}
254+
250255
}

src/Reflection/Annotations/AnnotationMethodReflection.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,9 @@ public function returnsByReference(): TrinaryLogic
140140
return TrinaryLogic::createMaybe();
141141
}
142142

143+
public function isAbstract(): TrinaryLogic
144+
{
145+
return TrinaryLogic::createNo();
146+
}
147+
143148
}

src/Reflection/Dummy/ChangedTypeMethodReflection.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PHPStan\Reflection\ParametersAcceptorWithPhpDocs;
1010
use PHPStan\TrinaryLogic;
1111
use PHPStan\Type\Type;
12+
use function is_bool;
1213

1314
class ChangedTypeMethodReflection implements ExtendedMethodReflection
1415
{
@@ -110,4 +111,14 @@ public function returnsByReference(): TrinaryLogic
110111
return $this->reflection->returnsByReference();
111112
}
112113

114+
public function isAbstract(): TrinaryLogic
115+
{
116+
$abstract = $this->reflection->isAbstract();
117+
if (is_bool($abstract)) {
118+
return TrinaryLogic::createFromBoolean($abstract);
119+
}
120+
121+
return $abstract;
122+
}
123+
113124
}

src/Reflection/Dummy/DummyConstructorReflection.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,9 @@ public function isFinalByKeyword(): TrinaryLogic
121121
return TrinaryLogic::createMaybe();
122122
}
123123

124+
public function isAbstract(): TrinaryLogic
125+
{
126+
return TrinaryLogic::createNo();
127+
}
128+
124129
}

src/Reflection/Dummy/DummyMethodReflection.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,9 @@ public function returnsByReference(): TrinaryLogic
113113
return TrinaryLogic::createMaybe();
114114
}
115115

116+
public function isAbstract(): TrinaryLogic
117+
{
118+
return TrinaryLogic::createNo();
119+
}
120+
116121
}

src/Reflection/ExtendedMethodReflection.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ public function returnsByReference(): TrinaryLogic;
3535

3636
public function isFinalByKeyword(): TrinaryLogic;
3737

38+
public function isAbstract(): TrinaryLogic|bool;
39+
3840
}

src/Reflection/Native/NativeMethodReflection.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ public function isPublic(): bool
5656
return $this->reflection->isPublic();
5757
}
5858

59-
public function isAbstract(): bool
59+
public function isAbstract(): TrinaryLogic
6060
{
61-
return $this->reflection->isAbstract();
61+
return TrinaryLogic::createFromBoolean($this->reflection->isAbstract());
6262
}
6363

6464
public function getPrototype(): ClassMemberReflection

src/Reflection/Php/ClosureCallMethodReflection.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use PHPStan\Type\Type;
1919
use function array_map;
2020
use function array_unshift;
21+
use function is_bool;
2122

2223
final class ClosureCallMethodReflection implements ExtendedMethodReflection
2324
{
@@ -152,4 +153,14 @@ public function returnsByReference(): TrinaryLogic
152153
return $this->nativeMethodReflection->returnsByReference();
153154
}
154155

156+
public function isAbstract(): TrinaryLogic
157+
{
158+
$abstract = $this->nativeMethodReflection->isAbstract();
159+
if (is_bool($abstract)) {
160+
return TrinaryLogic::createFromBoolean($abstract);
161+
}
162+
163+
return $abstract;
164+
}
165+
155166
}

src/Reflection/Php/EnumCasesMethodReflection.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,9 @@ public function returnsByReference(): TrinaryLogic
125125
return TrinaryLogic::createNo();
126126
}
127127

128+
public function isAbstract(): TrinaryLogic
129+
{
130+
return TrinaryLogic::createNo();
131+
}
132+
128133
}

src/Reflection/Php/PhpMethodFromParserNodeReflection.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,9 @@ public function returnsByReference(): TrinaryLogic
163163
return TrinaryLogic::createFromBoolean($this->getClassMethod()->returnsByRef());
164164
}
165165

166+
public function isAbstract(): TrinaryLogic
167+
{
168+
return TrinaryLogic::createFromBoolean($this->getClassMethod()->isAbstract());
169+
}
170+
166171
}

0 commit comments

Comments
 (0)