@@ -2689,7 +2689,8 @@ static VarDecl *synthesizePropertyWrapperProjectionVar(
26892689}
26902690
26912691static void typeCheckSynthesizedWrapperInitializer (VarDecl *wrappedVar,
2692- Expr *&initializer) {
2692+ Expr *&initializer,
2693+ bool contextualize = false ) {
26932694 auto *dc = wrappedVar->getInnermostDeclContext ();
26942695 auto &ctx = wrappedVar->getASTContext ();
26952696 auto *initContext = new (ctx) PropertyWrapperInitializer (
@@ -2705,6 +2706,11 @@ static void typeCheckSynthesizedWrapperInitializer(VarDecl *wrappedVar,
27052706
27062707 initializer = result->getAsExpr ();
27072708
2709+ // Contextualize the initializer which is a local variable with defaultInit or
2710+ // gets an independent initializer. The rest of initializer contextualizing
2711+ // will be done in visitPatternBindingDecl.
2712+ if (!contextualize)
2713+ return ;
27082714 TypeChecker::contextualizeInitializer (initContext, initializer);
27092715 checkPropertyWrapperActorIsolation (wrappedVar, initializer);
27102716 TypeChecker::checkInitializerEffects (initContext, initializer);
@@ -2997,7 +3003,7 @@ PropertyWrapperInitializerInfoRequest::evaluate(Evaluator &evaluator,
29973003 // FIXME: Record this expression somewhere so that DI can perform the
29983004 // initialization itself.
29993005 Expr *defaultInit = nullptr ;
3000- typeCheckSynthesizedWrapperInitializer (var, defaultInit);
3006+ typeCheckSynthesizedWrapperInitializer (var, defaultInit, dc-> isLocalContext () );
30013007 pbd->setInit (0 , defaultInit);
30023008 pbd->setInitializerChecked (0 );
30033009
@@ -3067,7 +3073,7 @@ PropertyWrapperInitializerInfoRequest::evaluate(Evaluator &evaluator,
30673073 !var->getName ().hasDollarPrefix ()) {
30683074 wrappedValueInit = PropertyWrapperValuePlaceholderExpr::create (
30693075 ctx, var->getSourceRange (), var->getType (), /* wrappedValue=*/ nullptr );
3070- typeCheckSynthesizedWrapperInitializer (var, wrappedValueInit);
3076+ typeCheckSynthesizedWrapperInitializer (var, wrappedValueInit, true );
30713077 }
30723078
30733079 return PropertyWrapperInitializerInfo (wrappedValueInit, projectedValueInit);
0 commit comments