diff options
Diffstat (limited to 'lib/stdlib/src/qlc.erl')
| -rw-r--r-- | lib/stdlib/src/qlc.erl | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/stdlib/src/qlc.erl b/lib/stdlib/src/qlc.erl index 5ca04ff023..2b691e6abf 100644 --- a/lib/stdlib/src/qlc.erl +++ b/lib/stdlib/src/qlc.erl @@ -123,7 +123,7 @@  -record(setup, {parent}). --define(THROWN_ERROR, {?MODULE, throw_error, _}). +-define(THROWN_ERROR, {?MODULE, throw_error, _, _}).  -export_type([query_handle/0]). @@ -1272,7 +1272,10 @@ abstr_term(Fun, Line) when is_function(Fun) ->              case erlang:fun_info(Fun, type) of                  {type, external} ->                      {module, Module} = erlang:fun_info(Fun, module), -                    {'fun', Line, {function,Module,Name,Arity}}; +                    {'fun', Line, {function, +				   {atom,Line,Module}, +				   {atom,Line,Name}, +				   {integer,Line,Arity}}};                  {type, local} ->                      {'fun', Line, {function,Name,Arity}}              end @@ -3701,7 +3704,8 @@ lookup_join(F1, C1, LuF, C2, Rev) ->  maybe_error_logger(allowed, _) ->      ok;  maybe_error_logger(Name, Why) -> -    [_, _, {?MODULE,maybe_error_logger,_} | Stacktrace] = expand_stacktrace(), +    [_, _, {?MODULE,maybe_error_logger,_,_} | Stacktrace] = +	expand_stacktrace(),      Trimmer = fun(M, _F, _A) -> M =:= erl_eval end,      Formater = fun(Term, I) -> io_lib:print(Term, I, 80, -1) end,      X = lib:format_stacktrace(1, Stacktrace, Trimmer, Formater), @@ -3720,7 +3724,7 @@ expand_stacktrace() ->  expand_stacktrace(D) ->      _ = erlang:system_flag(backtrace_depth, D),      {'EXIT', {foo, Stacktrace}} = (catch erlang:error(foo)), -    L = lists:takewhile(fun({M,_,_}) -> M =/= ?MODULE  +    L = lists:takewhile(fun({M,_,_,_}) -> M =/= ?MODULE                          end, lists:reverse(Stacktrace)),      if          length(L) < 3 andalso length(Stacktrace) =:= D ->  | 
