diff --git a/stdlib/InteractiveUtils/src/codeview.jl b/stdlib/InteractiveUtils/src/codeview.jl index 3cb792c75b9b4..d6f7cd9daa24d 100644 --- a/stdlib/InteractiveUtils/src/codeview.jl +++ b/stdlib/InteractiveUtils/src/codeview.jl @@ -57,10 +57,11 @@ Keyword argument `debuginfo` may be one of `:source` or `:none` (default), to sp See [`@code_warntype`](@ref man-code-warntype) for more information. """ -function code_warntype(io::IO, @nospecialize(f), @nospecialize(t); debuginfo::Symbol=:default, optimize::Bool=false) +function code_warntype(io::IO, @nospecialize(f), @nospecialize(t); + debuginfo::Symbol=:default, optimize::Bool=false, kwargs...) debuginfo = Base.IRShow.debuginfo(debuginfo) lineprinter = Base.IRShow.__debuginfo[debuginfo] - for (src, rettype) in code_typed(f, t, optimize=optimize) + for (src, rettype) in code_typed(f, t; optimize, kwargs...) lambda_io::IOContext = io p = src.parent nargs::Int = 0 diff --git a/test/reflection.jl b/test/reflection.jl index 2e0ad68cf8aa1..4faa367817104 100644 --- a/test/reflection.jl +++ b/test/reflection.jl @@ -936,3 +936,19 @@ end @test f !== Core._apply @test occursin("f2#", String(nameof(f))) end + + +@testset "code_typed(; world)" begin + mod = @eval module $(gensym()) end + + @eval mod foo() = 1 + world1 = Base.get_world_counter() + @test only(code_typed(mod.foo, ())).second == Int + @test only(code_typed(mod.foo, (); world=world1)).second == Int + + @eval mod foo() = 2. + world2 = Base.get_world_counter() + @test only(code_typed(mod.foo, ())).second == Float64 + @test only(code_typed(mod.foo, (); world=world1)).second == Int + @test only(code_typed(mod.foo, (); world=world2)).second == Float64 +end