Hi Dallin,

Thank you for the detailed proposal.

It is important to remember that in Elixir compilation and execution steps
are not necessarily distinct. For example, someone could have this project:

# lib/a.ex
defmodule A do
  use UsesYourMacro
  query do
    ...
  end
end

# lib/b.ex
defmodule B do
  A.query
end

In other words, B can already try to execute the code from A before
compilation finishes. Therefore, "error" can be misleading because
continuing compilation with an error can lead to cascading failures, and
causing the user to chase a bug that's not the original one.

At best, you would need to consider mixing "IO.error" and "raise". My
suggestion in your case is to emit warnings for all errors in a particular
query definition, allowing the user to get multiple reports, and then raise
at the end of that query definition if any warning was emitted.

This doesn't provide warnings across all files but it can be a good
starting point, especially because we indeed cannot continue beyond that
file for the reasons I mentioned above.

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4LQBBiNjjvGYvEyT9_i4GAsDzG13STzxJQ2LXjeT%2Bd5vQ%40mail.gmail.com.

Reply via email to