anchor.diff:    );
   warn_pipe(_Token, _) ->
     ok.
  +
  +%% TODO: Make this an error on Elixir v2.0.
  +warn_trailing_comma({',', {Line, _, _}}) ->
  +  elixir_errors:warn(Line, ?file(),
  +    "trailing commas are not allowed inside function/macro call arguments"
  +  ).
  
positive.code:     "to pass an empty block, pass a value instead, such as a nil or an atom").
  
  %% TODO: Make this an error on Elixir v2.0.
  warn_empty_stab_clause({stab_op, {Line, _Begin, _End}, '->'}) ->
    elixir_errors:warn(Line, ?file(),
      "an expression is always required on the right side of ->. "
      "Please provide a value after ->").
  
  %% TODO: Make this an error on Elixir v2.0.
  warn_pipe({arrow_op, {Line, _Begin, _End}, Op}, {_, [_ | _], [_ | _]}) ->
    elixir_errors:warn(Line, ?file(),
      io_lib:format(
        "parentheses are required when piping into a function call. For example:\n\n"
  
negative.code: call_args_parens -> empty_paren : [].
  call_args_parens -> open_paren no_parens_expr close_paren : ['$2'].
  call_args_parens -> open_paren kw_base close_paren : [reverse('$2')].
  call_args_parens -> open_paren kw_base ',' close_paren : warn_trailing_comma('$3'), [reverse('$2')].
  call_args_parens -> open_paren call_args_parens_base close_paren : reverse('$2').
  call_args_parens -> open_paren call_args_parens_base ',' kw_base close_paren : reverse([reverse('$4') | '$2']).
  call_args_parens -> open_paren call_args_parens_base ',' kw_base ',' close_paren : warn_trailing_comma('$5'), reverse([reverse('$4') | '$2']).
  
  % KV
  
  