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 3608c2433ac..f9ee61a0b6e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.properties @@ -74,6 +74,7 @@ options.kotlin.attribute.descriptor.kdoc.tag=Comments//KDoc//KDoc tag options.kotlin.attribute.descriptor.kdoc.value=Comments//KDoc//Link in KDoc tag options.kotlin.attribute.descriptor.object=Classes and Interfaces//Object options.kotlin.attribute.descriptor.enumEntry=Classes and Interfaces//Enum entry +options.kotlin.attribute.descriptor.typeAlias=Classes and Interfaces//Type alias options.kotlin.attribute.descriptor.var=Properties and Variables//Var (mutable variable, parameter or property) options.kotlin.attribute.descriptor.local.variable=Properties and Variables//Local variable or value options.kotlin.attribute.descriptor.captured.variable=Properties and Variables//Variables and values captured in a closure 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 57c2d7e1e1e..de3cf1454d9 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 @@ -59,6 +59,7 @@ public class KotlinHighlightingColors { public static final TextAttributesKey ANNOTATION = createTextAttributesKey("KOTLIN_ANNOTATION", JavaHighlightingColors.ANNOTATION_NAME_ATTRIBUTES); public static final TextAttributesKey OBJECT = createTextAttributesKey("KOTLIN_OBJECT", CLASS); public static final TextAttributesKey ENUM_ENTRY = createTextAttributesKey("KOTLIN_ENUM_ENTRY", DefaultLanguageHighlighterColors.INSTANCE_FIELD); + public static final TextAttributesKey TYPE_ALIAS = createTextAttributesKey("KOTLIN_TYPE_ALIAS", CLASS); // variable kinds public static final TextAttributesKey MUTABLE_VARIABLE = createTextAttributesKey("KOTLIN_MUTABLE_VARIABLE"); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.kt index 333be893293..e88de83289f 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.kt @@ -57,6 +57,9 @@ internal class TypeKindHighlightingVisitor(holder: AnnotationHolder, bindingCont else if (referenceTarget is TypeParameterDescriptor) { highlightName(expression, TYPE_PARAMETER) } + else if (referenceTarget is TypeAliasDescriptor) { + highlightName(expression, TYPE_ALIAS) + } } } @@ -92,6 +95,16 @@ internal class TypeKindHighlightingVisitor(holder: AnnotationHolder, bindingCont super.visitClassOrObject(classOrObject) } + override fun visitTypeAlias(typeAlias: KtTypeAlias) { + val identifier = typeAlias.nameIdentifier + val descriptor = bindingContext.get(BindingContext.TYPE_ALIAS, typeAlias) + if (identifier != null && descriptor != null) { + if (applyHighlighterExtensions(identifier, descriptor)) return + highlightName(identifier, TYPE_ALIAS) + } + super.visitTypeAlias(typeAlias) + } + override fun visitDynamicType(type: KtDynamicType) { // Do nothing: 'dynamic' is highlighted as a keyword } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt index 821a7de7dc7..9826d8c681b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinColorSettingsPage.kt @@ -89,6 +89,9 @@ var globalCounterinterface FunctionLike { operator fun invoke() = 1 } + +typealias Predicate<T> = (T) -> Boolean +fun baz(p: Predicate<Int>) = p(42) """ } @@ -143,6 +146,7 @@ var globalCounterPredicate<T> = (T) -> Boolean +fun baz(p: Predicate<Int>) = p(42) diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java index 8a78ca7bb30..279e21566b4 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/HighlightingTestGenerated.java @@ -126,6 +126,12 @@ public class HighlightingTestGenerated extends AbstractHighlightingTest { doTest(fileName); } + @TestMetadata("TypeAlias.kt") + public void testTypeAlias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/highlighter/TypeAlias.kt"); + doTest(fileName); + } + @TestMetadata("TypesAndAnnotations.kt") public void testTypesAndAnnotations() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/highlighter/TypesAndAnnotations.kt");