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 e1f99a8ccbb2..f87d299d797d 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 @@ -35,13 +35,14 @@ import static com.jetbrains.python.psi.PyUtil.as; */ public class PyFStringLikeCompletionContributor extends CompletionContributor { - private static final PsiElementPattern.Capture INSIDE_NON_FORMATTED_STRING_ELEMENT = + private static final PsiElementPattern.Capture APPLICABLE_STRING_ELEMENT = psiElement(PyPlainStringElement.class) .withParent(PyStringLiteralExpression.class) + .andNot(psiElement().withSuperParent(2, PyLiteralPattern.class)) .andNot(psiElement().inside(PyStringFormatCompletionContributor.FORMAT_STRING_CAPTURE)); public PyFStringLikeCompletionContributor() { - extend(CompletionType.BASIC, INSIDE_NON_FORMATTED_STRING_ELEMENT, new CompletionProvider<>() { + extend(CompletionType.BASIC, APPLICABLE_STRING_ELEMENT, new CompletionProvider<>() { @Override protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, diff --git a/python/testData/completion/fStringLikeCompletionNotAvailableInLiteralPatterns.py b/python/testData/completion/fStringLikeCompletionNotAvailableInLiteralPatterns.py new file mode 100644 index 000000000000..92c2d5d39d7c --- /dev/null +++ b/python/testData/completion/fStringLikeCompletionNotAvailableInLiteralPatterns.py @@ -0,0 +1,4 @@ +my_expr = 42 +match my_expr: + case '{my_e': + pass \ 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 6328329d78cf..00a23617dfff 100644 --- a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java +++ b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java @@ -474,6 +474,11 @@ public class Py3CompletionTest extends PyTestCase { assertContainsElements(myFixture.getLookupElementStrings(), "city"); } + // PY-48665 + public void testFStringLikeCompletionNotAvailableInLiteralPatterns() { + doNegativeTest(); + } + // PY-46056 public void testImportCompletionHintForSameDirectoryModuleInOrdinaryPackage() { doTestVariantTailText("ordinaryPackage/sample.py", "logging", null);