-
Notifications
You must be signed in to change notification settings - Fork 473
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixed integer range minus bugs #690
Conversation
assertType('int<5, 100>', $r1 * $r2); | ||
assertType('float|int<0, 1>', $r1 / $r2); | ||
|
||
assertType('int<-99, 19>', $r1 - $r3); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this line is covering https://phpstan.org/r/0f2bf43b-e5a6-436b-ac44-e62a2c60ae94 from "Wrong inference with Minus" of phpstan/phpstan#5614
@@ -254,16 +255,18 @@ public function math($i, $j, $z, $pi, $r1, $r2, $rMin, $rMax, $x, $y) { | |||
assertType('float|int<1, max>', $rMax / 4); | |||
|
|||
assertType('int<6, 20>', $r1 + $r2); | |||
assertType('int<-4, 0>', $r1 - $r2); | |||
assertType('int<-9, 5>', $r1 - $r2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed wrong expectation, see https://www.wolframalpha.com/input/?i=%28interval%5B1%2C10%5D++-+interval%5B5%2C10%5D%29
assertType('int<min, 15>', $r1 + $rMin); | ||
assertType('int<min, 5>', $r1 - $rMin); | ||
assertType('int<min, 50>', $r1 * $rMin); | ||
assertType('float|int<min, 2>', $r1 / $rMin); | ||
assertType('int<min, 15>', $rMin + $r1); | ||
assertType('int<min, -5>', $rMin - $r1); | ||
assertType('int<-5, max>', $rMin - $r1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed wrong expectation, see https://www.wolframalpha.com/input/?i=%28interval%5B-%E2%88%9E%2C5%5D++-+interval%5B1%2C10%5D%29
@@ -272,7 +275,7 @@ public function math($i, $j, $z, $pi, $r1, $r2, $rMin, $rMax, $x, $y) { | |||
assertType('int<5, max>', $r1 * $rMax); | |||
assertType('float|int<0, max>', $r1 / $rMax); | |||
assertType('int<6, max>', $rMax + $r1); | |||
assertType('int<4, max>', $rMax - $r1); | |||
assertType('int<-5, max>', $rMax - $r1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed wrong expectation, see https://www.wolframalpha.com/input/?i=%28interval%5B5%2C%E2%88%9E%5D++-+interval%5B1%2C10%5D%29
@@ -52,7 +52,7 @@ public function doBaz(int $rangeFiveBoth, int $rangeFiveLeft, int $rangeFiveRigh | |||
assertType('int', $rangeFiveRight - $rangeFiveLeft); | |||
|
|||
assertType('int<-10, 10>', $rangeFiveBoth + $rangeFiveBoth); | |||
assertType('0', $rangeFiveBoth - $rangeFiveBoth); | |||
assertType('int<-10, 10>', $rangeFiveBoth - $rangeFiveBoth); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tests/PHPStan/Analyser/data/math.php
Outdated
|
||
assertType('int<min, 10>', $rangeFiveRight + $rangeFiveBoth); | ||
assertType('int<min, 0>', $rangeFiveRight - $rangeFiveBoth); | ||
assertType('int<0, max>', $rangeFiveRight - $rangeFiveBoth); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -61,10 +61,10 @@ public function doBaz(int $rangeFiveBoth, int $rangeFiveLeft, int $rangeFiveRigh | |||
assertType('int<min, 0>', $rangeFiveBoth - $rangeFiveRight); | |||
|
|||
assertType('int<-10, max>', $rangeFiveLeft + $rangeFiveBoth); | |||
assertType('int<0, max>', $rangeFiveLeft - $rangeFiveBoth); | |||
assertType('int<-10, max>', $rangeFiveLeft - $rangeFiveBoth); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should be good to go. remaining test-errors are unrelated. //cc @orklah |
oh, I need to double check the new expectations.. |
|
||
assertType('int<min, 10>', $rangeFiveRight + $rangeFiveBoth); | ||
assertType('int<min, 0>', $rangeFiveRight - $rangeFiveBoth); | ||
assertType('int<min, 10>', $rangeFiveRight - $rangeFiveBoth); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assertType('int<min, 15>', $r1 + $rMin); | ||
assertType('int<min, 5>', $r1 - $rMin); | ||
assertType('int<min, 50>', $r1 * $rMin); | ||
assertType('float|int<min, 2>', $r1 / $rMin); | ||
assertType('int<min, 15>', $rMin + $r1); | ||
assertType('int<min, -5>', $rMin - $r1); | ||
assertType('int<min, 4>', $rMin - $r1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
||
assertType('int<-10, max>', $rangeFiveBoth + $rangeFiveLeft); | ||
assertType('int', $rangeFiveBoth - $rangeFiveLeft); | ||
|
||
assertType('int<min, 10>', $rangeFiveBoth + $rangeFiveRight); | ||
assertType('int<min, 0>', $rangeFiveBoth - $rangeFiveRight); | ||
assertType('int<-10, max>', $rangeFiveBoth - $rangeFiveRight); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assertType('int<min, 15>', $r1 + $rMin); | ||
assertType('int<min, 5>', $r1 - $rMin); | ||
assertType('int<-4, max>', $r1 - $rMin); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
now for real - should be good to go. remaining test-errors are unrelated. |
Thank you! |
Fixes Integer-Range-Minus bugs mentioned in phpstan/phpstan#5614