Push ArchetypeType's API down to subclasses.

And clean up code that conditionally works only with certain kinds of archetype along the way.
This commit is contained in:
Joe Groff
2018-12-12 13:26:16 -08:00
parent 4f0f11f6bb
commit 89979137fc
37 changed files with 265 additions and 328 deletions

View File

@@ -1197,7 +1197,10 @@ private:
case TypeKind::OpenedArchetype:
case TypeKind::NestedArchetype: {
auto *Archetype = BaseTy->castTo<ArchetypeType>();
auto L = getDebugLoc(*this, Archetype->getAssocType());
AssociatedTypeDecl *assocType = nullptr;
if (auto nested = dyn_cast<NestedArchetypeType>(Archetype))
assocType = nested->getAssocType();
auto L = getDebugLoc(*this, assocType);
auto Superclass = Archetype->getSuperclass();
auto DerivedFrom = Superclass.isNull()
? nullptr