aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2018-06-27 09:43:04 +0200
committerGitHub <[email protected]>2018-06-27 09:43:04 +0200
commitf3790140d0e73f257c78d67de894b606ef53a8e5 (patch)
treeb30d402c6ecf1d679d7ee8c722ba868492e06cc4 /lib/compiler/test
parentf44a8861c74aa241580ee1b8ea72f89897d21f68 (diff)
parent5ba1635518459f581811b30f386fdf1f21f54178 (diff)
downloadotp-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')
-rw-r--r--lib/compiler/test/core_fold_SUITE.erl17
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.