anchor.diff:  
   format_error(invalid_rescue_clause) ->
     "invalid \"rescue\" clause. The clause should match on an alias, a variable "
  -    "or be in the \"var in [alias]\" format".
  +    "or be in the \"var in [alias]\" format";
  +
  +format_error(catch_before_rescue) ->
  +  "\"catch\" should always come after \"rescue\" in try";
  +
  +format_error(unmatchable_else_in_with) ->
  +  "\"else\" clauses will never match because all patterns in \"with\" will always match";
  +
  +format_error({zero_list_length_in_guard, ListArg}) ->
  +  Arg = 'Elixir.Macro':to_string(ListArg),
  +  io_lib:format("do not use \"length(~ts) == 0\" to check if a list is empty since length "
  +                "always traverses the whole list. Prefer to pattern match on an empty list or "
  +                "use \"~ts == []\" as a guard", [Arg, Arg]);
  +
  +format_error({positive_list_length_in_guard, ListArg}) ->
  +  Arg = 'Elixir.Macro':to_string(ListArg),
  +  io_lib:format("do not use \"length(~ts) > 0\" to check if a list is not empty since length "
  +                "always traverses the whole list. Prefer to pattern match on a non-empty list, "
  +                "such as [_ | _], or use \"~ts != []\" as a guard", [Arg, Arg]).
  
positive.code:   case lists:keytake(else, 1, Opts) of
      {value, Pair, RestOpts} ->
        if
          HasMatch ->
            ok;
          true ->
            Message = "\"else\" clauses will never match because all patterns in \"with\" will always match",
            elixir_errors:warn(?line(Meta), ?key(E, file), Message)
        end,
        Fun = expand_one(Meta, 'with', 'else', fun head/2),
        {EPair, EE} = expand_clauses(Meta, 'with', Fun, Pair, E),
  
negative.code:   warn_zero_length_guard(EGuard, EG),
    {EGuard, EG}.
  
  warn_zero_length_guard({{'.', _, [erlang, Op]}, Meta,
                          [{{'.', _, [erlang, length]}, _, [Arg]}, 0]}, E) when Op == '=='; Op == '>' ->
    Warn =
      case Op of
        '==' -> {zero_list_length_in_guard, Arg};
        '>' -> {positive_list_length_in_guard, Arg}
      end,
    form_warn(Meta, ?key(E, file), ?MODULE, Warn);
  warn_zero_length_guard({Op, _, [L, R]}, E) when Op == 'or'; Op == 'and' ->
    warn_zero_length_guard(L, E),
    warn_zero_length_guard(R, E);
  