anchor.diff:    ensure_keyword_list(Meta, File, Rest, Kind);
   
   ensure_keyword_list(Meta, File, _Other, Kind) ->
  -  Message =
  -    "invalid :~s option for import, "
  -    "expected a keyword list with integer values",
  -  elixir_errors:compile_error(Meta, File, Message, [Kind]).
  +  elixir_errors:form_error(Meta, File, ?MODULE, {invalid_option, Kind}).
   
   %% ERROR HANDLING
  +
  +format_error(only_and_except_given) ->
  +  ":only and :except can only be given together to import "
  +  "when :only is either :functions or :macros";
   
   format_error({invalid_import, {Receiver, Name, Arity}}) ->
     io_lib:format("cannot import ~ts.~ts/~B because it is undefined or private",
       [elixir_aliases:inspect(Receiver), Name, Arity]);
  +
  +format_error({invalid_option, Option}) ->
  +  Message = "invalid :~s option for import, expected a keyword list with integer values",
  +  io_lib:format(Message, [Option]);
   
   format_error({special_form_conflict, {Receiver, Name, Arity}}) ->
     io_lib:format("cannot import ~ts.~ts/~B because it conflicts with Elixir special forms",
  
positive.code: ensure_no_special_form_conflict(Meta, File, Key, [{Name, Arity} | T]) ->
    case special_form(Name, Arity) of
      true  ->
        Tuple = {special_form_conflict, {Key, Name, Arity}},
        elixir_errors:form_error(Meta, File, ?MODULE, Tuple);
      false ->
        ensure_no_special_form_conflict(Meta, File, Key, T)
    end;
  
negative.code:         false ->
            ok;
          _ ->
            elixir_errors:form_error(Meta, File, ?MODULE, only_and_except_given)
        end,
        case Only -- get_exports(Key) of
          [{Name, Arity} | _] ->
            elixir_errors:form_error(Meta, File, ?MODULE, {invalid_import, {Key, Name, Arity}});
          _ ->
            intersection(Only, Existing())
        end;
  