From 95e3e25988ebecb068829d1f179018a6ed485282 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Mon, 24 Apr 2017 21:37:47 +0300 Subject: [PATCH] PY-21519 Re-enable proper completion in type comments Since it's no longer clear under which circumstances the original problem for which the corresponding check was introduced occurred, and I wan't able to reproduce it, I revert it temporarily to see whether it's still worth keeping. --- .../codeInsight/typing/PyTypingAnnotationInjector.java | 9 +-------- python/testData/completion/typeComment.py | 3 +++ .../com/jetbrains/python/PythonCompletionTest.java | 7 +++++++ 3 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 python/testData/completion/typeComment.py diff --git a/python/src/com/jetbrains/python/codeInsight/typing/PyTypingAnnotationInjector.java b/python/src/com/jetbrains/python/codeInsight/typing/PyTypingAnnotationInjector.java index 9003dde4710b..eacf8b258e1b 100644 --- a/python/src/com/jetbrains/python/codeInsight/typing/PyTypingAnnotationInjector.java +++ b/python/src/com/jetbrains/python/codeInsight/typing/PyTypingAnnotationInjector.java @@ -15,7 +15,6 @@ */ package com.jetbrains.python.codeInsight.typing; -import com.intellij.codeInsight.completion.CompletionUtil; import com.intellij.lang.Language; import com.intellij.lang.injection.MultiHostRegistrar; import com.intellij.openapi.util.TextRange; @@ -80,7 +79,7 @@ public class PyTypingAnnotationInjector extends PyInjectorBase { if (annotationText != null) { final int start = m.start(1); final int end = m.end(1); - if (start < end && allowInjectionInComment(host)) { + if (start < end) { final Language language; if ("ignore".equals(annotationText)) { language = null; @@ -111,10 +110,4 @@ public class PyTypingAnnotationInjector extends PyInjectorBase { private static boolean isTypingAnnotation(@NotNull String s) { return RE_TYPING_ANNOTATION.matcher(s).matches(); } - - private static boolean allowInjectionInComment(@NotNull PsiLanguageInjectionHost host) { - // XXX: Don't inject PyDocstringLanguage during completion inside comments due to an exception related to finding ShredImpl's - // hostElementPointer - return CompletionUtil.getOriginalOrSelf(host) == host; - } } diff --git a/python/testData/completion/typeComment.py b/python/testData/completion/typeComment.py new file mode 100644 index 000000000000..0f9d7bf53d19 --- /dev/null +++ b/python/testData/completion/typeComment.py @@ -0,0 +1,3 @@ +import typing + +a = [] # type: typing. \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index daf41b0e2c60..480437f318ce 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -1136,6 +1136,13 @@ public class PythonCompletionTest extends PyTestCase { assertDoesntContain(suggested, "_T", "_KT"); } + // PY-21519 + public void testTypeComment() { + myFixture.copyFileToProject("../typing/typing.py"); + final List variants = doTestByFile(); + assertContainsElements(variants, "List", "Union", "Optional"); + } + @Override protected String getTestDataPath() { return super.getTestDataPath() + "/completion";