diff options
author | John Högberg <[email protected]> | 2019-06-28 14:43:56 +0200 |
---|---|---|
committer | John Högberg <[email protected]> | 2019-07-05 09:45:09 +0200 |
commit | 2b5b3f1988d8ac46ba4c3de2c050af86511c7a18 (patch) | |
tree | 5ff23cc6afacaf4c87a20fe15523a6946f136e2f /lib/compiler/src | |
parent | 0fc33edda1bac5dbc17a81b531d024681a481674 (diff) | |
download | otp-2b5b3f1988d8ac46ba4c3de2c050af86511c7a18.tar.gz otp-2b5b3f1988d8ac46ba4c3de2c050af86511c7a18.tar.bz2 otp-2b5b3f1988d8ac46ba4c3de2c050af86511c7a18.zip |
beam_types: Fix an integer consistency in meet/2
The test was brainfart; integers that don't overlap *AT ALL*
should never meet. It's okay to meet as long as they overlap to
some degree.
Diffstat (limited to 'lib/compiler/src')
-rw-r--r-- | lib/compiler/src/beam_types.erl | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/compiler/src/beam_types.erl b/lib/compiler/src/beam_types.erl index 07d3c3d3f2..752dda0d2b 100644 --- a/lib/compiler/src/beam_types.erl +++ b/lib/compiler/src/beam_types.erl @@ -180,8 +180,9 @@ meet(#t_integer{elements={_,_}}=T, #t_integer{elements=any}) -> meet(#t_integer{elements=any}, #t_integer{elements={_,_}}=T) -> T; meet(#t_integer{elements={MinA,MaxA}}, #t_integer{elements={MinB,MaxB}}) - when MinA >= MinB, MaxA =< MaxB; - MinB >= MinA, MaxB =< MaxA -> + when MinA >= MinB, MinA =< MaxB; + MinB >= MinA, MinB =< MaxA -> + true = MinA =< MaxA andalso MinB =< MaxB, %Assertion. #t_integer{elements={max(MinA, MinB),min(MaxA, MaxB)}}; meet(#t_integer{}=T, number) -> T; meet(float=T, number) -> T; |