33namespace PHPStan \Rules \Methods ;
44
55use PHPStan \Analyser \Scope ;
6+ use PHPStan \Node \InClassMethodNode ;
67use PHPStan \Reflection \ClassReflection ;
8+ use PHPStan \Reflection \MethodReflection ;
79
810class WrongCaseOfInheritedMethodRule implements \PHPStan \Rules \Rule
911{
1012
1113 public function getNodeType (): string
1214 {
13- return \ PhpParser \ Node \ Stmt \ClassMethod ::class;
15+ return InClassMethodNode ::class;
1416 }
1517
1618 /**
@@ -23,19 +25,19 @@ public function processNode(
2325 Scope $ scope
2426 ): array
2527 {
26- if (!$ scope ->isInClass ()) {
27- throw new \PHPStan \ShouldNotHappenException ();
28+ $ methodReflection = $ scope ->getFunction ();
29+ if (!$ methodReflection instanceof MethodReflection) {
30+ return [];
2831 }
2932
30- $ methodReflection = $ scope ->getClassReflection ()->getNativeMethod ($ node ->name ->name );
3133 $ declaringClass = $ methodReflection ->getDeclaringClass ();
3234
3335 $ messages = [];
3436 if ($ declaringClass ->getParentClass () !== false ) {
3537 $ parentMessage = $ this ->findMethod (
3638 $ declaringClass ,
3739 $ declaringClass ->getParentClass (),
38- $ node -> name -> name
40+ $ methodReflection -> getName ()
3941 );
4042 if ($ parentMessage !== null ) {
4143 $ messages [] = $ parentMessage ;
@@ -46,7 +48,7 @@ public function processNode(
4648 $ interfaceMessage = $ this ->findMethod (
4749 $ declaringClass ,
4850 $ interface ,
49- $ node -> name -> name
51+ $ methodReflection -> getName ()
5052 );
5153 if ($ interfaceMessage === null ) {
5254 continue ;
0 commit comments