Skip to content

Commit 2875cac

Browse files
committed
AST: Clean up prepareLookupTable() a bit more
1 parent cc3a530 commit 2875cac

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

lib/AST/NameLookup.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,9 +1345,11 @@ void MemberLookupTable::addMembers(DeclRange members) {
13451345
}
13461346

13471347
void NominalTypeDecl::addedExtension(ExtensionDecl *ext) {
1348-
auto *table = LookupTable.getPointer();
1348+
if (!LookupTable.getInt())
1349+
return;
13491350

1350-
if (!table) return;
1351+
auto *table = LookupTable.getPointer();
1352+
assert(table);
13511353

13521354
if (ext->hasLazyMembers()) {
13531355
table->addMembers(ext->getCurrentMembersWithoutLoading());
@@ -1361,10 +1363,12 @@ void NominalTypeDecl::addedMember(Decl *member) {
13611363
// If we have a lookup table, add the new member to it. If not, we'll pick up
13621364
// this member when we first create the table.
13631365
auto *vd = dyn_cast<ValueDecl>(member);
1364-
auto *table = LookupTable.getPointer();
1365-
if (!vd || !table)
1366+
if (!vd || !LookupTable.getInt())
13661367
return;
13671368

1369+
auto *table = LookupTable.getPointer();
1370+
assert(table);
1371+
13681372
table->addMember(vd);
13691373
}
13701374

@@ -1492,8 +1496,6 @@ void NominalTypeDecl::prepareLookupTable() {
14921496
if (LookupTable.getInt())
14931497
return;
14941498

1495-
LookupTable.setInt(true);
1496-
14971499
auto *table = getLookupTable();
14981500

14991501
// Otherwise start the first fill.
@@ -1521,6 +1523,10 @@ void NominalTypeDecl::prepareLookupTable() {
15211523
// Else, load all the members into the table.
15221524
table->addMembers(e->getMembers());
15231525
}
1526+
1527+
// Any extensions added after this point will add their members to the
1528+
// lookup table.
1529+
LookupTable.setInt(true);
15241530
}
15251531

15261532
static TinyPtrVector<ValueDecl *>

0 commit comments

Comments
 (0)