anchor.diff:          _ 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)])
  +          form_error(Meta, ?m(E, file), ?MODULE, {bad_bitsize, 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;
  +      form_error(Meta, ?m(E, file), ?MODULE, duplicated_size_definition)
  + end;
   
   expand_bit_info(Left, Meta, [{Expr, ExprMeta, Args} | T], Size, Types, E) when is_atom(Expr) ->
     case expand_bit_type(Expr, Args) of
  
positive.code: expand_bit_type(_, _)          -> none.
  
  validate_bit_type_args(Meta, unit, [Unit], E) when not is_integer(Unit) ->
    elixir_errors:compile_error(Meta, ?m(E, file),
      "unit in bitstring expects an integer as argument, got: ~ts",
      ['Elixir.Macro':to_string(Unit)]);
  validate_bit_type_args(_Meta, _Expr, _Args, _E) ->
    ok.
  
  
negative.code:   end;
  
  expand_bit_info(_Left, Meta, [Expr | _], _Size, _Types, E) ->
    form_error(Meta, ?m(E, file), ?MODULE, {undefined_bittype, Expr});
  expand_bit_info(_Left, Meta, [], Size, Types, _) ->
    [H | T] = case Size of
      default -> lists:reverse(Types);
  