Skip to content

Commit 487754f

Browse files
committed
TBD: Stored property initializers can be public
1 parent e85b20f commit 487754f

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

lib/TBDGen/TBDGen.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,21 @@ static bool isGlobalOrStaticVar(VarDecl *VD) {
4040
return VD->isStatic() || VD->getDeclContext()->isModuleScopeContext();
4141
}
4242

43+
void TBDGenVisitor::visitPatternBindingDecl(PatternBindingDecl *PBD) {
44+
for (auto &entry : PBD->getPatternList()) {
45+
auto *var = entry.getAnchoringVarDecl();
46+
47+
// Non-global variables might have an explicit initializer symbol.
48+
if (entry.getInit() && !isGlobalOrStaticVar(var)) {
49+
auto declRef =
50+
SILDeclRef(var, SILDeclRef::Kind::StoredPropertyInitializer);
51+
// Stored property initializers for public properties are currently
52+
// public.
53+
addSymbol(declRef);
54+
}
55+
}
56+
}
57+
4358
void TBDGenVisitor::addSymbol(SILDeclRef declRef) {
4459
auto linkage = effectiveLinkageForClassMember(
4560
declRef.getLinkage(ForDefinition),

lib/TBDGen/TBDGenVisitor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ class TBDGenVisitor : public ASTVisitor<TBDGenVisitor> {
8484
addSymbol("main");
8585
}
8686

87+
void visitPatternBindingDecl(PatternBindingDecl *PBD);
88+
8789
void visitAbstractFunctionDecl(AbstractFunctionDecl *AFD);
8890

8991
void visitNominalTypeDecl(NominalTypeDecl *NTD);

0 commit comments

Comments
 (0)