diff options
author | Anthony Ramine <[email protected]> | 2014-03-08 02:31:53 +0100 |
---|---|---|
committer | Anthony Ramine <[email protected]> | 2014-03-10 02:37:10 +0100 |
commit | 4777f33ece33aaaa5066730b950f185cbd5ae816 (patch) | |
tree | db57597f62d5c6eda64f12f6274900655e2ac194 /lib/compiler/test/core_fold_SUITE.erl | |
parent | 870737ab657433c5e8751255fe3c4d298202d142 (diff) | |
download | otp-4777f33ece33aaaa5066730b950f185cbd5ae816.tar.gz otp-4777f33ece33aaaa5066730b950f185cbd5ae816.tar.bz2 otp-4777f33ece33aaaa5066730b950f185cbd5ae816.zip |
Properly handle redundant boolean clauses in sys_core_fold
Boolean case expressions with redundant clauses could make the compiler
crash:
case X == 0 of
false -> no;
false -> no;
true -> yes
end.
Reported-by: Ulf Norell
Diffstat (limited to 'lib/compiler/test/core_fold_SUITE.erl')
-rw-r--r-- | lib/compiler/test/core_fold_SUITE.erl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/compiler/test/core_fold_SUITE.erl b/lib/compiler/test/core_fold_SUITE.erl index 8151dc1b16..9c986576d5 100644 --- a/lib/compiler/test/core_fold_SUITE.erl +++ b/lib/compiler/test/core_fold_SUITE.erl @@ -23,7 +23,7 @@ t_element/1,setelement/1,t_length/1,append/1,t_apply/1,bifs/1, eq/1,nested_call_in_case/1,guard_try_catch/1,coverage/1, unused_multiple_values_error/1,unused_multiple_values/1, - multiple_aliases/1]). + multiple_aliases/1,redundant_boolean_clauses/1]). -export([foo/0,foo/1,foo/2,foo/3]). @@ -40,7 +40,7 @@ groups() -> [t_element,setelement,t_length,append,t_apply,bifs, eq,nested_call_in_case,guard_try_catch,coverage, unused_multiple_values_error,unused_multiple_values, - multiple_aliases]}]. + multiple_aliases,redundant_boolean_clauses]}]. init_per_suite(Config) -> @@ -365,4 +365,13 @@ run_once() -> ok. +redundant_boolean_clauses(Config) when is_list(Config) -> + X = id(0), + yes = case X == 0 of + false -> no; + false -> no; + true -> yes + end. + + id(I) -> I. |