PY-22729 "Parameter" in highlighting settings covers only their names

Previously, it also included type annotations unless a parameter also
had a default value.
This commit is contained in:
Mikhail Golubev
2017-10-09 14:56:50 +03:00
parent bd89c88b51
commit 9ec3e6edfd
4 changed files with 9 additions and 4 deletions
@@ -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);
}
}
+1 -1
View File
@@ -2,5 +2,5 @@ TOP_LEVEL: <info descr="null"><info descr="PY.ANNOTATION">str</info></info> = 'f
class <info descr="null">C</info>:
attr: <info descr="PY.ANNOTATION">Optional[Any]</info> = None
def <info descr="null">method</info>(<info descr="null">self</info>, <info descr="null">xs: <info descr="PY.ANNOTATION">List[<info descr="null">int</info>]</info></info>) -> <info descr="PY.ANNOTATION">None</info>:
def <info descr="null">method</info>(<info descr="null">self</info>, <info descr="null">xs</info>: <info descr="PY.ANNOTATION">List[<info descr="null">int</info>]</info>) -> <info descr="PY.ANNOTATION">None</info>:
pass
@@ -0,0 +1,2 @@
def <info descr="null">f</info>(<info descr="null">p1</info>: <info descr="null"><info descr="PY.ANNOTATION">int</info></info>, <info descr="null">p2</info>: <info descr="null"><info descr="PY.ANNOTATION">int</info></info> = 42):
<info descr="null"><info descr="PY.FUNCTION_CALL">print</info></info>(<info descr="null">p1</info>, <info descr="null">p2</info>)
@@ -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();