@@ -1092,8 +1092,8 @@ namespace {
1092
1092
FunctionType::ExtInfo closureInfo;
1093
1093
auto *autoClosureType =
1094
1094
FunctionType::get (outerParamTypes, fnType->getResult (), closureInfo);
1095
- auto *autoClosure = new (context) AutoClosureExpr (fnCall, autoClosureType,
1096
- discriminator, cs. DC );
1095
+ auto *autoClosure = new (context)
1096
+ AutoClosureExpr (fnCall, autoClosureType, discriminator, dc );
1097
1097
autoClosure->setParameterList (outerParams);
1098
1098
autoClosure->setThunkKind (AutoClosureExpr::Kind::SingleCurryThunk);
1099
1099
cs.cacheType (autoClosure);
@@ -1126,9 +1126,8 @@ namespace {
1126
1126
1127
1127
auto resultTy = selfFnTy->getResult ();
1128
1128
auto discriminator = AutoClosureExpr::InvalidDiscriminator;
1129
- auto closure =
1130
- new (context) AutoClosureExpr (/* set body later*/ nullptr , resultTy,
1131
- discriminator, cs.DC );
1129
+ auto closure = new (context) AutoClosureExpr (/* set body later*/ nullptr ,
1130
+ resultTy, discriminator, dc);
1132
1131
closure->setParameterList (params);
1133
1132
closure->setType (selfFnTy);
1134
1133
closure->setThunkKind (AutoClosureExpr::Kind::SingleCurryThunk);
@@ -1693,8 +1692,7 @@ namespace {
1693
1692
memberLocator);
1694
1693
1695
1694
auto outerClosure =
1696
- new (context) AutoClosureExpr (closure, selfFnTy,
1697
- discriminator, cs.DC );
1695
+ new (context) AutoClosureExpr (closure, selfFnTy, discriminator, dc);
1698
1696
outerClosure->setThunkKind (AutoClosureExpr::Kind::DoubleCurryThunk);
1699
1697
1700
1698
outerClosure->setParameterList (outerParams);
@@ -6056,14 +6054,15 @@ Expr *ExprRewriter::coerceCallArguments(
6056
6054
bool isDefaultWrappedValue =
6057
6055
target->propertyWrapperHasInitialWrappedValue ();
6058
6056
auto *placeholder = injectWrappedValuePlaceholder (
6059
- cs.buildAutoClosureExpr (arg, closureType, isDefaultWrappedValue),
6057
+ cs.buildAutoClosureExpr (arg, closureType, dc,
6058
+ isDefaultWrappedValue),
6060
6059
/* isAutoClosure=*/ true );
6061
6060
arg = CallExpr::createImplicit (ctx, placeholder, {}, {});
6062
6061
arg->setType (closureType->getResult ());
6063
6062
cs.cacheType (arg);
6064
6063
}
6065
6064
6066
- convertedArg = cs.buildAutoClosureExpr (arg, closureType);
6065
+ convertedArg = cs.buildAutoClosureExpr (arg, closureType, dc );
6067
6066
} else {
6068
6067
convertedArg = coerceToType (
6069
6068
arg, paramType,
@@ -8324,7 +8323,7 @@ static Expr *wrapAsyncLetInitializer(
8324
8323
auto closureType = FunctionType::get ({ }, initializerType, extInfo);
8325
8324
ASTContext &ctx = dc->getASTContext ();
8326
8325
Expr *autoclosureExpr = cs.buildAutoClosureExpr (
8327
- initializer, closureType, /* isDefaultWrappedValue=*/ false ,
8326
+ initializer, closureType, dc, /* isDefaultWrappedValue=*/ false ,
8328
8327
/* isAsyncLetWrapper=*/ true );
8329
8328
8330
8329
// Call the autoclosure so that the AST types line up. SILGen will ignore the
@@ -8792,7 +8791,8 @@ ExprWalker::rewriteTarget(SolutionApplicationTarget target) {
8792
8791
// conversion.
8793
8792
if (FunctionType *autoclosureParamType =
8794
8793
target.getAsAutoclosureParamType ()) {
8795
- resultExpr = cs.buildAutoClosureExpr (resultExpr, autoclosureParamType);
8794
+ resultExpr = cs.buildAutoClosureExpr (resultExpr, autoclosureParamType,
8795
+ target.getDeclContext ());
8796
8796
}
8797
8797
8798
8798
solution.setExprTypes (resultExpr);
0 commit comments