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.
this line is covering https://phpstan.org/r/0f2bf43b-e5a6-436b-ac44-e62a2c60ae94 from "Wrong inference with Minus" of phpstan/phpstan#5614
|
|
||
| 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.
fixed wrong expectation, see https://www.wolframalpha.com/input/?i=%28interval%5B1%2C10%5D++-+interval%5B5%2C10%5D%29
| 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.
fixed wrong expectation, see https://www.wolframalpha.com/input/?i=%28interval%5B-%E2%88%9E%2C5%5D++-+interval%5B1%2C10%5D%29
| 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.
fixed wrong expectation, see https://www.wolframalpha.com/input/?i=%28interval%5B5%2C%E2%88%9E%5D++-+interval%5B1%2C10%5D%29
|
|
||
| assertType('int<-10, 10>', $rangeFiveBoth + $rangeFiveBoth); | ||
| assertType('0', $rangeFiveBoth - $rangeFiveBoth); | ||
| assertType('int<-10, 10>', $rangeFiveBoth - $rangeFiveBoth); |
There was a problem hiding this comment.
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.
|
|
||
| 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.
|
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.
| 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.
|
|
||
| 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.
|
|
||
| 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.
|
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