Skip to content

Commit b96c3c5

Browse files
author
José Valim
committed
Remove check_require in favor of a meta tag
1 parent 3f7b867 commit b96c3c5

File tree

4 files changed

+6
-13
lines changed

4 files changed

+6
-13
lines changed

lib/elixir/include/elixir.hrl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
-record(elixir_scope, {
1212
context=nil, %% can be assign, guards or nil
1313
noname=false, %% when true, don't add new names (used by try)
14-
check_requires=true, %% when true, check requires
1514
check_clauses=true, %% when true, check def clauses ordering
1615
super=false, %% when true, it means super was invoked
1716
caller=false, %% when true, it means caller was invoked

lib/elixir/src/elixir_dispatch.erl

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ expand_require(Meta, Receiver, { Name, Arity } = Tuple, Args, Module, S) ->
155155

156156
expand_macro_fun(Meta, Fun, Receiver, Name, Args, Module, S) ->
157157
Requires = S#elixir_scope.requires,
158-
case (Receiver == Module) or is_element(Receiver, Requires) or not(S#elixir_scope.check_requires) of
158+
case (Receiver == Module) or is_element(Receiver, Requires) or skip_require(Meta) of
159159
true -> ok;
160160
false ->
161161
Tuple = { unrequired_module, { Receiver, Name, length(Args), Requires } },
@@ -196,12 +196,8 @@ merge_aliases(A1, A2) ->
196196

197197
%% Helpers
198198

199-
% case lists:keyfind(import, 1, Meta) of
200-
% { import, Receiver } ->
201-
% { TRes, TS } = translate_each({ { '.', Meta, [Receiver, Atom] }, Meta, Args },
202-
% S#elixir_scope{check_requires=false}),
203-
% { TRes, TS#elixir_scope{check_requires=S#elixir_scope.check_requires} };
204-
% false ->
199+
skip_require(Meta) ->
200+
lists:keyfind(require, 1, Meta) == { require, false }.
205201

206202
find_dispatch(Meta, Tuple, S) ->
207203
find_dispatch(Meta, Tuple, [], S).

lib/elixir/src/elixir_module.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,10 +324,10 @@ else_clause() ->
324324
% HELPERS
325325

326326
eval_callbacks(Line, Module, Name, Args, RawS) ->
327-
S = RawS#elixir_scope{check_clauses=false,check_requires=false},
327+
S = RawS#elixir_scope{check_clauses=false},
328328
Binding = binding_for_eval(Module, []),
329329
Callbacks = lists:reverse(ets:lookup_element(data_table(Module), Name, 2)),
330-
Meta = [{line,Line}],
330+
Meta = [{line,Line},{require,false}],
331331

332332
lists:foreach(fun({M,F}) ->
333333
{ Tree, _ } = elixir_dispatch:dispatch_require(Meta, M, F, Args, S, fun() ->

lib/elixir/src/elixir_translator.erl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,7 @@ translate_each({ Atom, Meta, Args } = Original, S) when is_atom(Atom) ->
429429
error ->
430430
case lists:keyfind(import, 1, Meta) of
431431
{ import, Receiver } ->
432-
{ TRes, TS } = translate_each({ { '.', Meta, [Receiver, Atom] }, Meta, Args },
433-
S#elixir_scope{check_requires=false}),
434-
{ TRes, TS#elixir_scope{check_requires=S#elixir_scope.check_requires} };
432+
translate_each({ { '.', [{require,false}|Meta], [Receiver, Atom] }, Meta, Args }, S);
435433
false ->
436434
Callback = fun() ->
437435
case S#elixir_scope.context of

0 commit comments

Comments
 (0)