@@ -92,9 +92,9 @@ can_inline = Bool(Base.JLOptions().can_inline)
92
92
for (frame, func, inlined) in zip (trace, [g,h,f], (can_inline, can_inline, false ))
93
93
@test frame. func === typeof (func). name. mt. name
94
94
# broken until #50082 can be addressed
95
- @test frame. linfo. def. module === which (func, (Any,)). module broken = inlined
96
- @test frame. linfo. def === which (func, (Any,)) broken = inlined
97
- @test frame. linfo. specTypes === Tuple{typeof (func), Int} broken = inlined
95
+ @test frame. linfo. def. module === which (func, (Any,)). module
96
+ @test frame. linfo. def === which (func, (Any,))
97
+ @test frame. linfo. specTypes === Tuple{typeof (func), Int}
98
98
# line
99
99
@test frame. file === Symbol (@__FILE__ )
100
100
@test ! frame. from_c
266
266
@testset " Base.StackTraces docstrings" begin
267
267
@test isempty (Docs. undocumented_names (StackTraces))
268
268
end
269
+
270
+ global f_parent1_line:: Int , f_inner1_line:: Int , f_innermost1_line:: Int
271
+ function f_parent1 (a)
272
+ x = a
273
+ return begin
274
+ @inline f_inner1 (x)
275
+ end
276
+ end ; f_parent1_line = (@__LINE__ ) - 2
277
+ function f_inner1 (a)
278
+ x = a
279
+ return @inline f_innermost1 (x)
280
+ end ; f_inner1_line = (@__LINE__ ) - 1
281
+ f_innermost1 (x) = x > 0 ? @noinline (sin (x)) : error (" x is negative" )
282
+ f_innermost1_line = (@__LINE__ ) - 1
283
+ let st = try
284
+ f_parent1 (- 1 )
285
+ catch err
286
+ stacktrace (catch_backtrace ())
287
+ end
288
+ @test any (st) do sf
289
+ sf. func === :f_parent1 && sf. line == f_parent1_line && sf. linfo isa Core. MethodInstance
290
+ end
291
+ @test any (st) do sf
292
+ sf. func === :f_inner1 && sf. line == f_inner1_line && sf. linfo isa Core. MethodInstance && sf. inlined
293
+ end
294
+ @test any (st) do sf
295
+ sf. func === :f_innermost1 && sf. line == f_innermost1_line && sf. linfo isa Core. MethodInstance && sf. inlined
296
+ end
297
+ end
298
+
299
+ global f_parent2_line:: Int , f_inner2_line:: Int , f_innermost2_line:: Int
300
+ function f_parent2 (a)
301
+ x = identity (a)
302
+ return begin
303
+ @inline f_inner2 (x)
304
+ end
305
+ end ; f_parent2_line = (@__LINE__ ) - 2
306
+ function f_inner2 (a)
307
+ x = identity (a)
308
+ return @inline f_innermost2 (x)
309
+ end ; f_inner2_line = (@__LINE__ ) - 1
310
+ f_innermost2 (x) = x > 0 ? @noinline (sin (x)) : error (" x is negative" )
311
+ f_innermost2_line = (@__LINE__ ) - 1
312
+ let st = try
313
+ f_parent2 (- 1 )
314
+ catch err
315
+ stacktrace (catch_backtrace ())
316
+ end
317
+ @test any (st) do sf
318
+ sf. func === :f_parent2 && sf. line == f_parent2_line && sf. linfo isa Core. MethodInstance
319
+ end
320
+ @test_broken any (st) do sf
321
+ sf. func === :f_inner2 && sf. line == f_inner2_line && sf. linfo isa Core. MethodInstance && sf. inlined
322
+ end
323
+ @test_broken any (st) do sf
324
+ sf. func === :f_innermost2 && sf. line == f_innermost2_line && sf. linfo isa Core. MethodInstance && sf. inlined
325
+ end
326
+ end
0 commit comments