From 7efb32628e59f269d3c7b3f88a35eb9fabbf983e Mon Sep 17 00:00:00 2001 From: Vladimir Ilmov Date: Tue, 18 Feb 2020 21:38:47 +0100 Subject: [PATCH] [Highlight] Fix for coloring annotation attributes in Kotlin #KT-36156 Fixed --- .../org/jetbrains/kotlin/idea/KotlinBundle.properties | 3 ++- .../idea/highlighter/BeforeResolveHighlightingVisitor.kt | 6 +++++- .../kotlin/idea/highlighter/KotlinHighlightingColors.java | 1 + .../kotlin/idea/highlighter/KotlinColorSettingsPage.kt | 4 +++- idea/testData/highlighter/NamedArguments.kt | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/idea/idea-analysis/resources/org/jetbrains/kotlin/idea/KotlinBundle.properties b/idea/idea-analysis/resources/org/jetbrains/kotlin/idea/KotlinBundle.properties index 43b510b85ad..0aa61c8c975 100644 --- a/idea/idea-analysis/resources/org/jetbrains/kotlin/idea/KotlinBundle.properties +++ b/idea/idea-analysis/resources/org/jetbrains/kotlin/idea/KotlinBundle.properties @@ -59,7 +59,8 @@ livetemplate.description.exfun=Extension function livetemplate.description.exval=Extension read-only property livetemplate.description.exvar=Extension read-write property -options.kotlin.attribute.descriptor.annotation=Annotation +options.kotlin.attribute.descriptor.annotation=Annotation//Annotation name +options.kotlin.attribute.descriptor.annotation.attribute.name=Annotation//Annotation attribute name options.kotlin.attribute.descriptor.builtin.annotation=Keywords//Modifier options.kotlin.attribute.descriptor.builtin.keyword.val=Keywords//'val' options.kotlin.attribute.descriptor.builtin.keyword.var=Keywords//'var' diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/BeforeResolveHighlightingVisitor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/BeforeResolveHighlightingVisitor.kt index 2f14b5c1ff3..b660c636d0e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/BeforeResolveHighlightingVisitor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/BeforeResolveHighlightingVisitor.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag import org.jetbrains.kotlin.kdoc.psi.impl.KDocLink import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.psi.KtAnnotationEntry import org.jetbrains.kotlin.psi.KtExpressionWithLabel import org.jetbrains.kotlin.psi.KtLambdaExpression import org.jetbrains.kotlin.psi.KtValueArgument @@ -72,7 +73,10 @@ internal class BeforeResolveHighlightingVisitor(holder: AnnotationHolder) : High val argumentName = argument.getArgumentName() ?: return val eq = argument.equalsToken ?: return createInfoAnnotation(TextRange(argumentName.startOffset, eq.endOffset), null).textAttributes = - KotlinHighlightingColors.NAMED_ARGUMENT + if(argument.parent.parent is KtAnnotationEntry) + KotlinHighlightingColors.ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES + else + KotlinHighlightingColors.NAMED_ARGUMENT } override fun visitExpressionWithLabel(expression: KtExpressionWithLabel) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java index a17b3f7f601..20c63b312a9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlightingColors.java @@ -99,6 +99,7 @@ public class KotlinHighlightingColors { public static final TextAttributesKey DEBUG_INFO = createTextAttributesKey("KOTLIN_DEBUG_INFO"); public static final TextAttributesKey RESOLVED_TO_ERROR = createTextAttributesKey("KOTLIN_RESOLVED_TO_ERROR"); public static final TextAttributesKey NAMED_ARGUMENT = createTextAttributesKey("KOTLIN_NAMED_ARGUMENT"); + public static final TextAttributesKey ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES = createTextAttributesKey("KOTLIN_ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES", JavaHighlightingColors.ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES); private KotlinHighlightingColors() { } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt index 5ea7e9b6f0f..ea6f9f6b2e7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea.highlighter +import com.intellij.ide.highlighter.JavaHighlightingColors import com.intellij.openapi.editor.colors.TextAttributesKey import com.intellij.openapi.fileTypes.SyntaxHighlighter import com.intellij.openapi.options.OptionsBundle @@ -44,7 +45,7 @@ class KotlinColorSettingsPage : ColorSettingsPage, RainbowColorSettingsPage { * Doc comment here for `SomeClass` * @see Iterator#next() */ -@Deprecated("Deprecated class") +@Deprecated(message = "Deprecated class") private class MyClass<out T : Iterable<T>>(var prop1 : Int) { fun foo(nullable : String?, r : Runnable, f : () -> Int, fl : FunctionLike, dyn: dynamic) { println("length\nis ${"$"}{nullable?.length} \e") @@ -161,6 +162,7 @@ var globalCounte OptionsBundle.message("options.java.attribute.descriptor.abstract.class") to KotlinHighlightingColors.ABSTRACT_CLASS, OptionsBundle.message("options.java.attribute.descriptor.interface") to KotlinHighlightingColors.TRAIT, KotlinBundle.message("options.kotlin.attribute.descriptor.annotation") to KotlinHighlightingColors.ANNOTATION, + KotlinBundle.message("options.kotlin.attribute.descriptor.annotation.attribute.name") to KotlinHighlightingColors.ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES, KotlinBundle.message("options.kotlin.attribute.descriptor.object") to KotlinHighlightingColors.OBJECT, KotlinBundle.message("options.kotlin.attribute.descriptor.enumEntry") to KotlinHighlightingColors.ENUM_ENTRY, KotlinBundle.message("options.kotlin.attribute.descriptor.typeAlias") to KotlinHighlightingColors.TYPE_ALIAS, diff --git a/idea/testData/highlighter/NamedArguments.kt b/idea/testData/highlighter/NamedArguments.kt index efd7fa45721..e9f10daffb8 100644 --- a/idea/testData/highlighter/NamedArguments.kt +++ b/idea/testData/highlighter/NamedArguments.kt @@ -1,3 +1,4 @@ +@Suppress(names = ["foo"]) fun foo(p1: Int, p2: String): String { return p2 + p1 }