Skip to content

Commit 3196b5e

Browse files
committed
AST: If lazy member loading fails in an extension, don't revert the type to eager loading
We can just load all members of the extension and proceed.
1 parent 06a2d8b commit 3196b5e

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

lib/AST/NameLookup.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,7 +1054,7 @@ static void populateLookupTableEntryFromCurrentMembers(
10541054
}
10551055
}
10561056

1057-
static bool
1057+
static void
10581058
populateLookupTableEntryFromExtensions(ASTContext &ctx,
10591059
MemberLookupTable &table,
10601060
NominalTypeDecl *nominal,
@@ -1066,14 +1066,13 @@ populateLookupTableEntryFromExtensions(ASTContext &ctx,
10661066
assert(!e->hasUnparsedMembers());
10671067
if (populateLookupTableEntryFromLazyIDCLoader(ctx, table,
10681068
name, e)) {
1069-
return true;
1069+
populateLookupTableEntryFromCurrentMembers(ctx, table, name, e);
10701070
}
10711071
} else {
10721072
populateLookupTableEntryFromCurrentMembers(ctx, table, name, e);
10731073
}
10741074
}
10751075
}
1076-
return false;
10771076
}
10781077

10791078
bool NominalTypeDecl::isLookupTablePopulated() const {
@@ -1241,10 +1240,11 @@ TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect(
12411240
// false, and we fall back to loading all members during the retry.
12421241
auto &Table = *LookupTable.getPointer();
12431242
if (populateLookupTableEntryFromLazyIDCLoader(ctx, Table,
1244-
name, this) ||
1245-
populateLookupTableEntryFromExtensions(ctx, Table, this, name,
1246-
ignoreNewExtensions)) {
1243+
name, this)) {
12471244
useNamedLazyMemberLoading = false;
1245+
} else {
1246+
populateLookupTableEntryFromExtensions(ctx, Table, this, name,
1247+
ignoreNewExtensions);
12481248
}
12491249
}
12501250

0 commit comments

Comments
 (0)