Skip to content

Commit 0a817a9

Browse files
committed
Pass flag for addGenericParameters
1 parent bd5bff6 commit 0a817a9

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

lib/AST/UnqualifiedLookup.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,9 @@ class UnqualifiedLookupFactory {
178178
void dump() const;
179179
};
180180

181+
enum class AddGenericParameters { Yes, No };
181182
struct PerContextInfo {
182-
DeclContext *thisContext; // TODO: Eliminate ME
183+
AddGenericParameters addGenericParameters;
183184
DeclContext *lookupContextForThisContext;
184185
Optional<PlacesToSearch> placesToSearch;
185186
Optional<bool> isCascadingUse;
@@ -676,7 +677,7 @@ void UnqualifiedLookupFactory::finishLookingInContext(
676677
auto placesToSearch = std::move(info.placesToSearch);
677678
auto isCascadingUse = info.isCascadingUse;
678679

679-
if (!isa<DefaultArgumentInitializer>(info.thisContext) &&
680+
if (info.addGenericParameters == AddGenericParameters::Yes &&
680681
addGenericParametersHereAndInEnclosingScopes(lookupContextForThisContext))
681682
return;
682683
if (placesToSearch.hasValue() && !placesToSearch.getValue().empty()) {
@@ -689,12 +690,10 @@ void UnqualifiedLookupFactory::finishLookingInContext(
689690
}
690691
auto *const whereToLookNext =
691692
lookupContextForThisContext->getParentForLookup();
692-
assert(whereToLookNext != info.thisContext && "non-termination");
693693

694694
lookupNameInDeclContexts(
695695
DCAndUnresolvedIsCascadingUse{whereToLookNext, isCascadingUse});
696696
}
697-
// clang-format on
698697

699698
void UnqualifiedLookupFactory::lookupLocalsInAppropriateContext(
700699
const DCAndUnresolvedIsCascadingUse dcAndIsCasc) {
@@ -730,7 +729,7 @@ void UnqualifiedLookupFactory::lookupLocalsInPatternBindingInitializer(
730729
DeclContext *const parent = PBI->getParent();
731730
// clang-format off
732731
finishLookingInContext( PerContextInfo{
733-
PBI,
732+
AddGenericParameters::Yes,
734733
parent,
735734
PlacesToSearch(PBI, parent, parent),
736735
resolveIsCascadingUse(PBI, isCascadingUse,
@@ -744,7 +743,7 @@ void UnqualifiedLookupFactory::lookupLocalsInPatternBindingInitializer(
744743
DeclContext *const surroundingContext = PBI->getParent();
745744
// clang-format off
746745
finishLookingInContext( PerContextInfo{
747-
PBI,
746+
AddGenericParameters::Yes,
748747
surroundingContext,
749748
PlacesToSearch(surroundingContext,
750749
surroundingContext, surroundingContext),
@@ -759,7 +758,7 @@ void UnqualifiedLookupFactory::lookupLocalsInPatternBindingInitializer(
759758
// context.
760759
// clang-format off
761760
finishLookingInContext( PerContextInfo{
762-
PBI,
761+
AddGenericParameters::Yes,
763762
PBI,
764763
None,
765764
resolveIsCascadingUse(PBI, isCascadingUse,
@@ -806,7 +805,7 @@ void UnqualifiedLookupFactory::lookupLocalsInFunctionDecl(
806805
if (!AFD->getDeclContext()->isTypeContext()) {
807806
// clang-format off
808807
finishLookingInContext( PerContextInfo{
809-
AFD,
808+
AddGenericParameters::Yes,
810809
AFD,
811810
None,
812811
returnValueForIsCascadingUse});
@@ -822,7 +821,7 @@ void UnqualifiedLookupFactory::lookupLocalsInFunctionDecl(
822821
DeclContext *const BaseDC = isOutsideBodyOfFunction(AFD) ? fnDeclContext : AFD;
823822
// clang-format off
824823
finishLookingInContext( PerContextInfo{
825-
AFD,
824+
AddGenericParameters::Yes,
826825
AFD->getParent(),
827826
PlacesToSearch(BaseDC,
828827
fnDeclContext,
@@ -852,7 +851,7 @@ void UnqualifiedLookupFactory::lookupLocalsInClosure(
852851
}
853852
// clang-format off
854853
finishLookingInContext( PerContextInfo{
855-
ACE,
854+
AddGenericParameters::Yes,
856855
ACE,
857856
None,
858857
resolveIsCascadingUse(ACE, isCascadingUse,
@@ -865,7 +864,7 @@ void UnqualifiedLookupFactory::lookupLocalsInNominalTypeOrExtension(
865864
NominalTypeDeclOrExtensionDecl *D, Optional<bool> isCascadingUse) {
866865
// clang-format off
867866
finishLookingInContext( PerContextInfo{
868-
D,
867+
AddGenericParameters::Yes,
869868
D,
870869
shouldLookupMembers(D, Loc)
871870
? Optional<PlacesToSearch>(PlacesToSearch(D, D, D))
@@ -880,7 +879,8 @@ void UnqualifiedLookupFactory::lookupLocalsInDefaultArgumentInitializer(
880879
DefaultArgumentInitializer *I, Optional<bool> isCascadingUse) {
881880
// In a default argument, skip immediately out of both the
882881
// initializer and the function.
883-
finishLookingInContext(PerContextInfo{I, I->getParent(), None, false});
882+
finishLookingInContext(
883+
PerContextInfo{AddGenericParameters::No, I->getParent(), None, false});
884884
}
885885

886886
void UnqualifiedLookupFactory::lookupLocalsInMiscContext(
@@ -891,7 +891,7 @@ void UnqualifiedLookupFactory::lookupLocalsInMiscContext(
891891
isa<TypeAliasDecl>(dc) ||
892892
isa<SubscriptDecl>(dc));
893893
finishLookingInContext( PerContextInfo{
894-
dc,
894+
AddGenericParameters::Yes,
895895
dc,
896896
None,
897897
resolveIsCascadingUse(DC, isCascadingUse,
@@ -1723,6 +1723,8 @@ void UnqualifiedLookupFactory::dumpBreadcrumbs() const {
17231723

17241724
void UnqualifiedLookupFactory::PerContextInfo::dump() const {
17251725
auto &e = llvm::errs();
1726+
e << (addGenericParameters == AddGenericParameters::Yes ? " add generics, "
1727+
: "");
17261728
e << " dc: ";
17271729
lookupContextForThisContext->dumpContext();
17281730
if (placesToSearch.hasValue())

0 commit comments

Comments
 (0)