@@ -21,9 +21,13 @@ class RandomIntParametersRule implements \PHPStan\Rules\Rule
2121 /** @var ReflectionProvider */
2222 private $ reflectionProvider ;
2323
24- public function __construct (ReflectionProvider $ reflectionProvider )
24+ /** @var bool */
25+ private $ reportMaybes ;
26+ 27+ public function __construct (ReflectionProvider $ reflectionProvider , bool $ reportMaybes )
2528 {
2629 $ this ->reflectionProvider = $ reflectionProvider ;
30+ $ this ->reportMaybes = $ reportMaybes ;
2731 }
2832
2933 public function getNodeType (): string
@@ -59,13 +63,18 @@ public function processNode(Node $node, Scope $scope): array
5963 if (!$ maxPermittedType ->isSuperTypeOf ($ maxType )->yes ()) {
6064 $ message = 'Parameter #1 $min (%s) of function random_int expects lower number than parameter #2 $max (%s). ' ;
6165
62- return [
63- RuleErrorBuilder::message (sprintf (
64- $ message ,
65- $ minType ->describe (VerbosityLevel::value ()),
66- $ maxType ->describe (VerbosityLevel::value ())
67- ))->build (),
68- ];
66+ // True if sometimes the parameters conflict.
67+ $ isMaybe = !$ maxType ->isSuperTypeOf ($ minType )->no ();
68+ 69+ if (!$ isMaybe || $ this ->reportMaybes ) {
70+ return [
71+ RuleErrorBuilder::message (sprintf (
72+ $ message ,
73+ $ minType ->describe (VerbosityLevel::value ()),
74+ $ maxType ->describe (VerbosityLevel::value ())
75+ ))->build (),
76+ ];
77+ }
6978 }
7079 }
7180
0 commit comments