From 270b41dc66047d07bbaa94d2cce2fa65c8c2cfdf Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Mon, 30 Oct 2017 15:14:34 +0900 Subject: [PATCH] KT-13378 Provide ability to configure highlighting for !! in expressions and ? in types --- .../src/org/jetbrains/kotlin/idea/KotlinBundle.properties | 2 ++ .../idea/highlighter/BeforeResolveHighlightingVisitor.kt | 1 + .../kotlin/idea/highlighter/KotlinHighlighter.java | 1 + .../kotlin/idea/highlighter/KotlinHighlightingColors.java | 2 ++ .../kotlin/idea/highlighter/KotlinColorSettingsPage.kt | 5 ++++- idea/testData/highlighter/NonNullAssertion.kt | 3 +++ .../kotlin/idea/highlighter/HighlightingTestGenerated.java | 6 ++++++ 7 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 idea/testData/highlighter/NonNullAssertion.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties index 1e62dcdce8e..43956bc3f8b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties @@ -64,6 +64,8 @@ options.kotlin.attribute.descriptor.builtin.annotation=Modifier options.kotlin.attribute.descriptor.string.escape=String//Escape in string and template braces options.kotlin.attribute.descriptor.closure.braces=Braces and Operators//Lambda expression braces and arrow options.kotlin.attribute.descriptor.safe.access=Braces and Operators//Safe access dot +options.kotlin.attribute.descriptor.quest=Braces and Operators//Question after the type +options.kotlin.attribute.descriptor.exclexcl=Braces and Operators//Non-null assertion options.kotlin.attribute.descriptor.arrow=Braces and Operators//Arrow options.kotlin.attribute.descriptor.colon=Braces and Operators//Colon options.kotlin.attribute.descriptor.double.colon=Braces and Operators//Double colon 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 c7780d27263..d88b30117de 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 @@ -47,6 +47,7 @@ internal class BeforeResolveHighlightingVisitor(holder: AnnotationHolder) : High } } elementType == KtTokens.SAFE_ACCESS -> KotlinHighlightingColors.SAFE_ACCESS + elementType == KtTokens.EXCLEXCL -> KotlinHighlightingColors.EXCLEXCL else -> return } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlighter.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlighter.java index ca4a4a87986..f1a7912df18 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlighter.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/KotlinHighlighter.java @@ -72,6 +72,7 @@ public class KotlinHighlighter extends SyntaxHighlighterBase { keys1.put(KtTokens.SEMICOLON, KotlinHighlightingColors.SEMICOLON); keys1.put(KtTokens.COLON, KotlinHighlightingColors.COLON); keys1.put(KtTokens.COLONCOLON, KotlinHighlightingColors.DOUBLE_COLON); + keys1.put(KtTokens.QUEST, KotlinHighlightingColors.QUEST); keys1.put(KtTokens.DOT, KotlinHighlightingColors.DOT); keys1.put(KtTokens.ARROW, KotlinHighlightingColors.ARROW); 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 c2a600a7bed..57c2d7e1e1e 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 @@ -42,6 +42,8 @@ public class KotlinHighlightingColors { public static final TextAttributesKey DOUBLE_COLON = createTextAttributesKey("KOTLIN_DOUBLE_COLON"); public static final TextAttributesKey DOT = createTextAttributesKey("KOTLIN_DOT", DefaultLanguageHighlighterColors.DOT); public static final TextAttributesKey SAFE_ACCESS = createTextAttributesKey("KOTLIN_SAFE_ACCESS", DefaultLanguageHighlighterColors.DOT); + public static final TextAttributesKey QUEST = createTextAttributesKey("KOTLIN_QUEST"); + public static final TextAttributesKey EXCLEXCL = createTextAttributesKey("KOTLIN_EXCLEXCL"); public static final TextAttributesKey ARROW = createTextAttributesKey("KOTLIN_ARROW", PARENTHESIS); public static final TextAttributesKey LINE_COMMENT = createTextAttributesKey("KOTLIN_LINE_COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT); public static final TextAttributesKey BLOCK_COMMENT = createTextAttributesKey("KOTLIN_BLOCK_COMMENT", DefaultLanguageHighlighterColors.BLOCK_COMMENT); diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt index 7fb03ec491b..821a7de7dc7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt @@ -45,8 +45,9 @@ class KotlinColorSettingsPage : ColorSettingsPage, RainbowColorSettingsPage { */ @Deprecated("Deprecated class") private class MyClass<out T : Iterable<T>>(var prop1 : Int) { - fun foo(nullable : String?, r : Runnable, f : () -> Int, fl : FunctionLike, dyn: dynamic) { + fun foo(nullable : String?, r : Runnable, f : () -> Int, fl : FunctionLike, dyn: dynamic) { println("length\nis ${"$"}{nullable?.length} \e") + println(nullable!!.length) val ints = java.util.ArrayList(2) ints[0] = 102 + f() + fl() val myFun = { -> "" }; @@ -128,6 +129,8 @@ var globalCountertest(s: String?) { + s!!.length +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java index e9956703625..8a78ca7bb30 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java @@ -102,6 +102,12 @@ public class HighlightingTestGenerated extends AbstractHighlightingTest { doTest(fileName); } + @TestMetadata("NonNullAssertion.kt") + public void testNonNullAssertion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/highlighter/NonNullAssertion.kt"); + doTest(fileName); + } + @TestMetadata("Object.kt") public void testObject() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/highlighter/Object.kt");