Merge pull request #17 from ukutaht/better_compile_errors
Intercept and print compile errors in a nicer way.
This commit is contained in:
@@ -24,6 +24,11 @@ defmodule Display do
|
|||||||
"Assertion failed in #{source_file(module)}:#{line_number(expr)}"
|
"Assertion failed in #{source_file(module)}:#{line_number(expr)}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def format_compile_error(error) do
|
||||||
|
trace = System.stacktrace |> Enum.take(2)
|
||||||
|
IO.puts(format_red(Exception.format(:error, error, trace)))
|
||||||
|
end
|
||||||
|
|
||||||
defp line_number({_, [line: line], _}) do
|
defp line_number({_, [line: line], _}) do
|
||||||
line
|
line
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,8 +3,12 @@ defmodule Watcher do
|
|||||||
|
|
||||||
def callback(file, events) do
|
def callback(file, events) do
|
||||||
if Enum.member?(events, :modified) do
|
if Enum.member?(events, :modified) do
|
||||||
[{mod, _}] = Code.load_file(file)
|
try do
|
||||||
Runner.run(mod)
|
[{mod, _}] = Code.load_file(file)
|
||||||
|
Runner.run(mod)
|
||||||
|
rescue
|
||||||
|
e -> Display.format_compile_error(e)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user