aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/v3_kernel.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2012-01-03 13:44:17 +0100
committerBjörn Gustavsson <[email protected]>2012-03-14 11:04:45 +0100
commit982ce043282cfa9f118f13ce8b3abd989fa0c0f8 (patch)
treeb26d42c5fc60225fec3c3a2323aef68034443b2e /lib/compiler/src/v3_kernel.erl
parent084b34086f8f2cf6bc7aa0075f82a487d161cc72 (diff)
downloadotp-982ce043282cfa9f118f13ce8b3abd989fa0c0f8.tar.gz
otp-982ce043282cfa9f118f13ce8b3abd989fa0c0f8.tar.bz2
otp-982ce043282cfa9f118f13ce8b3abd989fa0c0f8.zip
v3_core: Don't put negative line numbers in annotations
In Core Erlang and later passes, compiler-generated code can be indicated in two different ways: by negative line numbers and by a 'compiler_generated' annotation. Simplify the code and improve coverage by turning negative line numbers positive and adding a 'compiler_generated' annotation in the v3_core pass. That means that Core Erlang and latter passes do not have deal with negative line numbers.
Diffstat (limited to 'lib/compiler/src/v3_kernel.erl')
-rw-r--r--lib/compiler/src/v3_kernel.erl17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/compiler/src/v3_kernel.erl b/lib/compiler/src/v3_kernel.erl
index 9d1839708f..abe94ad991 100644
--- a/lib/compiler/src/v3_kernel.erl
+++ b/lib/compiler/src/v3_kernel.erl
@@ -926,9 +926,11 @@ maybe_add_warning([C|_], MatchAnno, St) ->
maybe_add_warning([], _MatchAnno, St) -> St;
maybe_add_warning(fail, _MatchAnno, St) -> St;
maybe_add_warning(Ke, MatchAnno, St) ->
- case get_kanno(Ke) of
- [compiler_generated|_] -> St;
- Anno ->
+ case is_compiler_generated(Ke) of
+ true ->
+ St;
+ false ->
+ Anno = get_kanno(Ke),
Line = get_line(Anno),
MatchLine = get_line(MatchAnno),
Warn = case MatchLine of
@@ -1830,7 +1832,10 @@ format_error(bad_call) ->
add_warning(none, Term, Anno, #kern{ws=Ws}=St) ->
File = get_file(Anno),
St#kern{ws=[{File,[{?MODULE,Term}]}|Ws]};
-add_warning(Line, Term, Anno, #kern{ws=Ws}=St) when Line >= 0 ->
+add_warning(Line, Term, Anno, #kern{ws=Ws}=St) ->
File = get_file(Anno),
- St#kern{ws=[{File,[{Line,?MODULE,Term}]}|Ws]};
-add_warning(_, _, _, St) -> St.
+ St#kern{ws=[{File,[{Line,?MODULE,Term}]}|Ws]}.
+
+is_compiler_generated(Ke) ->
+ Anno = get_kanno(Ke),
+ member(compiler_generated, Anno).