@@ -2377,7 +2377,8 @@ isInvalidPartialApplication(ConstraintSystem &cs,
2377
2377
// / the full opened type and the reference's type.
2378
2378
static DeclReferenceType getTypeOfReferenceWithSpecialTypeCheckingSemantics (
2379
2379
ConstraintSystem &CS, ConstraintLocator *locator,
2380
- DeclTypeCheckingSemantics semantics) {
2380
+ DeclTypeCheckingSemantics semantics,
2381
+ PreparedOverload *preparedOverload) {
2381
2382
switch (semantics) {
2382
2383
case DeclTypeCheckingSemantics::Normal:
2383
2384
llvm_unreachable (" Decl does not have special type checking semantics!" );
@@ -2389,17 +2390,18 @@ static DeclReferenceType getTypeOfReferenceWithSpecialTypeCheckingSemantics(
2389
2390
// be expressed in the type system currently.
2390
2391
auto input = CS.createTypeVariable (
2391
2392
CS.getConstraintLocator (locator, ConstraintLocator::FunctionArgument),
2392
- TVO_CanBindToNoEscape);
2393
+ TVO_CanBindToNoEscape, preparedOverload );
2393
2394
auto output = CS.createTypeVariable (
2394
2395
CS.getConstraintLocator (locator, ConstraintLocator::FunctionResult),
2395
- TVO_CanBindToNoEscape);
2396
+ TVO_CanBindToNoEscape, preparedOverload );
2396
2397
2397
2398
FunctionType::Param inputArg (input,
2398
2399
CS.getASTContext ().getIdentifier (" of" ));
2399
2400
2400
2401
CS.addConstraint (
2401
2402
ConstraintKind::DynamicTypeOf, output, input,
2402
- CS.getConstraintLocator (locator, ConstraintLocator::DynamicType));
2403
+ CS.getConstraintLocator (locator, ConstraintLocator::DynamicType),
2404
+ /* isFavored=*/ false , preparedOverload);
2403
2405
// FIXME: Verify ExtInfo state is correct, not working by accident.
2404
2406
FunctionType::ExtInfo info;
2405
2407
auto refType = FunctionType::get ({inputArg}, output, info);
@@ -2411,18 +2413,19 @@ static DeclReferenceType getTypeOfReferenceWithSpecialTypeCheckingSemantics(
2411
2413
// @escaping.
2412
2414
auto noescapeClosure = CS.createTypeVariable (
2413
2415
CS.getConstraintLocator (locator, ConstraintLocator::FunctionArgument),
2414
- TVO_CanBindToNoEscape);
2416
+ TVO_CanBindToNoEscape, preparedOverload );
2415
2417
auto escapeClosure = CS.createTypeVariable (
2416
2418
CS.getConstraintLocator (locator, ConstraintLocator::FunctionArgument),
2417
- TVO_CanBindToNoEscape);
2419
+ TVO_CanBindToNoEscape, preparedOverload );
2418
2420
CS.addConstraint (ConstraintKind::EscapableFunctionOf, escapeClosure,
2419
- noescapeClosure, CS.getConstraintLocator (locator));
2421
+ noescapeClosure, CS.getConstraintLocator (locator),
2422
+ /* isFavored=*/ false , preparedOverload);
2420
2423
auto result = CS.createTypeVariable (
2421
2424
CS.getConstraintLocator (locator, ConstraintLocator::FunctionResult),
2422
- TVO_CanBindToNoEscape);
2425
+ TVO_CanBindToNoEscape, preparedOverload );
2423
2426
auto thrownError = CS.createTypeVariable (
2424
2427
CS.getConstraintLocator (locator, ConstraintLocator::ThrownErrorType),
2425
- 0 );
2428
+ 0 , preparedOverload );
2426
2429
FunctionType::Param arg (escapeClosure);
2427
2430
auto bodyClosure = FunctionType::get (arg, result,
2428
2431
FunctionType::ExtInfoBuilder ()
@@ -2448,18 +2451,19 @@ static DeclReferenceType getTypeOfReferenceWithSpecialTypeCheckingSemantics(
2448
2451
// existential type as its input.
2449
2452
auto openedTy = CS.createTypeVariable (
2450
2453
CS.getConstraintLocator (locator, ConstraintLocator::FunctionArgument),
2451
- TVO_CanBindToNoEscape);
2454
+ TVO_CanBindToNoEscape, preparedOverload );
2452
2455
auto existentialTy = CS.createTypeVariable (
2453
2456
CS.getConstraintLocator (locator, ConstraintLocator::FunctionArgument),
2454
- TVO_CanBindToNoEscape);
2457
+ TVO_CanBindToNoEscape, preparedOverload );
2455
2458
CS.addConstraint (ConstraintKind::OpenedExistentialOf, openedTy,
2456
- existentialTy, CS.getConstraintLocator (locator));
2459
+ existentialTy, CS.getConstraintLocator (locator),
2460
+ /* isFavored=*/ false , preparedOverload);
2457
2461
auto result = CS.createTypeVariable (
2458
2462
CS.getConstraintLocator (locator, ConstraintLocator::FunctionResult),
2459
- TVO_CanBindToNoEscape);
2463
+ TVO_CanBindToNoEscape, preparedOverload );
2460
2464
auto thrownError = CS.createTypeVariable (
2461
2465
CS.getConstraintLocator (locator, ConstraintLocator::ThrownErrorType),
2462
- 0 );
2466
+ 0 , preparedOverload );
2463
2467
FunctionType::Param bodyArgs[] = {FunctionType::Param (openedTy)};
2464
2468
auto bodyClosure = FunctionType::get (bodyArgs, result,
2465
2469
FunctionType::ExtInfoBuilder ()
0 commit comments