Advertisement
Guest User

Untitled

a guest
May 27th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. defmodule TestMacro do
  2. defmacro test_macro do
  3. quote do
  4. IO.inspect(var!(name))
  5. end
  6. end
  7. end
  8.  
  9. defmodule Gen do
  10. defmacro __using__(_args) do
  11. quote do
  12. @before_compile unquote(__MODULE__)
  13. end
  14. end
  15.  
  16. defmacro __before_compile__(_env) do
  17. quote do
  18. def test do
  19. name = "test"
  20. test_macro
  21. end
  22. end
  23. end
  24. end
  25.  
  26. defmodule User do
  27. import TestMacro
  28. use Gen
  29. end
  30.  
  31.  
  32. # ** (CompileError) iex:6: expected var "name" to expand to an existing variable or be part of a match
  33. # (elixir) expanding macro: Kernel.var!/1
  34. # iex:6: User.test/0
  35. # expanding macro: TestMacro.test_macro/0
  36. # iex:6: User.test/0
  37. # iex:6: Gen.__before_compile__/1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement