File 1215-cover-filter_options-1-preserve-tuple_calls.patch of Package erlang
From e28e11b5af0fa552ea46adf1210adf7933834077 Mon Sep 17 00:00:00 2001
From: Mikael Pettersson <mikpelinux@gmail.com>
Date: Tue, 4 May 2021 20:02:06 +0200
Subject: [PATCH] cover:filter_options/1: preserve tuple_calls
---
lib/tools/src/cover.erl | 1 +
lib/tools/test/cover_SUITE.erl | 25 +++++++++++++++++++++++--
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/lib/tools/src/cover.erl b/lib/tools/src/cover.erl
index 9964d8ce19..f9de2077e3 100644
--- a/lib/tools/src/cover.erl
+++ b/lib/tools/src/cover.erl
@@ -335,6 +335,7 @@ filter_options(Options) ->
{d, _Macro} -> true;
{d, _Macro, _Value} -> true;
export_all -> true;
+ tuple_calls -> true;
_ -> false
end
end,
diff --git a/lib/tools/test/cover_SUITE.erl b/lib/tools/test/cover_SUITE.erl
index b9cd028546..2bf86f733b 100644
--- a/lib/tools/test/cover_SUITE.erl
+++ b/lib/tools/test/cover_SUITE.erl
@@ -30,7 +30,7 @@ all() ->
NoStartStop = [eif,otp_5305,otp_5418,otp_7095,otp_8273,
otp_8340,otp_8188,compile_beam_opts,eep37,
analyse_no_beam, line_0, compile_beam_no_file,
- otp_13277, otp_13289],
+ otp_13277, otp_13289, gh_4796],
StartStop = [start, compile, analyse, misc, stop,
distribution, reconnect, die_and_reconnect,
dont_reconnect_after_stop, stop_node_after_disconnect,
@@ -1718,6 +1718,24 @@ otp_16476(Config) when is_list(Config) ->
ok = file:delete(File),
ok.
+%% GH-4796: failure to preserve tuple_calls compiler option
+gh_4796(Config) ->
+ Test = <<"-module(gh_4796).
+ -export([test/0, foo/1]).
+
+ test() ->
+ PMod = new(42),
+ PMod:foo().
+
+ new(X) -> {?MODULE, X}.
+
+ foo({?MODULE, 42}) -> ok.
+ ">>,
+ File = c_mod(gh_4796, Test, Config, [tuple_calls]),
+ {ok, gh_4796} = cover:compile_beam(gh_4796),
+ ok = file:delete(File),
+ ok = gh_4796:test().
+
%%--Auxiliary------------------------------------------------------------
analyse_expr(Expr, Config) ->
@@ -1743,13 +1761,16 @@ cc_mod(M, Binary, Config) ->
end.
c_mod(M, Binary, Config) ->
+ c_mod(M, Binary, Config, _CompileOpts = []).
+
+c_mod(M, Binary, Config, CompileOpts) ->
{ok, Dir} = file:get_cwd(),
PrivDir = proplists:get_value(priv_dir, Config),
ok = file:set_cwd(PrivDir),
File = atom_to_list(M) ++ ".erl",
try
ok = file:write_file(File, Binary),
- {ok, M} = compile:file(File, [debug_info]),
+ {ok, M} = compile:file(File, CompileOpts ++ [debug_info]),
code:purge(M),
AbsFile = filename:rootname(File, ".erl"),
code:load_abs(AbsFile, M),
--
2.26.2