@@ -1253,6 +1253,9 @@ function abstract_call_known(interp::AbstractInterpreter, @nospecialize(f),
1253
1253
return abstract_modifyfield! (interp, argtypes, sv)
1254
1254
end
1255
1255
return CallMeta (abstract_call_builtin (interp, f, fargs, argtypes, sv, max_methods), false )
1256
+ elseif isa (f, Core. OpaqueClosure)
1257
+ # calling an OpaqueClosure about which we have no information returns no information
1258
+ return CallMeta (Any, false )
1256
1259
elseif f === Core. kwfunc
1257
1260
if la == 2
1258
1261
aty = argtypes[2 ]
@@ -1380,8 +1383,8 @@ function abstract_call(interp::AbstractInterpreter, fargs::Union{Nothing,Vector{
1380
1383
f = argtype_to_function (ft)
1381
1384
if isa (ft, PartialOpaque)
1382
1385
return abstract_call_opaque_closure (interp, ft, argtypes[2 : end ], sv)
1383
- elseif (uft = unwrap_unionall (ft ); isa (uft, DataType) && uft. name === typename (Core. OpaqueClosure))
1384
- return CallMeta (rewrap_unionall ((uft:: DataType ). parameters[2 ], ft ), false )
1386
+ elseif (uft = unwrap_unionall (widenconst (ft) ); isa (uft, DataType) && uft. name === typename (Core. OpaqueClosure))
1387
+ return CallMeta (rewrap_unionall ((uft:: DataType ). parameters[2 ], widenconst (ft) ), false )
1385
1388
elseif f === nothing
1386
1389
# non-constant function, but the number of arguments is known
1387
1390
# and the ft is not a Builtin or IntrinsicFunction
0 commit comments