@@ -72,15 +72,15 @@ function abstract_call_gf_by_type(interp::AbstractInterpreter, @nospecialize(f),
7272 # which is all that's required for :consistent-cy. Of course, we don't
7373 # know anything else about this statement.
7474 effects = Effects (; consistent= ALWAYS_TRUE, nonoverlayed)
75- return CallMeta (Any, effects, false )
75+ return CallMeta (Any, effects, NoCallInfo () )
7676 end
7777
7878 argtypes = arginfo. argtypes
7979 matches = find_matching_methods (argtypes, atype, method_table (interp),
8080 InferenceParams (interp). MAX_UNION_SPLITTING, max_methods)
8181 if isa (matches, FailedMethodMatch)
8282 add_remark! (interp, sv, matches. reason)
83- return CallMeta (Any, Effects (), false )
83+ return CallMeta (Any, Effects (), NoCallInfo () )
8484 end
8585
8686 (; valid_worlds, applicable, info) = matches
@@ -219,7 +219,7 @@ function abstract_call_gf_by_type(interp::AbstractInterpreter, @nospecialize(f),
219219 method = match. method
220220 sig = match. spec_types
221221 mi = specialize_method (match; preexisting= true )
222- if mi != = nothing && ! const_prop_methodinstance_heuristic (interp, match, mi:: MethodInstance , arginfo, sv)
222+ if mi != = nothing && ! const_prop_methodinstance_heuristic (interp, match, mi, arginfo, sv)
223223 csig = get_compileable_sig (method, sig, match. sparams)
224224 if csig != = nothing && csig != = sig
225225 # The result of this inference is not directly used, so temporarily empty
@@ -1387,15 +1387,15 @@ function abstract_apply(interp::AbstractInterpreter, argtypes::Vector{Any}, sv::
13871387 max_methods:: Int = get_max_methods (sv. mod, interp))
13881388 itft = argtype_by_index (argtypes, 2 )
13891389 aft = argtype_by_index (argtypes, 3 )
1390- (itft === Bottom || aft === Bottom) && return CallMeta (Bottom, EFFECTS_THROWS, false )
1390+ (itft === Bottom || aft === Bottom) && return CallMeta (Bottom, EFFECTS_THROWS, NoCallInfo () )
13911391 aargtypes = argtype_tail (argtypes, 4 )
13921392 aftw = widenconst (aft)
13931393 if ! isa (aft, Const) && ! isa (aft, PartialOpaque) && (! isType (aftw) || has_free_typevars (aftw))
13941394 if ! isconcretetype (aftw) || (aftw <: Builtin )
13951395 add_remark! (interp, sv, " Core._apply_iterate called on a function of a non-concrete type" )
13961396 # bail now, since it seems unlikely that abstract_call will be able to do any better after splitting
13971397 # this also ensures we don't call abstract_call_gf_by_type below on an IntrinsicFunction or Builtin
1398- return CallMeta (Any, Effects (), false )
1398+ return CallMeta (Any, Effects (), NoCallInfo () )
13991399 end
14001400 end
14011401 res = Union{}
@@ -1470,7 +1470,7 @@ function abstract_apply(interp::AbstractInterpreter, argtypes::Vector{Any}, sv::
14701470 if bail_out_apply (interp, res, sv)
14711471 if i != length (ctypes)
14721472 # No point carrying forward the info, we're not gonna inline it anyway
1473- retinfo = false
1473+ retinfo = NoCallInfo ()
14741474 end
14751475 break
14761476 end
@@ -1670,21 +1670,21 @@ end
16701670function abstract_invoke (interp:: AbstractInterpreter , (; fargs, argtypes):: ArgInfo , sv:: InferenceState )
16711671 ft′ = argtype_by_index (argtypes, 2 )
16721672 ft = widenconst (ft′)
1673- ft === Bottom && return CallMeta (Bottom, EFFECTS_THROWS, false )
1673+ ft === Bottom && return CallMeta (Bottom, EFFECTS_THROWS, NoCallInfo () )
16741674 (types, isexact, isconcrete, istype) = instanceof_tfunc (argtype_by_index (argtypes, 3 ))
1675- types === Bottom && return CallMeta (Bottom, EFFECTS_THROWS, false )
1676- isexact || return CallMeta (Any, Effects (), false )
1675+ types === Bottom && return CallMeta (Bottom, EFFECTS_THROWS, NoCallInfo () )
1676+ isexact || return CallMeta (Any, Effects (), NoCallInfo () )
16771677 argtype = argtypes_to_type (argtype_tail (argtypes, 4 ))
16781678 nargtype = typeintersect (types, argtype)
1679- nargtype === Bottom && return CallMeta (Bottom, EFFECTS_THROWS, false )
1680- nargtype isa DataType || return CallMeta (Any, Effects (), false ) # other cases are not implemented below
1681- isdispatchelem (ft) || return CallMeta (Any, Effects (), false ) # check that we might not have a subtype of `ft` at runtime, before doing supertype lookup below
1679+ nargtype === Bottom && return CallMeta (Bottom, EFFECTS_THROWS, NoCallInfo () )
1680+ nargtype isa DataType || return CallMeta (Any, Effects (), NoCallInfo () ) # other cases are not implemented below
1681+ isdispatchelem (ft) || return CallMeta (Any, Effects (), NoCallInfo () ) # check that we might not have a subtype of `ft` at runtime, before doing supertype lookup below
16821682 ft = ft:: DataType
16831683 lookupsig = rewrap_unionall (Tuple{ft, unwrap_unionall (types). parameters... }, types):: Type
16841684 nargtype = Tuple{ft, nargtype. parameters... }
16851685 argtype = Tuple{ft, argtype. parameters... }
16861686 match, valid_worlds, overlayed = findsup (lookupsig, method_table (interp))
1687- match === nothing && return CallMeta (Any, Effects (), false )
1687+ match === nothing && return CallMeta (Any, Effects (), NoCallInfo () )
16881688 update_valid_age! (sv, valid_worlds)
16891689 method = match. method
16901690 tienv = ccall (:jl_type_intersection_with_env , Any, (Any, Any), nargtype, method. sig):: SimpleVector
@@ -1730,7 +1730,7 @@ function abstract_finalizer(interp::AbstractInterpreter, argtypes::Vector{Any},
17301730 call = abstract_call (interp, ArgInfo (nothing , finalizer_argvec), sv, 1 )
17311731 return CallMeta (Nothing, Effects (), FinalizerInfo (call. info, call. effects))
17321732 end
1733- return CallMeta (Nothing, Effects (), false )
1733+ return CallMeta (Nothing, Effects (), NoCallInfo () )
17341734end
17351735
17361736# call where the function is known exactly
@@ -1752,10 +1752,10 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
17521752 end
17531753 rt = abstract_call_builtin (interp, f, arginfo, sv, max_methods)
17541754 effects = builtin_effects (typeinf_lattice (interp), f, argtypes[2 : end ], rt)
1755- return CallMeta (rt, effects, false )
1755+ return CallMeta (rt, effects, NoCallInfo () )
17561756 elseif isa (f, Core. OpaqueClosure)
17571757 # calling an OpaqueClosure about which we have no information returns no information
1758- return CallMeta (Any, Effects (), false )
1758+ return CallMeta (Any, Effects (), NoCallInfo () )
17591759 elseif f === Core. kwfunc
17601760 if la == 2
17611761 aty = argtypes[2 ]
@@ -1766,11 +1766,11 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
17661766 end
17671767 end
17681768 end
1769- return CallMeta (Any, EFFECTS_UNKNOWN, false )
1769+ return CallMeta (Any, EFFECTS_UNKNOWN, NoCallInfo () )
17701770 elseif f === TypeVar
17711771 # Manually look through the definition of TypeVar to
17721772 # make sure to be able to get `PartialTypeVar`s out.
1773- (la < 2 || la > 4 ) && return CallMeta (Union{}, EFFECTS_UNKNOWN, false )
1773+ (la < 2 || la > 4 ) && return CallMeta (Union{}, EFFECTS_UNKNOWN, NoCallInfo () )
17741774 n = argtypes[2 ]
17751775 ub_var = Const (Any)
17761776 lb_var = Const (Union{})
@@ -1780,14 +1780,14 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
17801780 elseif la == 3
17811781 ub_var = argtypes[3 ]
17821782 end
1783- return CallMeta (typevar_tfunc (n, lb_var, ub_var), EFFECTS_UNKNOWN, false )
1783+ return CallMeta (typevar_tfunc (n, lb_var, ub_var), EFFECTS_UNKNOWN, NoCallInfo () )
17841784 elseif f === UnionAll
1785- return CallMeta (abstract_call_unionall (argtypes), EFFECTS_UNKNOWN, false )
1785+ return CallMeta (abstract_call_unionall (argtypes), EFFECTS_UNKNOWN, NoCallInfo () )
17861786 elseif f === Tuple && la == 2
17871787 aty = argtypes[2 ]
17881788 ty = isvarargtype (aty) ? unwrapva (aty) : widenconst (aty)
17891789 if ! isconcretetype (ty)
1790- return CallMeta (Tuple, EFFECTS_UNKNOWN, false )
1790+ return CallMeta (Tuple, EFFECTS_UNKNOWN, NoCallInfo () )
17911791 end
17921792 elseif is_return_type (f)
17931793 return return_type_tfunc (interp, argtypes, sv)
@@ -1802,11 +1802,11 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
18021802 # mark !== as exactly a negated call to ===
18031803 rty = abstract_call_known (interp, (=== ), arginfo, sv, max_methods). rt
18041804 if isa (rty, Conditional)
1805- return CallMeta (Conditional (rty. slot, rty. elsetype, rty. thentype), EFFECTS_TOTAL, false ) # swap if-else
1805+ return CallMeta (Conditional (rty. slot, rty. elsetype, rty. thentype), EFFECTS_TOTAL, NoCallInfo () ) # swap if-else
18061806 elseif isa (rty, Const)
18071807 return CallMeta (Const (rty. val === false ), EFFECTS_TOTAL, MethodResultPure ())
18081808 end
1809- return CallMeta (rty, EFFECTS_TOTAL, false )
1809+ return CallMeta (rty, EFFECTS_TOTAL, NoCallInfo () )
18101810 elseif la == 3 && istopfunction (f, :(> :))
18111811 # mark issupertype as a exact alias for issubtype
18121812 # swap T1 and T2 arguments and call <:
@@ -1816,7 +1816,7 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
18161816 fargs = nothing
18171817 end
18181818 argtypes = Any[typeof (< :), argtypes[3 ], argtypes[2 ]]
1819- return CallMeta (abstract_call_known (interp, < :, ArgInfo (fargs, argtypes), sv, max_methods). rt, EFFECTS_TOTAL, false )
1819+ return CallMeta (abstract_call_known (interp, < :, ArgInfo (fargs, argtypes), sv, max_methods). rt, EFFECTS_TOTAL, NoCallInfo () )
18201820 elseif la == 2 &&
18211821 (a2 = argtypes[2 ]; isa (a2, Const)) && (svecval = a2. val; isa (svecval, SimpleVector)) &&
18221822 istopfunction (f, :length )
@@ -1898,13 +1898,13 @@ function abstract_call(interp::AbstractInterpreter, arginfo::ArgInfo,
18981898 return abstract_call_opaque_closure (interp,
18991899 ft, ArgInfo (arginfo. fargs, newargtypes), sv, #= check=# true )
19001900 elseif (uft = unwrap_unionall (widenconst (ft)); isa (uft, DataType) && uft. name === typename (Core. OpaqueClosure))
1901- return CallMeta (rewrap_unionall ((uft:: DataType ). parameters[2 ], widenconst (ft)), Effects (), false )
1901+ return CallMeta (rewrap_unionall ((uft:: DataType ). parameters[2 ], widenconst (ft)), Effects (), NoCallInfo () )
19021902 elseif f === nothing
19031903 # non-constant function, but the number of arguments is known
19041904 # and the ft is not a Builtin or IntrinsicFunction
19051905 if hasintersect (widenconst (ft), Union{Builtin, Core. OpaqueClosure})
19061906 add_remark! (interp, sv, " Could not identify method table for call" )
1907- return CallMeta (Any, Effects (), false )
1907+ return CallMeta (Any, Effects (), NoCallInfo () )
19081908 end
19091909 max_methods = max_methods === nothing ? get_max_methods (sv. mod, interp) : max_methods
19101910 return abstract_call_gf_by_type (interp, nothing , arginfo, argtypes_to_type (argtypes), sv, max_methods)
0 commit comments