Skip to content

Commit

Permalink
follow up #47739 (#47746)
Browse files Browse the repository at this point in the history
(cherry picked from commit c46834b)
  • Loading branch information
aviatesk authored and KristofferC committed Oct 11, 2023
1 parent 8024e28 commit d3791a0
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
5 changes: 3 additions & 2 deletions base/reflection.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,8 @@ function may_invoke_generator(method::Method, @nospecialize(atypes), sparams::Si
end
end
end
non_va_args = method.isva ? method.nargs - 1 : method.nargs
nargs = Int(method.nargs)
non_va_args = method.isva ? nargs - 1 : nargs
for i = 1:non_va_args
if !isdispatchelem(at.parameters[i])
if (ast_slotflag(code, 1 + i + nsparams) & SLOT_USED) != 0
Expand All @@ -1095,7 +1096,7 @@ function may_invoke_generator(method::Method, @nospecialize(atypes), sparams::Si
if method.isva
# If the va argument is used, we need to ensure that all arguments that
# contribute to the va tuple are dispatchelemes
if (ast_slotflag(code, 1 + method.nargs + nsparams) & SLOT_USED) != 0
if (ast_slotflag(code, 1 + nargs + nsparams) & SLOT_USED) != 0
for i = (non_va_args+1):length(at.parameters)
if !isdispatchelem(at.parameters[i])
return false
Expand Down
4 changes: 2 additions & 2 deletions test/staged.jl
Original file line number Diff line number Diff line change
Expand Up @@ -312,10 +312,10 @@ end
end
g_vararg_generated() = f_vararg_generated((;), (;), Base.inferencebarrier((;)))
let tup = g_vararg_generated()
@test !any(==(Any), tup)
@test all(==(typeof((;))), tup)
# This is just to make sure that the test is actually testing what we want -
# the test only works if there's an unused that matches the position of the
# inferencebarrier argument above (N.B. the generator function itself
# shifts everything over by 1)
@test code_lowered(first(methods(f_vararg_generated)).generator.gen)[1].slotflags[5] == UInt8(0x00)
@test only(code_lowered(only(methods(f_vararg_generated)).generator.gen)).slotflags[5] == UInt8(0x00)
end

0 comments on commit d3791a0

Please sign in to comment.