@@ -27,16 +27,16 @@ defmodule Kernel.TracersTest do
27
27
Foo
28
28
""" )
29
29
30
- assert_receive { :start , % { lexical_tracker: pid } } when is_pid ( pid )
31
- assert_receive { :stop , % { lexical_tracker: pid } } when is_pid ( pid )
30
+ assert_received { :start , % { lexical_tracker: pid } } when is_pid ( pid )
31
+ assert_received { :stop , % { lexical_tracker: pid } } when is_pid ( pid )
32
32
end
33
33
34
34
test "traces alias references" do
35
35
compile_string ( """
36
36
Foo
37
37
""" )
38
38
39
- assert_receive { { :alias_reference , meta , Foo } , _ }
39
+ assert_received { { :alias_reference , meta , Foo } , _ }
40
40
assert meta [ :line ] == 1
41
41
assert meta [ :column ] == 1
42
42
end
@@ -50,17 +50,17 @@ defmodule Kernel.TracersTest do
50
50
Bar
51
51
""" )
52
52
53
- assert_receive { { :alias , meta , Hello.World , World , [ ] } , _ }
53
+ assert_received { { :alias , meta , Hello.World , World , [ ] } , _ }
54
54
assert meta [ :line ] == 1
55
55
assert meta [ :column ] == 1
56
- assert_receive { { :alias_expansion , meta , World , Hello.World } , _ }
56
+ assert_received { { :alias_expansion , meta , World , Hello.World } , _ }
57
57
assert meta [ :line ] == 2
58
58
assert meta [ :column ] == 1
59
59
60
- assert_receive { { :alias , meta , Foo , Bar , [ as: Bar , warn: true ] } , _ }
60
+ assert_received { { :alias , meta , Foo , Bar , [ as: Bar , warn: true ] } , _ }
61
61
assert meta [ :line ] == 4
62
62
assert meta [ :column ] == 1
63
- assert_receive { { :alias_expansion , meta , Bar , Foo } , _ }
63
+ assert_received { { :alias_expansion , meta , Bar , Foo } , _ }
64
64
assert meta [ :line ] == 5
65
65
assert meta [ :column ] == 1
66
66
end
@@ -72,15 +72,19 @@ defmodule Kernel.TracersTest do
72
72
{1, ""} = parse("1")
73
73
""" )
74
74
75
- assert_receive { { :import , meta , Integer , only: [ is_odd: 1 , parse: 1 ] } , _ }
75
+ assert_received { { :import , meta , Integer , only: [ is_odd: 1 , parse: 1 ] } , _ }
76
76
assert meta [ :line ] == 1
77
77
assert meta [ :column ] == 1
78
78
79
- assert_receive { { :imported_macro , meta , Integer , :is_odd , 1 } , _ }
79
+ assert_received { { :imported_macro , meta , Integer , :is_odd , 1 } , _ }
80
80
assert meta [ :line ] == 2
81
81
assert meta [ :column ] == 8
82
82
83
- assert_receive { { :imported_function , meta , Integer , :parse , 1 } , _ }
83
+ assert_received { { :imported_function , meta , Integer , :parse , 1 } , _ }
84
+ assert meta [ :line ] == 3
85
+ assert meta [ :column ] == 11
86
+
87
+ assert_received { { :remote_function , meta , Integer , :parse , 1 } , _ }
84
88
assert meta [ :line ] == 3
85
89
assert meta [ :column ] == 11
86
90
end
@@ -92,15 +96,15 @@ defmodule Kernel.TracersTest do
92
96
&parse/1
93
97
""" )
94
98
95
- assert_receive { { :import , meta , Integer , only: [ is_odd: 1 , parse: 1 ] } , _ }
99
+ assert_received { { :import , meta , Integer , only: [ is_odd: 1 , parse: 1 ] } , _ }
96
100
assert meta [ :line ] == 1
97
101
assert meta [ :column ] == 1
98
102
99
- assert_receive { { :imported_macro , meta , Integer , :is_odd , 1 } , _ }
103
+ assert_received { { :imported_macro , meta , Integer , :is_odd , 1 } , _ }
100
104
assert meta [ :line ] == 2
101
105
assert meta [ :column ] == 2
102
106
103
- assert_receive { { :imported_function , meta , Integer , :parse , 1 } , _ }
107
+ assert_received { { :imported_function , meta , Integer , :parse , 1 } , _ }
104
108
assert meta [ :line ] == 3
105
109
assert meta [ :column ] == 2
106
110
end
@@ -110,7 +114,7 @@ defmodule Kernel.TracersTest do
110
114
%URI{path: "/"}
111
115
""" )
112
116
113
- assert_receive { { :struct_expansion , meta , URI , [ :path ] } , _ }
117
+ assert_received { { :struct_expansion , meta , URI , [ :path ] } , _ }
114
118
assert meta [ :line ] == 1
115
119
assert meta [ :column ] == 1
116
120
end
@@ -123,15 +127,15 @@ defmodule Kernel.TracersTest do
123
127
"foo" = Atom.to_string(:foo)
124
128
""" )
125
129
126
- assert_receive { { :remote_macro , meta , Integer , :is_odd , 1 } , _ }
130
+ assert_received { { :remote_macro , meta , Integer , :is_odd , 1 } , _ }
127
131
assert meta [ :line ] == 2
128
132
assert meta [ :column ] == 16
129
133
130
- assert_receive { { :remote_function , meta , Integer , :parse , 1 } , _ }
134
+ assert_received { { :remote_function , meta , Integer , :parse , 1 } , _ }
131
135
assert meta [ :line ] == 3
132
136
assert meta [ :column ] == 19
133
137
134
- assert_receive { { :remote_function , meta , Atom , :to_string , 1 } , _ }
138
+ assert_received { { :remote_function , meta , Atom , :to_string , 1 } , _ }
135
139
assert meta [ :line ] == 4
136
140
assert meta [ :column ] == 14
137
141
end
@@ -143,11 +147,11 @@ defmodule Kernel.TracersTest do
143
147
&Integer.parse/1
144
148
""" )
145
149
146
- assert_receive { { :remote_macro , meta , Integer , :is_odd , 1 } , _ }
150
+ assert_received { { :remote_macro , meta , Integer , :is_odd , 1 } , _ }
147
151
assert meta [ :line ] == 2
148
152
assert meta [ :column ] == 10
149
153
150
- assert_receive { { :remote_function , meta , Integer , :parse , 1 } , _ }
154
+ assert_received { { :remote_function , meta , Integer , :parse , 1 } , _ }
151
155
assert meta [ :line ] == 3
152
156
assert meta [ :column ] == 10
153
157
end
@@ -161,11 +165,11 @@ defmodule Kernel.TracersTest do
161
165
end
162
166
""" )
163
167
164
- assert_receive { { :local_macro , meta , :foo , 1 } , _ }
168
+ assert_received { { :local_macro , meta , :foo , 1 } , _ }
165
169
assert meta [ :line ] == 4
166
170
assert meta [ :column ] == 21
167
171
168
- assert_receive { { :local_function , meta , :bar , 1 } , _ }
172
+ assert_received { { :local_function , meta , :bar , 1 } , _ }
169
173
assert meta [ :line ] == 4
170
174
assert meta [ :column ] == 32
171
175
after
@@ -182,11 +186,11 @@ defmodule Kernel.TracersTest do
182
186
end
183
187
""" )
184
188
185
- assert_receive { { :local_macro , meta , :foo , 1 } , _ }
189
+ assert_received { { :local_macro , meta , :foo , 1 } , _ }
186
190
assert meta [ :line ] == 4
187
191
assert meta [ :column ] == 21
188
192
189
- assert_receive { { :local_function , meta , :bar , 1 } , _ }
193
+ assert_received { { :local_function , meta , :bar , 1 } , _ }
190
194
assert meta [ :line ] == 4
191
195
assert meta [ :column ] == 29
192
196
after
@@ -201,8 +205,8 @@ defmodule Kernel.TracersTest do
201
205
end
202
206
""" )
203
207
204
- assert_receive { :defmodule , % { module: Sample , function: nil } }
205
- assert_receive { { :on_module , << _ :: binary >> , :none } , % { module: Sample , function: nil } }
208
+ assert_received { :defmodule , % { module: Sample , function: nil } }
209
+ assert_received { { :on_module , << _ :: binary >> , :none } , % { module: Sample , function: nil } }
206
210
after
207
211
:code . purge ( Sample )
208
212
:code . delete ( Sample )
@@ -213,8 +217,8 @@ defmodule Kernel.TracersTest do
213
217
Module.create(Sample, :ok, __ENV__)
214
218
""" )
215
219
216
- assert_receive { :defmodule , % { module: Sample , function: nil } }
217
- assert_receive { { :on_module , << _ :: binary >> , :none } , % { module: Sample , function: nil } }
220
+ assert_received { :defmodule , % { module: Sample , function: nil } }
221
+ assert_received { { :on_module , << _ :: binary >> , :none } , % { module: Sample , function: nil } }
218
222
after
219
223
:code . purge ( Sample )
220
224
:code . delete ( Sample )
@@ -226,7 +230,7 @@ defmodule Kernel.TracersTest do
226
230
"foo\# {arg}"
227
231
""" )
228
232
229
- assert_receive { { :remote_macro , meta , Kernel , :to_string , 1 } , _env }
233
+ assert_received { { :remote_macro , meta , Kernel , :to_string , 1 } , _env }
230
234
assert meta [ :from_interpolation ]
231
235
end
232
236
@@ -236,7 +240,7 @@ defmodule Kernel.TracersTest do
236
240
foo[:bar]
237
241
""" )
238
242
239
- assert_receive { { :remote_function , meta , Access , :get , 2 } , _env }
243
+ assert_received { { :remote_function , meta , Access , :get , 2 } , _env }
240
244
assert meta [ :from_brackets ]
241
245
242
246
compile_string ( """
@@ -248,17 +252,37 @@ defmodule Kernel.TracersTest do
248
252
end
249
253
""" )
250
254
251
- assert_receive { { :remote_function , meta , Access , :get , 2 } , _env }
255
+ assert_received { { :remote_function , meta , Access , :get , 2 } , _env }
252
256
assert meta [ :from_brackets ]
253
257
254
258
compile_string ( """
255
259
%{bar: 3}[:bar]
256
260
""" )
257
261
258
- assert_receive { { :remote_function , meta , Access , :get , 2 } , _env }
262
+ assert_received { { :remote_function , meta , Access , :get , 2 } , _env }
259
263
assert meta [ :from_brackets ]
260
264
end
261
265
266
+ test "does not trace bind quoted twice" do
267
+ compile_string ( """
268
+ quote bind_quoted: [foo: List.flatten([])] do
269
+ foo
270
+ end
271
+ """ )
272
+
273
+ assert_received { { :remote_function , _ , List , :flatten , 1 } , _ }
274
+ refute_received { { :remote_function , _ , List , :flatten , 1 } , _ }
275
+ end
276
+
277
+ test "does not trace captures twice" do
278
+ compile_string ( """
279
+ &List.flatten/1
280
+ """ )
281
+
282
+ assert_received { { :remote_function , _ , List , :flatten , 1 } , _ }
283
+ refute_received { { :remote_function , _ , List , :flatten , 1 } , _ }
284
+ end
285
+
262
286
"""
263
287
# Make sure this module is compiled with column information
264
288
defmodule MacroWithColumn do
@@ -278,7 +302,7 @@ defmodule Kernel.TracersTest do
278
302
MacroWithColumn.some_macro(["hello", "world", "!"])
279
303
""" )
280
304
281
- assert_receive { { :alias_reference , meta , Enum } , _env }
305
+ assert_received { { :alias_reference , meta , Enum } , _env }
282
306
refute meta [ :column ]
283
307
end
284
308
end
0 commit comments