diff --git a/lib/Sema/CSSolver.cpp b/lib/Sema/CSSolver.cpp index 7df85800049..349205ca8ee 100644 --- a/lib/Sema/CSSolver.cpp +++ b/lib/Sema/CSSolver.cpp @@ -858,9 +858,10 @@ bool ConstraintSystem::Candidate::solve( auto constraintKind = ConstraintKind::Conversion; if (CTP == CTP_CallArgument) constraintKind = ConstraintKind::ArgumentConversion; - - cs.addConstraint(constraintKind, cs.getType(E), CT, - cs.getConstraintLocator(E), /*isFavored=*/true); + if (!CT->hasUnboundGenericType()) { + cs.addConstraint(constraintKind, cs.getType(E), CT, + cs.getConstraintLocator(E), /*isFavored=*/true); + } } // Try to solve the system and record all available solutions. diff --git a/test/Constraints/rdar145092838.swift b/test/Constraints/rdar145092838.swift new file mode 100644 index 00000000000..b8cae34148f --- /dev/null +++ b/test/Constraints/rdar145092838.swift @@ -0,0 +1,5 @@ +// RUN: %target-typecheck-verify-swift + +func f(a: Array, n: Int) { + let _: Array = a.prefix(n) + a.suffix(a.count - n - 1) +}