diff options
author | Björn Gustavsson <[email protected]> | 2016-05-16 08:15:39 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-05-16 08:15:39 +0200 |
commit | 1421ffc24fc57c83c2edd886fe9e088ddc701056 (patch) | |
tree | ded18ad25a834b04f5414b86dbdc646a6474de9a /lib/compiler/test/compile_SUITE.erl | |
parent | 4fba4b14c4f9aa03294d8d187fe0dd1202744e82 (diff) | |
parent | c4336b7ba8e39589f395f2bc86089a34b81d3cb7 (diff) | |
download | otp-1421ffc24fc57c83c2edd886fe9e088ddc701056.tar.gz otp-1421ffc24fc57c83c2edd886fe9e088ddc701056.tar.bz2 otp-1421ffc24fc57c83c2edd886fe9e088ddc701056.zip |
Merge branch 'bjorn/compiler/misc'
* bjorn/compiler/misc:
beam_utils: Correct break in conventions for split_even/1 and join_even/1
beam_utils: Remove clause checking for illegal set/4 instruction
beam_utils: Simplify the return value for check_liveness/3
beam_utils: Remove unused code
beam_utils: Let code_at/2 fail if the label does not exist
beam_utils: Remove unused handling of try/3 in live_opt/4
beam_utils: Correct translation of BIFs to tests
core_pp: Remove uncovered clause in is_simple_term/1
core_pp: Crash on unhandled Core Erlang forms
core_pp: Remove unused clauses in unindent/3 to improve coverage
core_pp: Remove useless try...catch
core_pp: Simplify printing of map literals
compile_SUITE: Cover numeric variable names in core_pp
compile_SUITE: Eliminate clones when re-compiling test suites
test_lib: Add is_cloned_mod/1
trycatch_SUITE: Cover the only uncovered line in sys_core_fold
test_lib: Correct calculation of number of processes
Diffstat (limited to 'lib/compiler/test/compile_SUITE.erl')
-rw-r--r-- | lib/compiler/test/compile_SUITE.erl | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/lib/compiler/test/compile_SUITE.erl b/lib/compiler/test/compile_SUITE.erl index e634f0fcc2..a15efc2a00 100644 --- a/lib/compiler/test/compile_SUITE.erl +++ b/lib/compiler/test/compile_SUITE.erl @@ -693,8 +693,7 @@ core(Config) when is_list(Config) -> Outdir = filename:join(PrivDir, "core"), ok = file:make_dir(Outdir), - Wc = filename:join(filename:dirname(code:which(?MODULE)), "*.beam"), - TestBeams = filelib:wildcard(Wc), + TestBeams = get_unique_beam_files(), Abstr = [begin {ok,{Mod,[{abstract_code, {raw_abstract_v1,Abstr}}]}} = beam_lib:chunks(Beam, [abstract_code]), @@ -755,8 +754,7 @@ core_roundtrip(Config) -> Outdir = filename:join(PrivDir, atom_to_list(?FUNCTION_NAME)), ok = file:make_dir(Outdir), - Wc = filename:join(filename:dirname(code:which(?MODULE)), "*.beam"), - TestBeams = filelib:wildcard(Wc), + TestBeams = get_unique_beam_files(), test_lib:p_run(fun(F) -> do_core_roundtrip(F, Outdir) end, TestBeams). do_core_roundtrip(Beam, Outdir) -> @@ -781,8 +779,13 @@ do_core_roundtrip_1(Mod, Abstr, Outdir) -> %% Primarily, test that annotations are accepted for all %% constructs. Secondarily, smoke test cerl_trees:label/1. - {Core,_} = cerl_trees:label(Core0), - do_core_roundtrip_2(Mod, Core, Outdir). + {Core1,_} = cerl_trees:label(Core0), + do_core_roundtrip_2(Mod, Core1, Outdir), + + %% Run the inliner to force generation of variables + %% with numeric names. + {ok,Mod,Core2} = compile:forms(Abstr, [inline,to_core]), + do_core_roundtrip_2(Mod, Core2, Outdir). do_core_roundtrip_2(M, Core0, Outdir) -> CoreFile = filename:join(Outdir, atom_to_list(M)++".core"), @@ -870,8 +873,7 @@ asm(Config) when is_list(Config) -> Outdir = filename:join(PrivDir, "asm"), ok = file:make_dir(Outdir), - Wc = filename:join(filename:dirname(code:which(?MODULE)), "*.beam"), - TestBeams = filelib:wildcard(Wc), + TestBeams = get_unique_beam_files(), Res = test_lib:p_run(fun(F) -> do_asm(F, Outdir) end, TestBeams), Res. @@ -947,8 +949,7 @@ dialyzer(Config) -> %% Test that warnings contain filenames and line numbers. warnings(_Config) -> - TestDir = filename:dirname(code:which(?MODULE)), - Files = filelib:wildcard(filename:join(TestDir, "*.erl")), + Files = get_unique_files(".erl"), test_lib:p_run(fun do_warnings/1, Files). do_warnings(F) -> @@ -1102,3 +1103,14 @@ compile_and_verify(Name, Target, Opts) -> beam_lib:chunks(Target, [compile_info]), {options,BeamOpts} = lists:keyfind(options, 1, CInfo), Opts = BeamOpts. + +get_unique_beam_files() -> + get_unique_files(".beam"). + +get_unique_files(Ext) -> + Wc = filename:join(filename:dirname(code:which(?MODULE)), "*"++Ext), + [F || F <- filelib:wildcard(Wc), not is_cloned(F, Ext)]. + +is_cloned(File, Ext) -> + Mod = list_to_atom(filename:basename(File, Ext)), + test_lib:is_cloned_mod(Mod). |