Skip to content

Commit 1e1c202

Browse files
authored
Merge pull request #18087 from DougGregor/request-member-layout-of-class-members
[Type checker] Make sure that validating a class requests member layout.
2 parents d61b923 + 91c1b55 commit 1e1c202

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

lib/Sema/TypeCheckDecl.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2871,8 +2871,9 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
28712871
DescriptiveDeclKind::Class, path);
28722872
}
28732873

2874-
for (Decl *Member : CD->getMembers())
2874+
for (Decl *Member : CD->getMembers()) {
28752875
visit(Member);
2876+
}
28762877

28772878
// If this class requires all of its stored properties to have
28782879
// in-class initializers, diagnose this now.
@@ -2981,6 +2982,11 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
29812982

29822983
TC.checkDeclCircularity(CD);
29832984
TC.ConformanceContexts.push_back(CD);
2985+
2986+
for (auto Member : CD->getMembers()) {
2987+
if (auto VD = dyn_cast<ValueDecl>(Member))
2988+
TC.requestMemberLayout(VD);
2989+
}
29842990
}
29852991

29862992
void visitProtocolDecl(ProtocolDecl *PD) {
@@ -5529,6 +5535,9 @@ void TypeChecker::addImplicitConstructors(NominalTypeDecl *decl) {
55295535
*this, classDecl, superclassCtor, kind)) {
55305536
Context.addSynthesizedDecl(ctor);
55315537
classDecl->addMember(ctor);
5538+
5539+
if (classDecl->hasValidatedLayout())
5540+
requestMemberLayout(ctor);
55325541
}
55335542
}
55345543

0 commit comments

Comments
 (0)