diff options
author | Björn Gustavsson <[email protected]> | 2016-05-31 12:44:13 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-05-31 12:44:13 +0200 |
commit | 52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92 (patch) | |
tree | 35903a83c15ea8ca9bb4b7b1fa75e6fc0ebdfc3f /lib/compiler/test/beam_utils_SUITE.erl | |
parent | 0e40609c64538a58466de8cddf2a7f0aebaf65ef (diff) | |
parent | b1b27719d713c0e62d3242bbf1da0600ea0a651f (diff) | |
download | otp-52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92.tar.gz otp-52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92.tar.bz2 otp-52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92.zip |
Merge branch 'bjorn/compiler/misc'
* bjorn/compiler/misc:
Eliminate unsafe use of Y registers
beam_validator: Add is_bitstring/1 as a safe BIF
beam_validator: Remove uncovered line
Teach beam_utils:is_pure_test/1 to handle is_bitstr and is_function2
beam_utils: Simplify handling of 'return' to eliminate uncovered line
beam_jump: Clean up handling of labels before func_info
beam_expect: Correctly handle blocks with multiple allocs
v3_codegen: Don't confuse beam_validator
v3_codegen: Correct code generation for an error/1 call in a guard
beam_receive: Don't crash when encountering nonsensical code
Diffstat (limited to 'lib/compiler/test/beam_utils_SUITE.erl')
-rw-r--r-- | lib/compiler/test/beam_utils_SUITE.erl | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/lib/compiler/test/beam_utils_SUITE.erl b/lib/compiler/test/beam_utils_SUITE.erl index ae813d563b..f6d4a311bb 100644 --- a/lib/compiler/test/beam_utils_SUITE.erl +++ b/lib/compiler/test/beam_utils_SUITE.erl @@ -23,7 +23,8 @@ init_per_group/2,end_per_group/2, apply_fun/1,apply_mf/1,bs_init/1,bs_save/1, is_not_killed/1,is_not_used_at/1, - select/1,y_catch/1,otp_8949_b/1,liveopt/1,coverage/1]). + select/1,y_catch/1,otp_8949_b/1,liveopt/1,coverage/1, + y_registers/1]). -export([id/1]). suite() -> [{ct_hooks,[ts_install_cth]}]. @@ -44,7 +45,8 @@ groups() -> y_catch, otp_8949_b, liveopt, - coverage + coverage, + y_registers ]}]. init_per_suite(Config) -> @@ -311,6 +313,45 @@ clinic(Damage) -> end, carefully. +y_registers(_Config) -> + {'EXIT',{{badfun,0},_}} = (catch economic(0.0, jim)), + {'EXIT',{{badmatch,apartments},_}} = (catch louisiana()), + {a,b} = (boxes(true))({a,b}), + {'EXIT',{{case_clause,webmaster},_}} = (catch yellow(true)), + ok. + +economic(0.0 = Serves, Existence) -> + case Serves of + Serves -> 0 + end, + Existence = jim, + 0(), + Serves, + Existence. + +louisiana() -> + {catch necessarily, + try + [] == reg, + true = apartments + catch [] -> barbara + end}. + +boxes(Call) -> + case Call of + Call -> approval + end, + Call, + fun id/1. + +yellow(Hill) -> + case webmaster of + station -> eyes; Hill -> + "under" + end, + Hill, + id(42). + %% The identity function. id(I) -> I. |