Add Code.with_diagnostics/2, closes #12276

This commit is contained in:
José Valim
2023-05-16 11:52:59 +02:00
parent 77c95d529b
commit a0f0f75ee8
9 changed files with 302 additions and 149 deletions
+6 -2
View File
@@ -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;