From 5e9f9b84424cfd1ce249f69f77341777171b7a05 Mon Sep 17 00:00:00 2001 From: Fredrik Frantzen Date: Sat, 8 Feb 2025 15:43:40 +0100 Subject: [PATCH] fix: output "record default value" instead of function rec_init$^ --- lib/stdlib/src/erl_error.erl | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/stdlib/src/erl_error.erl b/lib/stdlib/src/erl_error.erl index c5ae309ce12d..e012131bac82 100644 --- a/lib/stdlib/src/erl_error.erl +++ b/lib/stdlib/src/erl_error.erl @@ -536,10 +536,20 @@ location(L) -> sep(1, S) -> S; sep(_, S) -> [$\n | S]. +is_rec_init(F) when is_atom(F) -> + case atom_to_binary(F) of + <<"rec_init$^", _/binary>> -> true; + _ -> false + end; +is_rec_init(_) -> false. + origin(1, M, F, A) -> case is_op({M, F}, n_args(A)) of {yes, F} -> <<"in operator ">>; - no -> <<"in function ">> + no -> case is_rec_init(F) of + true -> <<"in record">>; + _ -> <<"in function ">> + end end; origin(_N, _M, _F, _A) -> <<"in call from">>. @@ -625,7 +635,10 @@ printable_list(_, As) -> io_lib:printable_list(As). mfa_to_string(M, F, A, Enc) -> - io_lib:fwrite(<<"~ts/~w">>, [mf_to_string({M, F}, A, Enc), A]). + case is_rec_init(F) of + true -> <<"default value">>; + _ -> io_lib:fwrite(<<"~ts/~w">>, [mf_to_string({M, F}, A, Enc), A]) + end. mf_to_string({M, F}, A, Enc) -> case erl_internal:bif(M, F, A) of