diff --git a/lib/Sema/ConstraintSystem.cpp b/lib/Sema/ConstraintSystem.cpp index 9c5829342c0..f57a6498f09 100644 --- a/lib/Sema/ConstraintSystem.cpp +++ b/lib/Sema/ConstraintSystem.cpp @@ -2199,13 +2199,18 @@ void ConstraintSystem::resolveOverload(ConstraintLocator *locator, if (!type || !type->is()) return false; - if (auto call = dyn_cast(locator->getAnchor())) - return call->getSemanticFn() != call->getFn(); + auto expr = locator->getAnchor(); + if (!expr) + return false; - if (auto paren = getParentExpr(locator->getAnchor())) { - return isa(paren); + if (isa(expr)) { + return false; } + auto parentExpr = getParentExpr(expr); + if (parentExpr && isa(parentExpr)) + return true; + return false; };