Skip to content

Commit de3bd8e

Browse files
author
José Valim
committed
Expand current module macros with Macro.expand, closes #815
1 parent 3fea472 commit de3bd8e

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/elixir/lib/macro.ex

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,8 +478,16 @@ defmodule Macro do
478478
case not is_partial?(args) do
479479
false -> original
480480
true ->
481+
module = env.module
482+
483+
extra = if function_exported?(module, :__info__, 1) do
484+
[{ module, module.__info__(:macros) }]
485+
else
486+
[]
487+
end
488+
481489
expand = :elixir_dispatch.expand_import(line, { atom, length(args) }, args,
482-
env.module, env.function, env.requires, env.macros, env)
490+
env.module, env.function, env.requires, extra ++ env.macros, env)
483491
case expand do
484492
{ :ok, _, expanded } -> expanded
485493
{ :error, _ } -> original

lib/elixir/test/elixir/macro_test.exs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,14 @@ defmodule MacroTest do
8282
assert Macro.expand(quote(do: :foo), __ENV__) == :foo
8383
end
8484

85+
defmacro local_macro do
86+
:local_macro
87+
end
88+
89+
test :expand_local_macro do
90+
assert Macro.expand(quote(do: local_macro), __ENV__) == :local_macro
91+
end
92+
8593
test :expand_with_imported_macro do
8694
assert Macro.expand(quote(do: 1 || false), __ENV__) == (quote var_context: Kernel do
8795
case 1 do

0 commit comments

Comments
 (0)