@@ -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