diff --git a/lib/Sema/CSSimplify.cpp b/lib/Sema/CSSimplify.cpp index ae3d60a43dbf4..0e2b0d56a77d4 100644 --- a/lib/Sema/CSSimplify.cpp +++ b/lib/Sema/CSSimplify.cpp @@ -13936,6 +13936,13 @@ ConstraintSystem::simplifyExplicitGenericArgumentsConstraint( } else { // If the overload hasn't been resolved, we can't simplify this constraint. auto overloadLocator = getCalleeLocator(getConstraintLocator(locator)); + + // If there was a problem resolving specialization expression + // it would be diagnosted as invalid AST node. + if (overloadLocator->directlyAt()) { + return shouldAttemptFixes() ? SolutionKind::Error : SolutionKind::Solved; + } + auto selectedOverload = findSelectedOverloadFor(overloadLocator); if (!selectedOverload) return formUnsolved(); diff --git a/test/Constraints/rdar139913219.swift b/test/Constraints/rdar139913219.swift index afb2f08b3c4a5..0f3cb89e7a473 100644 --- a/test/Constraints/rdar139913219.swift +++ b/test/Constraints/rdar139913219.swift @@ -1,4 +1,4 @@ -// RUN: %target-typecheck-verify-swift -verify-ignore-unknown +// RUN: %target-typecheck-verify-swift // rdar://139913219 - Make sure we don't crash. @@ -6,9 +6,6 @@ func bar(_ x: Int.Type, _: Int) {} func bar(_ x: T.Type, _: Int) {} func foo() { - // FIXME: We shouldn't be failing to produce a diagnostic. - // Once resolved, remove '-verify-ignore-unknown' bar(X.self, .zero) // expected-error@-1 {{cannot find 'X' in scope}} - // expected-error@-2 {{failed to produce diagnostic for expression}} }