File tree Expand file tree Collapse file tree 1 file changed +23
-4
lines changed Expand file tree Collapse file tree 1 file changed +23
-4
lines changed Original file line number Diff line number Diff line change @@ -1310,6 +1310,20 @@ populateLookupTableEntryFromLazyIDCLoader(ASTContext &ctx,
1310
1310
}
1311
1311
}
1312
1312
1313
+ static void
1314
+ populateLookupTableEntryFromMembers (ASTContext &ctx,
1315
+ MemberLookupTable &LookupTable,
1316
+ DeclName name,
1317
+ IterableDeclContext *IDC) {
1318
+ for (auto m : IDC->getMembers ()) {
1319
+ if (auto v = dyn_cast<ValueDecl>(m)) {
1320
+ if (v->getFullName ().matchesRef (name)) {
1321
+ LookupTable.addMember (m);
1322
+ }
1323
+ }
1324
+ }
1325
+ }
1326
+
1313
1327
TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect (
1314
1328
DeclName name,
1315
1329
bool ignoreNewExtensions) {
@@ -1385,10 +1399,15 @@ TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect(
1385
1399
} else {
1386
1400
if (!ignoreNewExtensions) {
1387
1401
for (auto E : getExtensions ()) {
1388
- if (populateLookupTableEntryFromLazyIDCLoader (ctx, Table,
1389
- name, E)) {
1390
- useNamedLazyMemberLoading = false ;
1391
- break ;
1402
+ if (E->wasDeserialized ()) {
1403
+ if (populateLookupTableEntryFromLazyIDCLoader (ctx, Table,
1404
+ name, E)) {
1405
+ useNamedLazyMemberLoading = false ;
1406
+ break ;
1407
+ }
1408
+ } else {
1409
+ populateLookupTableEntryFromMembers (ctx, Table,
1410
+ name, E);
1392
1411
}
1393
1412
}
1394
1413
}
You can’t perform that action at this time.
0 commit comments