@@ -92,9 +92,9 @@ can_inline = Bool(Base.JLOptions().can_inline)
9292for (frame, func, inlined) in zip (trace, [g,h,f], (can_inline, can_inline, false ))
9393 @test frame. func === typeof (func). name. mt. name
9494 # 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}
9898 # line
9999 @test frame. file === Symbol (@__FILE__ )
100100 @test ! frame. from_c
266266@testset " Base.StackTraces docstrings" begin
267267 @test isempty (Docs. undocumented_names (StackTraces))
268268end
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