Skip to content

Commit 28caecb

Browse files
committed
[Sema] Generalize PropertyWrapperInitializer to work with regular wrapped
properties.
1 parent facb99d commit 28caecb

File tree

5 files changed

+12
-9
lines changed

5 files changed

+12
-9
lines changed

include/swift/AST/Initializer.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,15 +209,16 @@ class PropertyWrapperInitializer : public Initializer {
209209
};
210210

211211
private:
212-
ParamDecl *param;
212+
VarDecl *wrappedVar;
213213
Kind kind;
214214

215215
public:
216-
explicit PropertyWrapperInitializer(DeclContext *parent, ParamDecl *param, Kind kind)
216+
explicit PropertyWrapperInitializer(DeclContext *parent, VarDecl *wrappedVar,
217+
Kind kind)
217218
: Initializer(InitializerKind::PropertyWrapper, parent),
218-
param(param), kind(kind) {}
219+
wrappedVar(wrappedVar), kind(kind) {}
219220

220-
ParamDecl *getParam() const { return param; }
221+
VarDecl *getWrappedVar() const { return wrappedVar; }
221222

222223
Kind getKind() const { return kind; }
223224

lib/AST/ASTMangler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2138,10 +2138,10 @@ void ASTMangler::appendContext(const DeclContext *ctx, StringRef useModuleName)
21382138
auto wrapperInit = cast<PropertyWrapperInitializer>(ctx);
21392139
switch (wrapperInit->getKind()) {
21402140
case PropertyWrapperInitializer::Kind::WrappedValue:
2141-
appendBackingInitializerEntity(wrapperInit->getParam());
2141+
appendBackingInitializerEntity(wrapperInit->getWrappedVar());
21422142
break;
21432143
case PropertyWrapperInitializer::Kind::ProjectedValue:
2144-
appendInitFromProjectedValueEntity(wrapperInit->getParam());
2144+
appendInitFromProjectedValueEntity(wrapperInit->getWrappedVar());
21452145
break;
21462146
}
21472147
return;

lib/AST/DeclContext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ unsigned DeclContext::printContext(raw_ostream &OS, const unsigned indent,
679679
}
680680
case InitializerKind::PropertyWrapper: {
681681
auto init = cast<PropertyWrapperInitializer>(this);
682-
OS << "PropertyWrapper 0x" << (void*)init->getParam() << ", kind=";
682+
OS << "PropertyWrapper 0x" << (void*)init->getWrappedVar() << ", kind=";
683683
switch (init->getKind()) {
684684
case PropertyWrapperInitializer::Kind::WrappedValue:
685685
OS << "wrappedValue";

lib/IDE/ExprContextAnalysis.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,8 +1296,8 @@ class ExprContextAnalyzer {
12961296
auto AFD = dyn_cast<AbstractFunctionDecl>(initDC->getParent());
12971297
if (!AFD)
12981298
return;
1299-
auto *param = initDC->getParam();
1300-
recordPossibleType(AFD->mapTypeIntoContext(param->getInterfaceType()));
1299+
auto *var = initDC->getWrappedVar();
1300+
recordPossibleType(AFD->mapTypeIntoContext(var->getInterfaceType()));
13011301
break;
13021302
}
13031303
}

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ static void forEachOuterDecl(DeclContext *DC, Fn fn) {
113113
case DeclContextKind::Initializer:
114114
if (auto *PBI = dyn_cast<PatternBindingInitializer>(DC))
115115
fn(PBI->getBinding());
116+
else if (auto *I = dyn_cast<PropertyWrapperInitializer>(DC))
117+
fn(I->getWrappedVar());
116118
break;
117119

118120
case DeclContextKind::SubscriptDecl:

0 commit comments

Comments
 (0)