aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/beam_types.erl
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2019-06-28 14:43:56 +0200
committerJohn Högberg <[email protected]>2019-07-05 09:45:09 +0200
commit2b5b3f1988d8ac46ba4c3de2c050af86511c7a18 (patch)
tree5ff23cc6afacaf4c87a20fe15523a6946f136e2f /lib/compiler/src/beam_types.erl
parent0fc33edda1bac5dbc17a81b531d024681a481674 (diff)
downloadotp-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/beam_types.erl')
-rw-r--r--lib/compiler/src/beam_types.erl5
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;