Break some cycles

Computing the generic signature changes the way that cycles appear in the compiler.  For now, break these cycles.  We should investigate each place where hasComputedGenericSignature() is used in service of breaking cycles.  See rdar://55263708
This commit is contained in:
Robert Widmann
2019-09-11 12:56:12 -07:00
parent d68f1259d7
commit e0a41b19cb
9 changed files with 47 additions and 30 deletions

View File

@@ -501,7 +501,9 @@ Type ConstraintSystem::openUnboundGenericType(UnboundGenericType *unbound,
// If the unbound decl hasn't been validated yet, we have a circular
// dependency that isn't being diagnosed properly.
if (!unboundDecl->getGenericSignature()) {
//
// FIXME: Delete this condition. He's dead Jim.
if (!unboundDecl->hasComputedGenericSignature()) {
TC.diagnose(unboundDecl, diag::circular_reference);
return Type();
}