From 8762972bad30fd00a773aa422290e83eaab168c1 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Tue, 18 Nov 2025 16:58:26 +0200 Subject: [PATCH] PY-85706 Don't insert "t" prefix on completion in string arguments of unresolved functions GitOrigin-RevId: c55b66d83f7518af43fb7dac8eb5a44560a10f85 --- .../completion/PyFStringLikeCompletionContributor.java | 6 +++++- ...nDoesNotAddTPrefixInsideUnresolvedFunctionCalls.after.py | 1 + ...pletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.py | 1 + python/testSrc/com/jetbrains/python/Py3CompletionTest.java | 5 +++++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.after.py create mode 100644 python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.py diff --git a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyFStringLikeCompletionContributor.java b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyFStringLikeCompletionContributor.java index 06fb9518be48..45ab26aa99d9 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyFStringLikeCompletionContributor.java +++ b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyFStringLikeCompletionContributor.java @@ -158,7 +158,11 @@ public final class PyFStringLikeCompletionContributor extends CompletionContribu !(argumentList.getParent() instanceof PyCallExpression call)) { return false; } - return ContainerUtil.all(call.multiMapArguments(PyResolveContext.defaultContext(typeEvalContext)), mapping -> { + List mappings = call.multiMapArguments(PyResolveContext.defaultContext(typeEvalContext)); + if (mappings.isEmpty()) { + return false; + } + return ContainerUtil.all(mappings, mapping -> { PyCallableParameter param = mapping.getMappedParameters().get(callArgument); if (param == null) return false; PyType paramType = param.getType(typeEvalContext); diff --git a/python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.after.py b/python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.after.py new file mode 100644 index 000000000000..77eb9ace8766 --- /dev/null +++ b/python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.after.py @@ -0,0 +1 @@ +unresolved(f"foo{divmod()}") \ No newline at end of file diff --git a/python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.py b/python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.py new file mode 100644 index 000000000000..36a1fd0baef0 --- /dev/null +++ b/python/testData/completion/fStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls.py @@ -0,0 +1 @@ +unresolved("foo{divmo") \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java index 2f476035216c..bfcb7789c517 100644 --- a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java +++ b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java @@ -567,6 +567,11 @@ public class Py3CompletionTest extends PyTestCase { public void testFStringLikeCompletionAddsTPrefixWhereTemplateStringIsExpectedAsAssignedValueWithUnpacking() { doTest(); } + + // PY-85706 + public void testFStringLikeCompletionDoesNotAddTPrefixInsideUnresolvedFunctionCalls() { + doTest(); + } // PY-46056 public void testImportCompletionHintForSameDirectoryModuleInOrdinaryPackage() {