@@ -1402,8 +1402,9 @@ function matching_cache_argtypes(𝕃::AbstractLattice, mi::MethodInstance,
14021402 if slotid != = nothing
14031403 # using union-split signature, we may be able to narrow down `Conditional`
14041404 sigt = widenconst (slotid > nargs ? argtypes[slotid] : cache_argtypes[slotid])
1405- thentype = tmeet (cnd. thentype, sigt)
1406- elsetype = tmeet (cnd. elsetype, sigt)
1405+ ⊓ = meet (𝕃)
1406+ thentype = cnd. thentype ⊓ sigt
1407+ elsetype = cnd. elsetype ⊓ sigt
14071408 if thentype === Bottom && elsetype === Bottom
14081409 # we accidentally proved this method match is impossible
14091410 # TODO bail out here immediately rather than just propagating Bottom ?
@@ -2119,7 +2120,7 @@ function abstract_call_builtin(interp::AbstractInterpreter, f::Builtin, (; fargs
21192120 else
21202121 thentype = form_partially_defined_struct (argtype2, argtypes[3 ])
21212122 if thentype != = nothing
2122- elsetype = argtype2
2123+ elsetype = widenslotwrapper ( argtype2)
21232124 if rt === Const (false )
21242125 thentype = Bottom
21252126 elseif rt === Const (true )
@@ -2210,7 +2211,7 @@ function abstract_call_unionall(interp::AbstractInterpreter, argtypes::Vector{An
22102211 return CallMeta (ret, Any, Effects (EFFECTS_TOTAL; nothrow), call. info)
22112212end
22122213
2213- function ci_abi (ci:: CodeInstance )
2214+ function get_ci_abi (ci:: CodeInstance )
22142215 def = ci. def
22152216 isa (def, ABIOverride) && return def. abi
22162217 (def:: MethodInstance ). specTypes
@@ -2233,7 +2234,7 @@ function abstract_invoke(interp::AbstractInterpreter, arginfo::ArgInfo, si::Stmt
22332234 if isa (method_or_ci, CodeInstance)
22342235 our_world = sv. world. this
22352236 argtype = argtypes_to_type (pushfirst! (argtype_tail (argtypes, 4 ), ft))
2236- specsig = ci_abi (method_or_ci)
2237+ specsig = get_ci_abi (method_or_ci)
22372238 defdef = get_ci_mi (method_or_ci). def
22382239 exct = method_or_ci. exctype
22392240 if ! hasintersect (argtype, specsig)
@@ -3229,7 +3230,7 @@ function abstract_eval_isdefined_expr(interp::AbstractInterpreter, e::Expr, ssta
32293230 elseif ! vtyp. undef
32303231 rt = Const (true ) # definitely assigned previously
32313232 else # form `Conditional` to refine `vtyp.undef` in the then branch
3232- rt = Conditional (sym, vtyp. typ, vtyp. typ; isdefined= true )
3233+ rt = Conditional (sym, widenslotwrapper ( vtyp. typ), widenslotwrapper ( vtyp. typ) ; isdefined= true )
32333234 end
32343235 return RTEffects (rt, Union{}, EFFECTS_TOTAL)
32353236 end
@@ -3497,7 +3498,7 @@ function merge_override_effects!(interp::AbstractInterpreter, effects::Effects,
34973498 # N.B.: We'd like deleted_world here, but we can't add an appropriate edge at this point.
34983499 # However, in order to reach here in the first place, ordinary method lookup would have
34993500 # had to add an edge and appropriate invalidation trigger.
3500- valid_worlds = WorldRange (m. primary_world, typemax (Int ))
3501+ valid_worlds = WorldRange (m. primary_world, typemax (UInt ))
35013502 if sv. world. this in valid_worlds
35023503 update_valid_age! (sv, valid_worlds)
35033504 else
0 commit comments