anchor.diff:      error:undef -> Module:module_info(exports)
     end.
   
  -get_macros(Meta, Module, E) ->
  +get_macros(Module) ->
  +  case fetch_macros(Module) of
  +    {ok, Macros} ->
  +      Macros;
  +    error ->
  +      []
  +  end.
  +
  +fetch_macros(Module) ->
     try
  -    Module:'__info__'(macros)
  +    {ok, Module:'__info__'(macros)}
     catch
  -    error:undef ->
  -      Tuple = {no_macros, Module},
  -      elixir_errors:form_error(Meta, ?m(E, file), ?MODULE, Tuple)
  -  end.
  -
  -get_optional_macros(Module)  ->
  -  case code:ensure_loaded(Module) of
  -    {module, Module} ->
  -      try
  -        Module:'__info__'(macros)
  -      catch
  -        error:undef -> []
  -      end;
  -    {error, _} -> []
  +    error:undef -> error
     end.
   
   %% VALIDATION HELPERS
  
positive.code: 
  import_macros(Force, Meta, Ref, Opts, E) ->
    calculate(Meta, Ref, Opts, ?m(E, macros), ?m(E, file), fun() ->
      case Force of
        true  -> get_macros(Meta, Ref, E);
        false -> get_optional_macros(Ref)
      end
    end).
  
  
negative.code: %% Retrieve functions and macros from modules
  
  get_exports(Module) ->
    get_functions(Module) ++ get_macros(Module).
  
  get_functions(Module) ->
    try
  