anchor.diff:  %%
   %% %CopyrightBegin%
   %% 
  -%% Copyright Ericsson AB 1999-2009. All Rights Reserved.
  +%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
   %% 
   %% The contents of this file are subject to the Erlang Public License,
   %% Version 1.1, (the "License"); you may not use this file except in
  
positive.code: format_error({unbound_var,N,{F,A}}) ->
      io_lib:format("unbound variable ~s in ~w/~w", [N,F,A]);
  format_error({undefined_function,{F1,A1},{F2,A2}}) ->
      io_lib:format("undefined function ~w/~w in ~w/~w", [F1,A1,F2,A2]).
  
  -type ret() :: {'ok', [{module(), [warning(),...]}]}
               | {'error', [{module(), [error(),...]}],
  
negative.code: pat_segment(_, Def, Ps, St) ->
      {Ps,Def,add_error({not_bs_pattern,St#lint.func}, St)}.
  
  %% pat_bin_tail_check([Elem], State) -> State.
  %%  There must be at most one tail segment (a size-less segment of
  %%  type binary) and it must occur at the end.
  
  pat_bin_tail_check([#c_bitstr{size=#c_literal{val=all}}], St) ->
      %% Size-less field is OK at the end of the list of segments.
      St;
  pat_bin_tail_check([#c_bitstr{size=#c_literal{val=all}}|_], St) ->
      add_error({tail_segment_not_at_end,St#lint.func}, St);
  pat_bin_tail_check([_|Ss], St) ->
      pat_bin_tail_check(Ss, St);
  pat_bin_tail_check([], St) -> St.
  
  %% pat_bit_expr(SizePat, Type, Defined, State) -> State.
  %%  Check the Size pattern, this is an input!  Because of optimizations,
  %%  we must allow any kind of constant and literal here.
  