-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
Today, the pass returns the expanded AST. However, I don't think elixir_sense
actually needs the AST. Instead, it must pass type information around. My suggestion is for it to track at first:
{:struct, name}
{:atom, name}
dynamic
Dynamic can be the default type for anything you don't know what the return is.
This also means the current implementation can be simplified:
- There is no need to build the ast for
quote
- There is no need to traverse the right side of
::
in binaries (the implementation can be much simpler)
Open questions and Elixir improvements:
- Do you need to port Elixir's rewrite rules? If so, we should expose this in Elixir itself
- Can we support Record, Protocol, ExUnit.Case without adding special rules? Carrying type information, especially atoms, may actually help here. Should we improve something in Elixir to make this possible?
- There may be other complex areas we should ask Elixir to expose. If so, which?
These topics have been first brought up here: #293
Metadata
Metadata
Assignees
Labels
No labels