@@ -1008,9 +1008,6 @@ void ExtensionDecl::addedMember(Decl *member) {
1008
1008
// If the IDC list is later populated and/or an extension is added _after_
1009
1009
// MemberLookupTable is constructed (and possibly has entries in it),
1010
1010
// MemberLookupTable is purged and reconstructed from IDC's list.
1011
- //
1012
- // In all lookup routines, the 'ignoreNewExtensions' flag means that
1013
- // lookup should only use the set of extensions already observed.
1014
1011
1015
1012
static bool
1016
1013
populateLookupTableEntryFromLazyIDCLoader (ASTContext &ctx,
@@ -1058,19 +1055,16 @@ static void
1058
1055
populateLookupTableEntryFromExtensions (ASTContext &ctx,
1059
1056
MemberLookupTable &table,
1060
1057
NominalTypeDecl *nominal,
1061
- DeclName name,
1062
- bool ignoreNewExtensions) {
1063
- if (!ignoreNewExtensions) {
1064
- for (auto e : nominal->getExtensions ()) {
1065
- if (e->wasDeserialized () || e->hasClangNode ()) {
1066
- assert (!e->hasUnparsedMembers ());
1067
- if (populateLookupTableEntryFromLazyIDCLoader (ctx, table,
1068
- name, e)) {
1069
- populateLookupTableEntryFromCurrentMembers (ctx, table, name, e);
1070
- }
1071
- } else {
1058
+ DeclName name) {
1059
+ for (auto e : nominal->getExtensions ()) {
1060
+ if (e->wasDeserialized () || e->hasClangNode ()) {
1061
+ assert (!e->hasUnparsedMembers ());
1062
+ if (populateLookupTableEntryFromLazyIDCLoader (ctx, table,
1063
+ name, e)) {
1072
1064
populateLookupTableEntryFromCurrentMembers (ctx, table, name, e);
1073
1065
}
1066
+ } else {
1067
+ populateLookupTableEntryFromCurrentMembers (ctx, table, name, e);
1074
1068
}
1075
1069
}
1076
1070
}
@@ -1083,7 +1077,7 @@ void NominalTypeDecl::setLookupTablePopulated(bool value) {
1083
1077
LookupTable.setInt (value);
1084
1078
}
1085
1079
1086
- void NominalTypeDecl::prepareLookupTable (bool ignoreNewExtensions ) {
1080
+ void NominalTypeDecl::prepareLookupTable () {
1087
1081
// If we haven't allocated the lookup table yet, do so now.
1088
1082
if (!LookupTable.getPointer ()) {
1089
1083
auto &ctx = getASTContext ();
@@ -1109,8 +1103,7 @@ void NominalTypeDecl::prepareLookupTable(bool ignoreNewExtensions) {
1109
1103
for (auto baseName : baseNamesPresent) {
1110
1104
populateLookupTableEntryFromExtensions (getASTContext (),
1111
1105
*LookupTable.getPointer (),
1112
- this , baseName,
1113
- ignoreNewExtensions);
1106
+ this , baseName);
1114
1107
}
1115
1108
}
1116
1109
@@ -1121,9 +1114,7 @@ void NominalTypeDecl::prepareLookupTable(bool ignoreNewExtensions) {
1121
1114
setLookupTablePopulated (true );
1122
1115
LookupTable.getPointer ()->addMembers (getMembers ());
1123
1116
}
1124
- if (!ignoreNewExtensions) {
1125
- LookupTable.getPointer ()->updateLookupTable (this );
1126
- }
1117
+ LookupTable.getPointer ()->updateLookupTable (this );
1127
1118
}
1128
1119
}
1129
1120
@@ -1161,9 +1152,6 @@ TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect(
1161
1152
bool useNamedLazyMemberLoading = (ctx.LangOpts .NamedLazyMemberLoading &&
1162
1153
hasLazyMembers ());
1163
1154
1164
- bool ignoreNewExtensions =
1165
- flags.contains (LookupDirectFlags::IgnoreNewExtensions);
1166
-
1167
1155
bool includeAttrImplements =
1168
1156
flags.contains (LookupDirectFlags::IncludeAttrImplements);
1169
1157
@@ -1175,7 +1163,7 @@ TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect(
1175
1163
useNamedLazyMemberLoading = false ;
1176
1164
1177
1165
LLVM_DEBUG (llvm::dbgs () << getNameStr () << " .lookupDirect("
1178
- << name << " , " << ignoreNewExtensions << " )"
1166
+ << name << " )"
1179
1167
<< " , isLookupTablePopulated()=" << isLookupTablePopulated ()
1180
1168
<< " , hasLazyMembers()=" << hasLazyMembers ()
1181
1169
<< " , useNamedLazyMemberLoading=" << useNamedLazyMemberLoading
@@ -1211,15 +1199,13 @@ TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect(
1211
1199
1212
1200
// Make sure we have the complete list of members (in this nominal and in
1213
1201
// all extensions).
1214
- if (!ignoreNewExtensions) {
1215
- for (auto E : getExtensions ())
1216
- (void )E->getMembers ();
1217
- }
1202
+ for (auto E : getExtensions ())
1203
+ (void )E->getMembers ();
1218
1204
}
1219
1205
1220
1206
// Next, in all cases, prepare the lookup table for use, possibly
1221
1207
// repopulating it from the IDC if the IDC member list has just grown.
1222
- prepareLookupTable (ignoreNewExtensions );
1208
+ prepareLookupTable ();
1223
1209
1224
1210
// Look for a declaration with this name.
1225
1211
auto known = LookupTable.getPointer ()->find (name);
@@ -1243,8 +1229,7 @@ TinyPtrVector<ValueDecl *> NominalTypeDecl::lookupDirect(
1243
1229
name, this )) {
1244
1230
useNamedLazyMemberLoading = false ;
1245
1231
} else {
1246
- populateLookupTableEntryFromExtensions (ctx, Table, this , name,
1247
- ignoreNewExtensions);
1232
+ populateLookupTableEntryFromExtensions (ctx, Table, this , name);
1248
1233
}
1249
1234
}
1250
1235
0 commit comments