summaryrefslogtreecommitdiff
path: root/lib/elixir/src/elixir_errors.erl
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@dashbit.co>2023-05-16 11:52:59 +0200
committerJosé Valim <jose.valim@dashbit.co>2023-05-16 11:52:59 +0200
commita0f0f75ee86d01a7ccc7012a1e6cd3f019bd3d43 (patch)
tree873da86913bd03642d0d1048174362167c0e84b1 /lib/elixir/src/elixir_errors.erl
parent77c95d529bcb91b2e9190b1546ad60de6c0fb84b (diff)
downloadelixir-a0f0f75ee86d01a7ccc7012a1e6cd3f019bd3d43.tar.gz
Add Code.with_diagnostics/2, closes #12276
Diffstat (limited to 'lib/elixir/src/elixir_errors.erl')
-rw-r--r--lib/elixir/src/elixir_errors.erl8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/elixir/src/elixir_errors.erl b/lib/elixir/src/elixir_errors.erl
index 4a907f207..16874a1d6 100644
--- a/lib/elixir/src/elixir_errors.erl
+++ b/lib/elixir/src/elixir_errors.erl
@@ -33,7 +33,7 @@ print_diagnostic(#{severity := Severity, message := Message, stacktrace := Stack
[["\n ", 'Elixir.Exception':format_stacktrace_entry(E)] || E <- Stacktrace]
end,
io:put_chars(standard_error, [prefix(Severity), Message, Location, "\n\n"]),
- ok.
+ Diagnostic.
emit_diagnostic(Severity, Position, File, Message, Stacktrace) ->
Diagnostic = #{
@@ -44,7 +44,11 @@ emit_diagnostic(Severity, Position, File, Message, Stacktrace) ->
stacktrace => Stacktrace
},
- print_diagnostic(Diagnostic),
+ case get(elixir_code_diagnostics) of
+ undefined -> print_diagnostic(Diagnostic);
+ {Tail, true} -> put(elixir_code_diagnostics, {[print_diagnostic(Diagnostic) | Tail], true});
+ {Tail, false} -> put(elixir_code_diagnostics, {[Diagnostic | Tail], false})
+ end,
case get(elixir_compiler_info) of
undefined -> ok;