From 9beb2e3e36916b46351c2f62bd4c8a9795ec8b7f Mon Sep 17 00:00:00 2001 From: Hamish Knight Date: Thu, 11 Sep 2025 10:21:13 +0100 Subject: [PATCH] [Completion] Simplify opened function type in `tryResolveDoubleAppliedFunction` --- lib/IDE/ArgumentCompletion.cpp | 8 +++++--- validation-test/IDE/crashers_fixed/934bb97a5cbe0b8.swift | 7 +++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 validation-test/IDE/crashers_fixed/934bb97a5cbe0b8.swift diff --git a/lib/IDE/ArgumentCompletion.cpp b/lib/IDE/ArgumentCompletion.cpp index 78dd2b769f040..44cd9a2976dbc 100644 --- a/lib/IDE/ArgumentCompletion.cpp +++ b/lib/IDE/ArgumentCompletion.cpp @@ -133,10 +133,12 @@ tryResolveDoubleAppliedFunction(CallExpr *OuterCall, const Solution &S) { if (!FuncRefInfo.isDoubleApply()) return std::nullopt; - auto CalleeTy = Overload->adjustedOpenedType->getAs(); - auto ResultTy = S.simplifyTypeForCodeCompletion(CalleeTy->getResult()); + auto CalleeTy = S.simplifyTypeForCodeCompletion(Overload->adjustedOpenedType) + ->getAs(); + if (!CalleeTy) + return std::nullopt; - auto *FuncTy = ResultTy->getAs(); + auto *FuncTy = CalleeTy->getResult()->getAs(); if (!FuncTy) return std::nullopt; diff --git a/validation-test/IDE/crashers_fixed/934bb97a5cbe0b8.swift b/validation-test/IDE/crashers_fixed/934bb97a5cbe0b8.swift new file mode 100644 index 0000000000000..236602fc0c0fa --- /dev/null +++ b/validation-test/IDE/crashers_fixed/934bb97a5cbe0b8.swift @@ -0,0 +1,7 @@ +// {"kind":"complete","original":"a705fa0d","signature":"swift::constraints::Solution::simplifyType(swift::Type, bool) const","signatureAssert":"Assertion failed: (!resolvedType->getRecursiveProperties().isSolverAllocated()), function simplifyType"} +// RUN: %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s +{ + $1 { + }( + #^^#) +}