Skip to content

Commit 2fe5b77

Browse files
committed
Trace functions before they are inlined, closes #12925
1 parent f1a5e6a commit 2fe5b77

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

lib/elixir/src/elixir_dispatch.erl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,15 @@ dispatch_require(Meta, Receiver, Name, Args, S, E, Callback) when is_atom(Receiv
130130

131131
case elixir_rewrite:inline(Receiver, Name, Arity) of
132132
{AR, AN} ->
133+
elixir_env:trace({remote_function, Meta, Receiver, Name, Arity}, E),
133134
Callback(AR, AN, Args);
134135
false ->
135136
case expand_require(Meta, Receiver, {Name, Arity}, Args, S, E) of
136-
{ok, Receiver, Quoted} -> expand_quoted(Meta, Receiver, Name, Arity, Quoted, S, E);
137-
error -> Callback(Receiver, Name, Args)
137+
{ok, Receiver, Quoted} ->
138+
expand_quoted(Meta, Receiver, Name, Arity, Quoted, S, E);
139+
error ->
140+
elixir_env:trace({remote_function, Meta, Receiver, Name, Arity}, E),
141+
Callback(Receiver, Name, Args)
138142
end
139143
end;
140144

lib/elixir/src/elixir_expand.erl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -856,10 +856,6 @@ expand_remote(Receiver, DotMeta, Right, Meta, Args, S, SL, #{context := Context}
856856

857857
_ ->
858858
AttachedDotMeta = attach_context_module(Receiver, DotMeta, E),
859-
860-
is_atom(Receiver) andalso
861-
elixir_env:trace({remote_function, Meta, Receiver, Right, length(Args)}, E),
862-
863859
{EArgs, {SA, _}, EA} = mapfold(fun expand_arg/3, {SL, S}, E, Args),
864860

865861
case rewrite(Context, Receiver, AttachedDotMeta, Right, Meta, EArgs, S) of

lib/elixir/test/elixir/kernel/tracers_test.exs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ defmodule Kernel.TracersTest do
118118
require Integer
119119
true = Integer.is_odd(1)
120120
{1, ""} = Integer.parse("1")
121+
"foo" = Atom.to_string(:foo)
121122
""")
122123

123124
assert_receive {{:remote_macro, meta, Integer, :is_odd, 1}, _}
@@ -127,6 +128,10 @@ defmodule Kernel.TracersTest do
127128
assert_receive {{:remote_function, meta, Integer, :parse, 1}, _}
128129
assert meta[:line] == 3
129130
assert meta[:column] == 19
131+
132+
assert_receive {{:remote_function, meta, Atom, :to_string, 1}, _}
133+
assert meta[:line] == 4
134+
assert meta[:column] == 14
130135
end
131136

132137
test "traces remote via captures" do

0 commit comments

Comments
 (0)