From 9ec3e6edfdb11b3429eb5cb422c8ae82adce23c5 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Wed, 6 Sep 2017 15:52:13 +0300 Subject: [PATCH] PY-22729 "Parameter" in highlighting settings covers only their names Previously, it also included type annotations unless a parameter also had a default value. --- .../jetbrains/python/validation/HighlightingAnnotator.java | 4 +--- python/testData/highlighting/annotations.py | 2 +- .../highlighting/parametersWithAnnotationsAndDefaults.py | 2 ++ .../testSrc/com/jetbrains/python/PythonHighlightingTest.java | 5 +++++ 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 python/testData/highlighting/parametersWithAnnotationsAndDefaults.py diff --git a/python/src/com/jetbrains/python/validation/HighlightingAnnotator.java b/python/src/com/jetbrains/python/validation/HighlightingAnnotator.java index 5e500eefc0d9..c0d23907b955 100644 --- a/python/src/com/jetbrains/python/validation/HighlightingAnnotator.java +++ b/python/src/com/jetbrains/python/validation/HighlightingAnnotator.java @@ -19,7 +19,6 @@ import com.intellij.lang.ASTNode; import com.intellij.lang.annotation.Annotation; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.colors.TextAttributesKey; -import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.python.highlighting.PyHighlighter; import com.jetbrains.python.psi.*; @@ -34,8 +33,7 @@ public class HighlightingAnnotator extends PyAnnotator { public void visitPyParameter(PyParameter node) { PyFunction function = PsiTreeUtil.getParentOfType(node, PyFunction.class); if (function != null) { - final PsiElement anchor = node.hasDefaultValue() ? node.getFirstChild() : node; - final Annotation annotation = getHolder().createInfoAnnotation(anchor, null); + final Annotation annotation = getHolder().createInfoAnnotation(node.getFirstChild(), null); annotation.setTextAttributes(node.isSelf() ? PyHighlighter.PY_SELF_PARAMETER : PyHighlighter.PY_PARAMETER); } } diff --git a/python/testData/highlighting/annotations.py b/python/testData/highlighting/annotations.py index 096418ff1cc9..a781f5c8dfe8 100644 --- a/python/testData/highlighting/annotations.py +++ b/python/testData/highlighting/annotations.py @@ -2,5 +2,5 @@ TOP_LEVEL: str = 'f class C: attr: Optional[Any] = None - def method(self, xs: List[int]) -> None: + def method(self, xs: List[int]) -> None: pass diff --git a/python/testData/highlighting/parametersWithAnnotationsAndDefaults.py b/python/testData/highlighting/parametersWithAnnotationsAndDefaults.py new file mode 100644 index 000000000000..f4fd91821e4b --- /dev/null +++ b/python/testData/highlighting/parametersWithAnnotationsAndDefaults.py @@ -0,0 +1,2 @@ +def f(p1: int, p2: int = 42): + print(p1, p2) \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonHighlightingTest.java b/python/testSrc/com/jetbrains/python/PythonHighlightingTest.java index 95a1ec9bc223..69952b127f06 100644 --- a/python/testSrc/com/jetbrains/python/PythonHighlightingTest.java +++ b/python/testSrc/com/jetbrains/python/PythonHighlightingTest.java @@ -374,6 +374,11 @@ public class PythonHighlightingTest extends PyTestCase { runWithLanguageLevel(LanguageLevel.PYTHON36, this::doTest); } + // PY-22729 + public void testParametersWithAnnotationsAndDefaults() { + runWithLanguageLevel(LanguageLevel.PYTHON30, this::doTest); + } + @NotNull private static EditorColorsScheme createTemporaryColorScheme() { EditorColorsManager manager = EditorColorsManager.getInstance();