If I quote the following:
Code.string_to_quoted """
if foo do
"true"
else
"false"
end
"""
I get the following AST:
{:if, [line: 1], [{:foo, [line: 1], nil}, [do: "true", else: "false"]]}
Which makes sense to me as the last node is a list. However, `when` seems
to follow different rules and I'm not following exactly how Elixir parses
it from the AST:
Code.strig_to_quoted """
def foo(bar) when bar == 1 do
"baz"
end
"""
{:def, [line: 1],
[{:when, [line: 1],
[{:foo, [line: 1], [{:bar, [line: 1], nil}]},
{:==, [line: 1], [{:bar, [line: 1], nil}, 1]}]}, [do: "baz"]]}
`when` is not in that last list, but is now the first element in the values
for `:def`
Can someone point me to examples of how Elixir is parsing `when` within the
source? I dug around in Kernel which brought me to elixir_def but got stuck
there.
Use case: I am experimenting with writing some macro functions that could
take guard clauses.
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/b3e81eb9-8cd9-4bfa-b6a1-f43216d7136f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.