WIP: Module with "use Tesla" causes runtime error in Gradualizer #167
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The Tesla library is a common HTTP client for Elixir. Part of the setup for using Tesla involves declaring a module that looks like this:
The
use Teslaline invokes a macro that generates a sizable amount of code for this module. When that code is typechecked viamix gradient, it results in a runtime error like the following:The same error occurs when doing
mix gradient lib/use_tesla.ex, i.e. invoking only the single file rather than the entire Mix project.I've improved the Elixir decompilation code in
Gradient.Debugin an effort to reproduce the issue on pure Elixir code (i.e. not macros), but so far no luck. This definitely seems like an issue in Gradualizer rather than Gradient, but I'm still working on reproducing it with pure Erlang code.