Skip to content

Commit 27b61b0

Browse files
authored
[DX] Use ClassLike in ClassConst usage on isObjectType() error message (#6282)
* [DX] Include interface in ClassConst usage on isObjectType() message * [DX] Include interface in ClassConst usage on isObjectType() message * use ClassLike * use ClassLike
1 parent 97eb222 commit 27b61b0

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/NodeTypeResolver/NodeTypeResolver.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use PhpParser\Node\NullableType;
1818
use PhpParser\Node\Scalar\String_;
1919
use PhpParser\Node\Stmt\ClassConst;
20+
use PhpParser\Node\Stmt\ClassLike;
2021
use PhpParser\Node\Stmt\ClassMethod;
2122
use PhpParser\Node\UnionType as NodeUnionType;
2223
use PHPStan\Analyser\Scope;
@@ -57,6 +58,11 @@ final class NodeTypeResolver
5758
*/
5859
private array $nodeTypeResolvers = [];
5960

61+
/**
62+
* @var string
63+
*/
64+
private const ERROR_MESSAGE = '%s itself does not have any type. Check the %s node instead';
65+
6066
/**
6167
* @param NodeTypeResolverInterface[] $nodeTypeResolvers
6268
*/
@@ -102,15 +108,9 @@ public function isObjectType(Node $node, ObjectType $requiredObjectType): bool
102108
}
103109

104110
// warn about invalid use of this method
105-
if ($node instanceof ClassMethod) {
106-
throw new ShouldNotHappenException(
107-
'ClassMethod itself does not have any type. Check the Class_/Interface/Trait_ node instead'
108-
);
109-
}
110-
111-
if ($node instanceof ClassConst) {
111+
if ($node instanceof ClassMethod || $node instanceof ClassConst) {
112112
throw new ShouldNotHappenException(
113-
'Class constant itself does not have any type. Check the Class_/Trait_ instead'
113+
sprintf(self::ERROR_MESSAGE, $node::class, ClassLike::class)
114114
);
115115
}
116116

0 commit comments

Comments
 (0)