Skip to content

Commit acb37b2

Browse files
committed
AST: Set ClassDecl's HasDestructor bit in one place
1 parent 532c006 commit acb37b2

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

lib/AST/Decl.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3547,7 +3547,6 @@ void ClassDecl::addImplicitDestructor() {
35473547
// Create an empty body for the destructor.
35483548
DD->setBody(BraceStmt::create(ctx, getLoc(), { }, getLoc(), true));
35493549
addMember(DD);
3550-
setHasDestructor();
35513550

35523551
// Propagate access control and versioned-ness.
35533552
DD->copyFormalAccessFrom(this, /*sourceIsParentContext*/true);

lib/AST/NameLookup.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1437,6 +1437,11 @@ void MemberLookupTable::updateLookupTable(NominalTypeDecl *nominal) {
14371437
}
14381438

14391439
void NominalTypeDecl::addedMember(Decl *member) {
1440+
// Remember if we added a destructor.
1441+
if (auto *CD = dyn_cast<ClassDecl>(this))
1442+
if (isa<DestructorDecl>(member))
1443+
CD->setHasDestructor();
1444+
14401445
// If we have a lookup table, add the new member to it.
14411446
if (LookupTable.getPointer()) {
14421447
LookupTable.getPointer()->addMember(member);

lib/Parse/ParseDecl.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3050,8 +3050,6 @@ void Parser::parseDeclListDelayed(IterableDeclContext *IDC) {
30503050
} else if (auto *cd = dyn_cast<ClassDecl>(D)) {
30513051
auto handler = [&] (Decl *D) {
30523052
cd->addMember(D);
3053-
if (isa<DestructorDecl>(D))
3054-
cd->setHasDestructor();
30553053
};
30563054
parseDeclList(cd->getBraces().Start, RBLoc, Id,
30573055
ParseDeclOptions(DelayedState->Flags), handler);
@@ -6160,8 +6158,6 @@ ParserResult<ClassDecl> Parser::parseDeclClass(ParseDeclOptions Flags,
61606158
} else {
61616159
auto Handler = [&] (Decl *D) {
61626160
CD->addMember(D);
6163-
if (isa<DestructorDecl>(D))
6164-
CD->setHasDestructor();
61656161
};
61666162
if (parseDeclList(LBLoc, RBLoc, diag::expected_rbrace_class,
61676163
Options, Handler))

0 commit comments

Comments
 (0)