@@ -693,11 +693,13 @@ static void lookupVisibleMemberDeclsImpl(
693
693
}
694
694
}
695
695
696
+ auto lookupTy = BaseTy;
697
+
696
698
const auto synthesizeAndLookupTypeMembers = [&](NominalTypeDecl *NTD) {
697
699
synthesizeMemberDeclsForLookup (NTD, CurrDC);
698
700
699
701
// Look in for members of a nominal type.
700
- lookupTypeMembers (BaseTy, BaseTy , Consumer, CurrDC, LS, Reason);
702
+ lookupTypeMembers (BaseTy, lookupTy , Consumer, CurrDC, LS, Reason);
701
703
};
702
704
703
705
llvm::SmallPtrSet<ClassDecl *, 8 > Ancestors;
@@ -725,7 +727,7 @@ static void lookupVisibleMemberDeclsImpl(
725
727
Ancestors.insert (CD);
726
728
727
729
Reason = getReasonForSuper (Reason);
728
- BaseTy = CD->getSuperclass ();
730
+ lookupTy = CD->getSuperclass ();
729
731
730
732
LS = LS.withOnSuperclass ();
731
733
if (CD->inheritsSuperclassInitializers ())
@@ -734,7 +736,7 @@ static void lookupVisibleMemberDeclsImpl(
734
736
735
737
// Look into the inheritance chain.
736
738
do {
737
- const auto CurClass = BaseTy ->getClassOrBoundGenericClass ();
739
+ const auto CurClass = lookupTy ->getClassOrBoundGenericClass ();
738
740
739
741
// FIXME: This path is no substitute for an actual circularity check.
740
742
// The real fix is to check that the superclass doesn't introduce a
@@ -744,10 +746,10 @@ static void lookupVisibleMemberDeclsImpl(
744
746
745
747
synthesizeAndLookupTypeMembers (CurClass);
746
748
747
- BaseTy = CurClass->getSuperclass ();
749
+ lookupTy = CurClass->getSuperclass ();
748
750
if (!CurClass->inheritsSuperclassInitializers ())
749
751
LS = LS.withoutInheritsSuperclassInitializers ();
750
- } while (BaseTy );
752
+ } while (lookupTy );
751
753
}
752
754
753
755
swift::DynamicLookupInfo::DynamicLookupInfo (
0 commit comments