anchor.diff:  format_error_reason(Reason) ->
       io_lib:format("~tp", [Reason]).
   
  +-type err_warn_info() :: tuple().
  +
   %% The compile state record.
   -record(compile, {filename="" :: file:filename(),
   		  dir=""      :: file:filename(),
   		  base=""     :: file:filename(),
   		  ifile=""    :: file:filename(),
   		  ofile=""    :: file:filename(),
  -		  module=[],
  -		  core_code=[],
  -		  abstract_code=[],		%Abstract code for debugger.
  -		  options=[]  :: [option()],	%Options for compilation
  +		  module=[]   :: module() | [],
  +		  core_code=[] :: cerl:c_module() | [],
  +		  abstract_code=[] :: binary() | [], %Abstract code for debugger.
  +		  options=[]  :: [option()],  %Options for compilation
   		  mod_options=[]  :: [option()], %Options for module_info
                     encoding=none :: none | epp:source_encoding(),
  -		  errors=[],
  -		  warnings=[]}).
  +		  errors=[]     :: [err_warn_info()],
  +		  warnings=[]   :: [err_warn_info()]}).
   
   internal({forms,Forms}, Opts0) ->
       {_,Ps} = passes(forms, Opts0),
  
positive.code: %% compile(AbsFileName, Outfilename, Options)
  %%   Compile entry point for erl_compile.
  
  compile(File0, _OutFile, Options) ->
      pre_load(),
      File = shorten_filename(File0),
  
negative.code: 	Other -> Other
      end.
  
  -spec compile_beam(file:filename(), _, #options{}) -> 'ok' | 'error'.
  
  compile_beam(File0, _OutFile, Opts) ->
      File = shorten_filename(File0),
      case file(File, [from_beam|make_erl_options(Opts)]) of
  