@@ -9,24 +9,26 @@ import(Meta, Ref, Opts, E) ->
99 {Functions , Macros , Added } =
1010 case keyfind (only , Opts ) of
1111 {only , functions } ->
12- {Added1 , Funs } = import_functions (Meta , Ref , Opts , E ),
12+ {Added1 , _Used1 , Funs } = import_functions (Meta , Ref , Opts , E ),
1313 {Funs , keydelete (Ref , ? key (E , macros )), Added1 };
1414 {only , macros } ->
15- {Added2 , Macs } = import_macros (true , Meta , Ref , Opts , E ),
15+ {Added2 , _Used2 , Macs } = import_macros (true , Meta , Ref , Opts , E ),
1616 {keydelete (Ref , ? key (E , functions )), Macs , Added2 };
1717 {only , sigils } ->
18- {Added1 , Funs } = import_sigil_functions (Meta , Ref , Opts , E ),
19- {Added2 , Macs } = import_sigil_macros (Meta , Ref , Opts , E ),
18+ {Added1 , _Used1 , Funs } = import_sigil_functions (Meta , Ref , Opts , E ),
19+ {Added2 , _Used2 , Macs } = import_sigil_macros (Meta , Ref , Opts , E ),
2020 {Funs , Macs , Added1 or Added2 };
2121 {only , List } when is_list (List ) ->
22- {Added1 , Funs } = import_functions (Meta , Ref , Opts , E ),
23- {Added2 , Macs } = import_macros (false , Meta , Ref , Opts , E ),
22+ {Added1 , Used1 , Funs } = import_functions (Meta , Ref , Opts , E ),
23+ {Added2 , Used2 , Macs } = import_macros (false , Meta , Ref , Opts , E ),
24+ [elixir_errors :file_warn (Meta , ? key (E , file ), ? MODULE , {invalid_import , {Ref , Name , Arity }}) ||
25+ {Name , Arity } <- (List -- Used1 ) -- Used2 ],
2426 {Funs , Macs , Added1 or Added2 };
2527 {only , Other } ->
2628 elixir_errors :file_error (Meta , E , ? MODULE , {invalid_option , only , Other });
2729 false ->
28- {Added1 , Funs } = import_functions (Meta , Ref , Opts , E ),
29- {Added2 , Macs } = import_macros (false , Meta , Ref , Opts , E ),
30+ {Added1 , _Used1 , Funs } = import_functions (Meta , Ref , Opts , E ),
31+ {Added2 , _Used2 , Macs } = import_macros (false , Meta , Ref , Opts , E ),
3032 {Funs , Macs , Added1 or Added2 }
3133 end ,
3234
@@ -95,9 +97,6 @@ calculate(Meta, Key, Opts, Old, File, Existing) ->
9597 _ -> elixir_errors :file_error (Meta , File , ? MODULE , only_and_except_given )
9698 end ,
9799
98- [elixir_errors :file_warn (Meta , File , ? MODULE , {invalid_import , {Key , Name , Arity }}) ||
99- {Name , Arity } <- Only -- get_exports (Key )],
100-
101100 intersection (Only , Existing ());
102101
103102 _ ->
@@ -125,32 +124,21 @@ calculate(Meta, Key, Opts, Old, File, Existing) ->
125124 % % Normalize the data before storing it
126125 case ordsets :from_list (New ) of
127126 [] ->
128- {false , keydelete (Key , Old )};
127+ {false , [], keydelete (Key , Old )};
129128 Set ->
130129 ensure_no_special_form_conflict (Meta , File , Key , Set ),
131- {true , [{Key , Set } | keydelete (Key , Old )]}
130+ {true , Set , [{Key , Set } | keydelete (Key , Old )]}
132131 end .
133132
134133% % Retrieve functions and macros from modules
135134
136- get_exports (Module ) ->
137- get_functions (Module ) ++ get_macros (Module ).
138-
139135get_functions (Module ) ->
140136 try
141137 Module :'__info__' (functions )
142138 catch
143139 error :undef -> remove_internals (Module :module_info (exports ))
144140 end .
145141
146- get_macros (Module ) ->
147- case fetch_macros (Module ) of
148- {ok , Macros } ->
149- Macros ;
150- error ->
151- []
152- end .
153-
154142fetch_macros (Module ) ->
155143 try
156144 {ok , Module :'__info__' (macros )}
0 commit comments