Changeset 92 for trunk/src/modules.erl


Ignore:
Timestamp:
01/28/10 16:21:51 (2 years ago)
Author:
dom
Message:

File and line is now provided for test failures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/modules.erl

    r68 r92  
    99-export ([compile/1]). 
    1010-export ([module_name/1]). 
     11-export ([locate/2]). 
    1112 
    1213to_binary (File_name) -> 
     
    2324 
    2425compile (Fun, Parameter) -> 
    25     Options = [binary, return, warn_unused_import], 
     26    Options = [binary, return, warn_unused_import, debug_info], 
    2627    Fun (Parameter, Options). 
    2728 
     
    3334    String = filename: rootname (filename: basename (Filename)), 
    3435    list_to_atom (String). 
     36 
     37locate ({M, F, A}, Binary) -> 
     38    {ok, {M, Chunks}} = beam_lib: chunks (Binary, [abstract_code, compile_info]), 
     39    [{abstract_code, Code}, {compile_info, Info}] = Chunks, 
     40    {value, {source, Filename}} = lists: keysearch (source, 1, Info), 
     41    {raw_abstract_v1, Forms} = Code, 
     42    Line = locate_line (F, A, Forms), 
     43    {Filename, Line}. 
     44 
     45locate_line (Function, Arity, [{function, Line, Function, Arity,  _} | _]) -> 
     46    Line; 
     47locate_line (Function, Arity, [_ | Forms]) -> 
     48    locate_line (Function, Arity, Forms); 
     49locate_line (_, _, []) -> 
     50    unknown. 
Note: See TracChangeset for help on using the changeset viewer.