@@ -693,11 +693,13 @@ static void lookupVisibleMemberDeclsImpl(
693693 }
694694 }
695695
696+ auto lookupTy = BaseTy;
697+
696698 const auto synthesizeAndLookupTypeMembers = [&](NominalTypeDecl *NTD) {
697699 synthesizeMemberDeclsForLookup (NTD, CurrDC);
698700
699701 // Look in for members of a nominal type.
700- lookupTypeMembers (BaseTy, BaseTy , Consumer, CurrDC, LS, Reason);
702+ lookupTypeMembers (BaseTy, lookupTy , Consumer, CurrDC, LS, Reason);
701703 };
702704
703705 llvm::SmallPtrSet<ClassDecl *, 8 > Ancestors;
@@ -725,7 +727,7 @@ static void lookupVisibleMemberDeclsImpl(
725727 Ancestors.insert (CD);
726728
727729 Reason = getReasonForSuper (Reason);
728- BaseTy = CD->getSuperclass ();
730+ lookupTy = CD->getSuperclass ();
729731
730732 LS = LS.withOnSuperclass ();
731733 if (CD->inheritsSuperclassInitializers ())
@@ -734,7 +736,7 @@ static void lookupVisibleMemberDeclsImpl(
734736
735737 // Look into the inheritance chain.
736738 do {
737- const auto CurClass = BaseTy ->getClassOrBoundGenericClass ();
739+ const auto CurClass = lookupTy ->getClassOrBoundGenericClass ();
738740
739741 // FIXME: This path is no substitute for an actual circularity check.
740742 // The real fix is to check that the superclass doesn't introduce a
@@ -744,10 +746,10 @@ static void lookupVisibleMemberDeclsImpl(
744746
745747 synthesizeAndLookupTypeMembers (CurClass);
746748
747- BaseTy = CurClass->getSuperclass ();
749+ lookupTy = CurClass->getSuperclass ();
748750 if (!CurClass->inheritsSuperclassInitializers ())
749751 LS = LS.withoutInheritsSuperclassInitializers ();
750- } while (BaseTy );
752+ } while (lookupTy );
751753}
752754
753755swift::DynamicLookupInfo::DynamicLookupInfo (
0 commit comments