@@ -393,15 +393,20 @@ void UnqualifiedLookupFactory::fillInLookup() {
393
393
const Optional<bool > isCascadingUseInitial =
394
394
options.contains (Flags::KnownPrivate) ? Optional<bool >(false ) : None;
395
395
// Never perform local lookup for operators.
396
- auto dcAndIsCascadingUse =
397
- shouldUseASTScopeLookup ()
398
- ? astScopeBasedLookup (DC, isCascadingUseInitial)
399
- : Name.isOperator ()
400
- ? operatorLookup (DC, isCascadingUseInitial)
401
- : nonASTScopeBasedLookup (DC, isCascadingUseInitial);
402
-
403
- if (!dcAndIsCascadingUse.hasValue ())
404
- return ;
396
+ Optional<DCAndResolvedIsCascadingUse> dcAndIsCascadingUse;
397
+ if (shouldUseASTScopeLookup ()) {
398
+ dcAndIsCascadingUse = astScopeBasedLookup (DC, isCascadingUseInitial);
399
+ if (!dcAndIsCascadingUse.hasValue ())
400
+ return ;
401
+ } else {
402
+ dcAndIsCascadingUse =
403
+ Name.isOperator () ? operatorLookup (DC, isCascadingUseInitial)
404
+ : nonASTScopeBasedLookup (DC, isCascadingUseInitial);
405
+ if (!dcAndIsCascadingUse.hasValue ())
406
+ return ;
407
+ if (addLocalVariableResults (dcAndIsCascadingUse.getValue ().DC ))
408
+ return ;
409
+ }
405
410
406
411
DeclContext *const DC = dcAndIsCascadingUse.getValue ().DC ;
407
412
const bool isCascadingUse = dcAndIsCascadingUse.getValue ().isCascadingUse ;
@@ -424,7 +429,7 @@ void UnqualifiedLookupFactory::fillInLookup() {
424
429
if (lookForAModuleWithTheGivenName (DC))
425
430
return ;
426
431
// Make sure we've recorded the inner-result-boundary.
427
- setIndexOfFirstOuterResultIfNotSetAlready ();
432
+ setIndexOfFirstOuterResultIfNotSetAlready (); // DMU elim?
428
433
}
429
434
430
435
bool UnqualifiedLookupFactory::shouldUseASTScopeLookup () const {
@@ -634,8 +639,7 @@ UnqualifiedLookupFactory::lookIntoDeclarationContextForASTScopeLookup(
634
639
UnavailableInnerResults.append (begin, Results.end ());
635
640
Results.erase (begin, Results.end ());
636
641
} else {
637
- if (DebugClient)
638
- filterForDiscriminator (Results, DebugClient);
642
+ filterForDiscriminator (Results, DebugClient);
639
643
640
644
setIndexOfFirstOuterResultIfNotSetAlready ();
641
645
if (isLookupDoneWithoutIncludingOuterResults ())
@@ -657,9 +661,8 @@ UnqualifiedLookupFactory::operatorLookup(DeclContext *dc,
657
661
Optional<bool > isCascadingUse) {
658
662
auto *msc = dc->getModuleScopeContext ();
659
663
return DCAndResolvedIsCascadingUse{
660
- addLocalVariableResults (msc) ? nullptr : msc,
661
- resolveIsCascadingUse (dc, isCascadingUse,
662
- /* onlyCareAboutFunctionBody*/ true )};
664
+ msc, resolveIsCascadingUse (dc, isCascadingUse,
665
+ /* onlyCareAboutFunctionBody*/ true )};
663
666
}
664
667
665
668
// TODO: Unify with LookupVisibleDecls.cpp::lookupVisibleDeclsImpl
@@ -673,7 +676,7 @@ UnqualifiedLookupFactory::nonASTScopeBasedLookup(
673
676
DCAndUnresolvedIsCascadingUse{dcArg, isCascadingUseArg});
674
677
while (r.hasValue () && !r.getValue ().whereToLook ->isModuleScopeContext ())
675
678
r = lookupInOneDeclContext (r.getValue ());
676
- if (!r.hasValue () || addLocalVariableResults (r. getValue (). whereToLook ) )
679
+ if (!r.hasValue ())
677
680
return None;
678
681
return r.getValue ().resolve (true );
679
682
}
@@ -955,7 +958,7 @@ void UnqualifiedLookupFactory::addGenericParametersForFunction(
955
958
}
956
959
}
957
960
958
- // TODO enum instead of bool?
961
+ // TODO enum instead of bool for return type ?
959
962
bool UnqualifiedLookupFactory::addLocalVariableResults (DeclContext *dc) {
960
963
if (auto SF = dyn_cast<SourceFile>(dc)) {
961
964
if (Loc.isValid ()) {
@@ -1007,8 +1010,7 @@ bool UnqualifiedLookupFactory::handleUnavailableInnerResults(
1007
1010
Results.erase (begin, Results.end ());
1008
1011
return false ;
1009
1012
}
1010
- if (DebugClient)
1011
- filterForDiscriminator (Results, DebugClient);
1013
+ filterForDiscriminator (Results, DebugClient);
1012
1014
1013
1015
setIndexOfFirstOuterResultIfNotSetAlready ();
1014
1016
return isLookupDoneWithoutIncludingOuterResults ();
@@ -1043,8 +1045,7 @@ void UnqualifiedLookupFactory::addPrivateImports(DeclContext *const dc) {
1043
1045
for (auto VD : CurModuleResults)
1044
1046
Results.push_back (LookupResultEntry (VD));
1045
1047
1046
- if (DebugClient)
1047
- filterForDiscriminator (Results, DebugClient);
1048
+ filterForDiscriminator (Results, DebugClient);
1048
1049
}
1049
1050
1050
1051
bool UnqualifiedLookupFactory::addNamesKnownToDebugClient (DeclContext *dc) {
@@ -1345,8 +1346,7 @@ LegacyUnqualifiedLookup::LegacyUnqualifiedLookup(DeclName Name, DeclContext *DC,
1345
1346
UnavailableInnerResults.append (begin, Results.end ());
1346
1347
Results.erase (begin, Results.end ());
1347
1348
} else {
1348
- if (DebugClient)
1349
- filterForDiscriminator (Results, DebugClient);
1349
+ filterForDiscriminator (Results, DebugClient);
1350
1350
1351
1351
if (shouldReturnBasedOnResults ())
1352
1352
return ;
@@ -1575,8 +1575,7 @@ LegacyUnqualifiedLookup::LegacyUnqualifiedLookup(DeclName Name, DeclContext *DC,
1575
1575
UnavailableInnerResults.append (begin, Results.end ());
1576
1576
Results.erase (begin, Results.end ());
1577
1577
} else {
1578
- if (DebugClient)
1579
- filterForDiscriminator (Results, DebugClient);
1578
+ filterForDiscriminator (Results, DebugClient);
1580
1579
1581
1580
if (shouldReturnBasedOnResults ())
1582
1581
return ;
@@ -1634,7 +1633,6 @@ LegacyUnqualifiedLookup::LegacyUnqualifiedLookup(DeclName Name, DeclContext *DC,
1634
1633
for (auto VD : CurModuleResults)
1635
1634
Results.push_back (LookupResultEntry (VD));
1636
1635
1637
- if (DebugClient)
1638
1636
filterForDiscriminator (Results, DebugClient);
1639
1637
1640
1638
// Now add any names the DebugClient knows about to the lookup.
0 commit comments