@@ -34,9 +34,6 @@ public function getNodeType(): string
34
34
35
35
public function processNode (Node $ node , Scope $ scope ): array
36
36
{
37
- $ instanceofType = $ scope ->getType ($ node );
38
- $ expressionType = $ scope ->getType ($ node ->expr );
39
-
40
37
if ($ node ->class instanceof Node \Name) {
41
38
$ className = $ scope ->resolveName ($ node ->class );
42
39
$ classType = new ObjectType ($ className );
@@ -50,13 +47,14 @@ public function processNode(Node $node, Scope $scope): array
50
47
return [
51
48
RuleErrorBuilder::message (sprintf (
52
49
'Instanceof between %s and %s results in an error. ' ,
53
- $ expressionType ->describe (VerbosityLevel::typeOnly ()),
50
+ $ scope -> getType ( $ node -> expr ) ->describe (VerbosityLevel::typeOnly ()),
54
51
$ classType ->describe (VerbosityLevel::typeOnly ()),
55
52
))->build (),
56
53
];
57
54
}
58
55
}
59
56
57
+ $ instanceofType = $ scope ->getType ($ node );
60
58
if (!$ instanceofType instanceof ConstantBooleanType) {
61
59
return [];
62
60
}
@@ -78,15 +76,15 @@ public function processNode(Node $node, Scope $scope): array
78
76
return [
79
77
$ addTip (RuleErrorBuilder::message (sprintf (
80
78
'Instanceof between %s and %s will always evaluate to false. ' ,
81
- $ expressionType ->describe (VerbosityLevel::typeOnly ()),
79
+ $ scope -> getType ( $ node -> expr ) ->describe (VerbosityLevel::typeOnly ()),
82
80
$ classType ->describe (VerbosityLevel::getRecommendedLevelByType ($ classType )),
83
81
)))->build (),
84
82
];
85
83
} elseif ($ this ->checkAlwaysTrueInstanceof ) {
86
84
return [
87
85
$ addTip (RuleErrorBuilder::message (sprintf (
88
86
'Instanceof between %s and %s will always evaluate to true. ' ,
89
- $ expressionType ->describe (VerbosityLevel::typeOnly ()),
87
+ $ scope -> getType ( $ node -> expr ) ->describe (VerbosityLevel::typeOnly ()),
90
88
$ classType ->describe (VerbosityLevel::getRecommendedLevelByType ($ classType )),
91
89
)))->build (),
92
90
];
0 commit comments