diff options
author | Björn Gustavsson <[email protected]> | 2018-06-27 09:43:04 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2018-06-27 09:43:04 +0200 |
commit | f3790140d0e73f257c78d67de894b606ef53a8e5 (patch) | |
tree | b30d402c6ecf1d679d7ee8c722ba868492e06cc4 /lib/compiler/test/core_fold_SUITE.erl | |
parent | f44a8861c74aa241580ee1b8ea72f89897d21f68 (diff) | |
parent | 5ba1635518459f581811b30f386fdf1f21f54178 (diff) | |
download | otp-f3790140d0e73f257c78d67de894b606ef53a8e5.tar.gz otp-f3790140d0e73f257c78d67de894b606ef53a8e5.tar.bz2 otp-f3790140d0e73f257c78d67de894b606ef53a8e5.zip |
Merge pull request #1717 from michalmuskala/is-function-pure
Fold is_function/1,2 during compilation
Diffstat (limited to 'lib/compiler/test/core_fold_SUITE.erl')
-rw-r--r-- | lib/compiler/test/core_fold_SUITE.erl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/compiler/test/core_fold_SUITE.erl b/lib/compiler/test/core_fold_SUITE.erl index dfff8236e8..5654edae79 100644 --- a/lib/compiler/test/core_fold_SUITE.erl +++ b/lib/compiler/test/core_fold_SUITE.erl @@ -278,6 +278,8 @@ coverage(Config) when is_list(Config) -> a = cover_remove_non_vars_alias({a,b,c}), error = cover_will_match_lit_list(), {ok,[a]} = cover_is_safe_bool_expr(a), + false = cover_is_safe_bool_expr2(a), + ok = cover_eval_is_function(fun id/1), ok = cover_opt_guard_try(#cover_opt_guard_try{list=[a]}), error = cover_opt_guard_try(#cover_opt_guard_try{list=[]}), @@ -341,6 +343,15 @@ cover_is_safe_bool_expr(X) -> false end. +cover_is_safe_bool_expr2(X) -> + try + V = [X], + is_function(V, 1) + catch + _:_ -> + false + end. + cover_opt_guard_try(Msg) -> if length(Msg#cover_opt_guard_try.list) =/= 1 -> @@ -349,6 +360,12 @@ cover_opt_guard_try(Msg) -> ok end. +cover_eval_is_function(X) -> + case X of + {a,_} -> is_function(X); + _ -> ok + end. + bsm_an_inlined(<<_:8>>, _) -> ok; bsm_an_inlined(_, _) -> error. |