diff --git a/lib/AST/GenericSignatureBuilder.cpp b/lib/AST/GenericSignatureBuilder.cpp index 488a44b6ff8a4..bb58412049496 100644 --- a/lib/AST/GenericSignatureBuilder.cpp +++ b/lib/AST/GenericSignatureBuilder.cpp @@ -4361,6 +4361,8 @@ ConstraintResult GenericSignatureBuilder::addTypeRequirement( if (subjectType->is()) { subjectType = resolveDependentMemberTypes(*this, subjectType); + } else { + subjectType = ErrorType::get(subjectType); } auto invalidConstraint = Constraint( diff --git a/validation-test/compiler_crashers_2_fixed/rdar58941114.swift b/validation-test/compiler_crashers_2_fixed/rdar58941114.swift new file mode 100644 index 0000000000000..50db463dda4dd --- /dev/null +++ b/validation-test/compiler_crashers_2_fixed/rdar58941114.swift @@ -0,0 +1,6 @@ +// RUN: not %target-swift-frontend %s -typecheck + +class C {} +protocol Foo { + associatedtype X where C: X +}