summaryrefslogtreecommitdiff
path: root/lib/tools/src/cover.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tools/src/cover.erl')
-rw-r--r--lib/tools/src/cover.erl22
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/tools/src/cover.erl b/lib/tools/src/cover.erl
index 9f86a68942..d1781c7b08 100644
--- a/lib/tools/src/cover.erl
+++ b/lib/tools/src/cover.erl
@@ -1552,14 +1552,12 @@ do_compile2(File, UserOptions, LocalOnly) ->
do_compile_beam1(Module,Beam,UserOptions,LocalOnly) ->
%% Clear database
do_clear(Module),
-
+
%% Extract the abstract format.
case get_abstract_code(Module, Beam) of
- no_abstract_code=E ->
- {error,E};
- encrypted_abstract_code=E ->
- {error,E};
- {raw_abstract_v1,Code} ->
+ {error,_}=Error ->
+ Error;
+ {ok,{raw_abstract_v1,Code}} ->
Forms0 = epp:interpret_file_attribute(Code),
case find_main_filename(Forms0) of
{ok,MainFile} ->
@@ -1568,7 +1566,7 @@ do_compile_beam1(Module,Beam,UserOptions,LocalOnly) ->
Error ->
Error
end;
- {_VSN,_Code} ->
+ {ok,{_VSN,_Code}} ->
%% Wrong version of abstract code. Just report that there
%% is no abstract code.
{error,no_abstract_code}
@@ -1577,10 +1575,14 @@ do_compile_beam1(Module,Beam,UserOptions,LocalOnly) ->
get_abstract_code(Module, Beam) ->
case beam_lib:chunks(Beam, [abstract_code]) of
{ok, {Module, [{abstract_code, AbstractCode}]}} ->
- AbstractCode;
+ case AbstractCode of
+ no_abstract_code=E -> {error, E};
+ _ -> {ok,AbstractCode}
+ end;
{error,beam_lib,{key_missing_or_invalid,_,_}} ->
- encrypted_abstract_code;
- Error -> Error
+ {error,encrypted_abstract_code};
+ {error,beam_lib,{missing_backend,_,Backend}} ->
+ {error,{missing_backend,Backend}}
end.
do_compile_beam2(Module,Beam,UserOptions,Forms0,MainFile,LocalOnly) ->