Skip to content

Commit bce9116

Browse files
author
José Valim
committed
Ensure full alias is stored in context_modules
1 parent b78c3bc commit bce9116

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

lib/elixir/lib/kernel.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2787,7 +2787,7 @@ defmodule Kernel do
27872787

27882788
# Generate the alias for this module definition
27892789
{ new, old } = module_nesting(env_module(env), full)
2790-
meta = [defined: true, context: true] ++ alias_meta(alias)
2790+
meta = [defined: full, context: true] ++ alias_meta(alias)
27912791

27922792
{ full, { :alias, meta, [old, [as: new, warn: false]] } }
27932793
false ->

lib/elixir/src/elixir_translator.erl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -569,9 +569,8 @@ translate_alias(Meta, IncludeByDefault, Old, TKV, #elixir_scope{context_modules=
569569
%% Add the alias to context_modules if defined is true.
570570
%% This is used by defmodule.
571571
NewContext =
572-
case (lists:keyfind(defined, 1, Meta) == { defined, true }) andalso
573-
not lists:member(Old, Context) of
574-
true -> [Old|Context];
572+
case lists:keyfind(defined, 1, Meta) of
573+
{ defined, Mod } when is_atom(Mod) -> [Mod|Context];
575574
false -> Context
576575
end,
577576

lib/elixir/test/elixir/macro_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,12 @@ defmodule MacroTest do
428428
assert env.stacktrace == [{ :elixir_compiler, :__FILE__, 1, [file: "foo", line: 12] }]
429429
end
430430

431+
test :context_modules do
432+
defmodule Foo.Bar do
433+
assert __MODULE__ in __ENV__.context_modules
434+
end
435+
end
436+
431437
## pipe/unpipe
432438

433439
test :pipe do

0 commit comments

Comments
 (0)