anchor.diff:      true ->
         ok;
       false ->
  -      Message =
  -        "invalid types for literal string in <<>>. Accepted types are: "
  -        "little, big, utf8, utf16, utf32, bits, bytes, binary, bitstring",
  -      elixir_errors:compile_error(Meta, ?m(E, file), Message)
  +      form_error(Meta, ?m(E, file), ?MODULE, invalid_type_for_literal_string)
     end;
   validate_bit_type_if_literal_bin(_Left, _Meta, _Type, _E) ->
     ok.
  
positive.code:         _ when is_integer(EArg) ->
            ok;
          _ ->
            elixir_errors:compile_error(Meta, ?m(E, file),
              "size in bitstring expects an integer or a variable as argument, got: ~ts",
              ['Elixir.Macro':to_string(EArg)])
        end,
  
        expand_bit_info(Left, Meta, T, {size, [], [EArg]}, Types, EE);
      _ ->
        elixir_errors:compile_error(Meta, ?m(E, file),
          "duplicated size definition in bitstring")
    end;
  
  expand_bit_info(Left, Meta, [{Expr, ExprMeta, Args} | T], Size, Types, E) when is_atom(Expr) ->
    case expand_bit_type(Expr, Args) of
  
negative.code:     %% safely raise; we're sure that this is the first size we encountered
      %% (default) otherwise we would have raised before.
      {Bin, default} when is_binary(Bin) ->
        form_error(Meta, ?m(E, file), ?MODULE, size_for_literal_string);
      {_, default} ->
        {[EArg], EE} = elixir_exp:expand_args(Args, E),
  
  