diff options
author | Björn Gustavsson <[email protected]> | 2016-01-08 09:48:58 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-01-08 09:48:58 +0100 |
commit | 9ef53ab547bd011f7ff96d10d343e0b7edd773fd (patch) | |
tree | 287cb486aa8a7023962e9f1962d23a6be4d8ab7a /lib/compiler/test | |
parent | 8c4e2a32656f98e20a970e5ab45fb7405ae0095c (diff) | |
parent | c0ff4189f752fdfe20b231492b2084dfe8cecdb2 (diff) | |
download | otp-9ef53ab547bd011f7ff96d10d343e0b7edd773fd.tar.gz otp-9ef53ab547bd011f7ff96d10d343e0b7edd773fd.tar.bz2 otp-9ef53ab547bd011f7ff96d10d343e0b7edd773fd.zip |
Merge branch 'maint'
* maint:
beam_bool: Fix unsafe optimization
Diffstat (limited to 'lib/compiler/test')
-rw-r--r-- | lib/compiler/test/guard_SUITE.erl | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/lib/compiler/test/guard_SUITE.erl b/lib/compiler/test/guard_SUITE.erl index b3b67155b3..3f073d79cb 100644 --- a/lib/compiler/test/guard_SUITE.erl +++ b/lib/compiler/test/guard_SUITE.erl @@ -34,7 +34,7 @@ tricky/1,rel_ops/1,rel_op_combinations/1,literal_type_tests/1, basic_andalso_orelse/1,traverse_dcd/1, check_qlc_hrl/1,andalso_semi/1,t_tuple_size/1,binary_part/1, - bad_constants/1,bad_guards/1]). + bad_constants/1,bad_guards/1,scotland/1]). suite() -> [{ct_hooks,[ts_install_cth]}]. @@ -52,7 +52,7 @@ groups() -> rel_ops,rel_op_combinations, literal_type_tests,basic_andalso_orelse,traverse_dcd, check_qlc_hrl,andalso_semi,t_tuple_size,binary_part, - bad_constants,bad_guards]}]. + bad_constants,bad_guards,scotland]}]. init_per_suite(Config) -> Config. @@ -1831,6 +1831,29 @@ bad_guards_2(M, [_]) when M#{a := 0, b => 0}, map_size(M) -> bad_guards_3(M, [_]) when is_map(M) andalso M#{a := 0, b => 0}, length(M) -> ok. +%% beam_bool would remove the initialization of {y,0}. +%% (Thanks to Thomas Arts and QuickCheck.) + +scotland(_Config) -> + million = do_scotland(placed), + {'EXIT',{{badmatch,placed},_}} = (catch do_scotland(false)), + {'EXIT',{{badmatch,placed},_}} = (catch do_scotland(true)), + {'EXIT',{{badmatch,placed},_}} = (catch do_scotland(echo)), + ok. + +do_scotland(Echo) -> + found(case Echo of + Echo when true; Echo, Echo, Echo -> + Echo; + echo -> + [] + end, + Echo = placed). + +found(_, _) -> million. + + + %% Call this function to turn off constant propagation. id(I) -> I. |