@@ -113,8 +113,7 @@ namespace {
113
113
114
114
// If this isn't a protocol member to be given special
115
115
// treatment, just add the result.
116
- if (!Options.contains (NameLookupFlags::ProtocolMembers) ||
117
- !isa<ProtocolDecl>(foundDC) ||
116
+ if (!isa<ProtocolDecl>(foundDC) ||
118
117
isa<GenericTypeParamDecl>(found) ||
119
118
isa<TypeAliasDecl>(found) ||
120
119
(isa<FuncDecl>(found) && cast<FuncDecl>(found)->isOperator ())) {
@@ -124,9 +123,6 @@ namespace {
124
123
125
124
assert (isa<ProtocolDecl>(foundDC));
126
125
127
- if (!Options.contains (NameLookupFlags::PerformConformanceCheck))
128
- return ;
129
-
130
126
// If we found something within the protocol itself, and our
131
127
// search began somewhere that is not in a protocol or extension
132
128
// thereof, remap this declaration to the witness.
@@ -210,11 +206,9 @@ namespace {
210
206
211
207
static UnqualifiedLookupOptions
212
208
convertToUnqualifiedLookupOptions (NameLookupOptions options) {
213
- UnqualifiedLookupOptions newOptions;
209
+ UnqualifiedLookupOptions newOptions = UnqualifiedLookupFlags::AllowProtocolMembers ;
214
210
if (options.contains (NameLookupFlags::KnownPrivate))
215
211
newOptions |= UnqualifiedLookupFlags::KnownPrivate;
216
- if (options.contains (NameLookupFlags::ProtocolMembers))
217
- newOptions |= UnqualifiedLookupFlags::AllowProtocolMembers;
218
212
if (options.contains (NameLookupFlags::IgnoreAccessControl))
219
213
newOptions |= UnqualifiedLookupFlags::IgnoreAccessControl;
220
214
if (options.contains (NameLookupFlags::IncludeOuterResults))
@@ -278,8 +272,7 @@ TypeChecker::lookupUnqualifiedType(DeclContext *dc, DeclNameRef name,
278
272
279
273
auto lookup =
280
274
evaluateOrDefault (ctx.evaluator , UnqualifiedLookupRequest{desc}, {});
281
- if (!lookup.allResults ().empty () ||
282
- !options.contains (NameLookupFlags::ProtocolMembers))
275
+ if (!lookup.allResults ().empty ())
283
276
return lookup;
284
277
}
285
278
@@ -302,18 +295,12 @@ LookupResult TypeChecker::lookupMember(DeclContext *dc,
302
295
assert (type->mayHaveMembers ());
303
296
304
297
LookupResult result;
305
- NLOptions subOptions = NL_QualifiedDefault;
298
+ NLOptions subOptions = ( NL_QualifiedDefault | NL_ProtocolMembers) ;
306
299
if (options.contains (NameLookupFlags::KnownPrivate))
307
300
subOptions |= NL_KnownNonCascadingDependency;
308
301
if (options.contains (NameLookupFlags::IgnoreAccessControl))
309
302
subOptions |= NL_IgnoreAccessControl;
310
303
311
- if (options.contains (NameLookupFlags::ProtocolMembers))
312
- subOptions |= NL_ProtocolMembers;
313
-
314
- if (options.contains (NameLookupFlags::IncludeAttributeImplements))
315
- subOptions |= NL_IncludeAttributeImplements;
316
-
317
304
// We handle our own overriding/shadowing filtering.
318
305
subOptions &= ~NL_RemoveOverridden;
319
306
subOptions &= ~NL_RemoveNonVisible;
@@ -387,12 +374,10 @@ LookupTypeResult TypeChecker::lookupMemberType(DeclContext *dc,
387
374
388
375
// Look for members with the given name.
389
376
SmallVector<ValueDecl *, 4 > decls;
390
- NLOptions subOptions = NL_QualifiedDefault | NL_OnlyTypes;
377
+ NLOptions subOptions = ( NL_QualifiedDefault | NL_OnlyTypes | NL_ProtocolMembers) ;
391
378
392
379
if (options.contains (NameLookupFlags::KnownPrivate))
393
380
subOptions |= NL_KnownNonCascadingDependency;
394
- if (options.contains (NameLookupFlags::ProtocolMembers))
395
- subOptions |= NL_ProtocolMembers;
396
381
if (options.contains (NameLookupFlags::IgnoreAccessControl))
397
382
subOptions |= NL_IgnoreAccessControl;
398
383
@@ -434,21 +419,7 @@ LookupTypeResult TypeChecker::lookupMemberType(DeclContext *dc,
434
419
if (auto assocType = dyn_cast<AssociatedTypeDecl>(typeDecl)) {
435
420
if (!type->is <ArchetypeType>() &&
436
421
!type->isTypeParameter ()) {
437
- if (options.contains (NameLookupFlags::PerformConformanceCheck))
438
- inferredAssociatedTypes.push_back (assocType);
439
- continue ;
440
- }
441
- }
442
-
443
- // FIXME: This is a hack, we should be able to remove this entire 'if'
444
- // statement once we learn how to deal with the circularity here.
445
- if (auto *aliasDecl = dyn_cast<TypeAliasDecl>(typeDecl)) {
446
- if (isa<ProtocolDecl>(aliasDecl->getDeclContext ()) &&
447
- !type->is <ArchetypeType>() &&
448
- !type->isTypeParameter () &&
449
- aliasDecl->getUnderlyingType ()->getCanonicalType ()
450
- ->hasTypeParameter () &&
451
- !options.contains (NameLookupFlags::PerformConformanceCheck)) {
422
+ inferredAssociatedTypes.push_back (assocType);
452
423
continue ;
453
424
}
454
425
}
@@ -511,11 +482,6 @@ LookupTypeResult TypeChecker::lookupMemberType(DeclContext *dc,
511
482
return result;
512
483
}
513
484
514
- LookupResult TypeChecker::lookupConstructors (DeclContext *dc, Type type,
515
- NameLookupOptions options) {
516
- return lookupMember (dc, type, DeclNameRef::createConstructor (), options);
517
- }
518
-
519
485
unsigned TypeChecker::getCallEditDistance (DeclNameRef writtenName,
520
486
DeclName correctedName,
521
487
unsigned maxEditDistance) {
0 commit comments