@@ -2690,7 +2690,7 @@ static VarDecl *synthesizePropertyWrapperProjectionVar(
2690
2690
2691
2691
static void typeCheckSynthesizedWrapperInitializer (VarDecl *wrappedVar,
2692
2692
Expr *&initializer,
2693
- bool contextualize = false ) {
2693
+ bool contextualize) {
2694
2694
auto *dc = wrappedVar->getInnermostDeclContext ();
2695
2695
auto &ctx = wrappedVar->getASTContext ();
2696
2696
auto *initContext = new (ctx) PropertyWrapperInitializer (
@@ -2985,7 +2985,8 @@ PropertyWrapperInitializerInfoRequest::evaluate(Evaluator &evaluator,
2985
2985
&& !wrapperInfo.defaultInit ) {
2986
2986
auto ty = parentPBD->getPattern (patternNumber)->getType ();
2987
2987
if (auto defaultInit = TypeChecker::buildDefaultInitializer (ty)) {
2988
- typeCheckSynthesizedWrapperInitializer (var, defaultInit);
2988
+ typeCheckSynthesizedWrapperInitializer (var, defaultInit,
2989
+ /* contextualize=*/ false );
2989
2990
parentPBD->setInit (0 , defaultInit);
2990
2991
parentPBD->setInitializerChecked (0 );
2991
2992
}
@@ -3003,6 +3004,8 @@ PropertyWrapperInitializerInfoRequest::evaluate(Evaluator &evaluator,
3003
3004
// FIXME: Record this expression somewhere so that DI can perform the
3004
3005
// initialization itself.
3005
3006
Expr *defaultInit = nullptr ;
3007
+ // Only contextualize local wrapped property, the rest of wrapped
3008
+ // property will be contextualized in visitPatternBindingDecl.
3006
3009
typeCheckSynthesizedWrapperInitializer (var, defaultInit, dc->isLocalContext ());
3007
3010
pbd->setInit (0 , defaultInit);
3008
3011
pbd->setInitializerChecked (0 );
@@ -3073,7 +3076,8 @@ PropertyWrapperInitializerInfoRequest::evaluate(Evaluator &evaluator,
3073
3076
!var->getName ().hasDollarPrefix ()) {
3074
3077
wrappedValueInit = PropertyWrapperValuePlaceholderExpr::create (
3075
3078
ctx, var->getSourceRange (), var->getType (), /* wrappedValue=*/ nullptr );
3076
- typeCheckSynthesizedWrapperInitializer (var, wrappedValueInit, true );
3079
+ typeCheckSynthesizedWrapperInitializer (var, wrappedValueInit,
3080
+ /* contextualize=*/ true );
3077
3081
}
3078
3082
3079
3083
return PropertyWrapperInitializerInfo (wrappedValueInit, projectedValueInit);
0 commit comments