diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitor.java index 4f7f3f83e30..249a00b8caa 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitor.java @@ -30,7 +30,15 @@ public class JetVisitor extends PsiElementVisitor { } public R visitClass(@NotNull JetClass klass, D data) { - return visitNamedDeclaration(klass, data); + return visitClassOrObject(klass, data); + } + + public R visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, D data) { + return visitClassOrObject(declaration, data); + } + + public R visitClassOrObject(@NotNull JetClassOrObject classOrObject, D data) { + return visitNamedDeclaration(classOrObject, data); } public R visitSecondaryConstructor(@NotNull JetSecondaryConstructor constructor, D data) { @@ -402,10 +410,6 @@ public class JetVisitor extends PsiElementVisitor { return visitJetElement(condition, data); } - public R visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, D data) { - return visitNamedDeclaration(declaration, data); - } - public R visitObjectDeclarationName(@NotNull JetObjectDeclarationName declarationName, D data) { return visitExpression(declarationName, data); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitorVoid.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitorVoid.java index 78caf28882d..286fd42ad1f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitorVoid.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetVisitorVoid.java @@ -33,6 +33,10 @@ public class JetVisitorVoid extends JetVisitor { super.visitClass(klass, null); } + public void visitClassOrObject(@NotNull JetClassOrObject classOrObject) { + super.visitClassOrObject(classOrObject, null); + } + public void visitSecondaryConstructor(@NotNull JetSecondaryConstructor constructor) { super.visitSecondaryConstructor(constructor, null); } @@ -448,6 +452,12 @@ public class JetVisitorVoid extends JetVisitor { return null; } + @Override + public final Void visitClassOrObject(@NotNull JetClassOrObject classOrObject, Void data) { + visitClassOrObject(classOrObject); + return null; + } + @Override public final Void visitSecondaryConstructor(@NotNull JetSecondaryConstructor constructor, Void data) { visitSecondaryConstructor(constructor); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt index 31ddc27f0a6..58abc341513 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt @@ -154,7 +154,7 @@ public class LazyTopDownAnalyzer { fileScope.forceResolveImport(importDirective) } - private fun visitClassOrObject(classOrObject: JetClassOrObject) { + override fun visitClassOrObject(classOrObject: JetClassOrObject) { val descriptor = lazyDeclarationResolver!!.getClassDescriptor(classOrObject) as ClassDescriptorWithResolutionScopes c.getDeclaredClasses().put(classOrObject, descriptor) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties index 099b79fce14..c57187ff1aa 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties @@ -133,6 +133,7 @@ options.kotlin.attribute.descriptor.kdoc.comment=KDoc comment options.kotlin.attribute.descriptor.kdoc.tag=KDoc tag options.kotlin.attribute.descriptor.kdoc.value=Link in KDoc tag options.kotlin.attribute.descriptor.object=Object +options.kotlin.attribute.descriptor.enumEntry=Enum entry options.kotlin.attribute.descriptor.annotation=Annotation options.kotlin.attribute.descriptor.var=Var (mutable variable, parameter or property) options.kotlin.attribute.descriptor.local.variable=Local variable or value diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetHighlightingColors.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetHighlightingColors.java index 62b237cf779..60f81964a74 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetHighlightingColors.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetHighlightingColors.java @@ -55,6 +55,7 @@ public class JetHighlightingColors { public static final TextAttributesKey TRAIT = createTextAttributesKey("KOTLIN_TRAIT", CodeInsightColors.INTERFACE_NAME_ATTRIBUTES); public static final TextAttributesKey ANNOTATION = createTextAttributesKey("KOTLIN_ANNOTATION"); public static final TextAttributesKey OBJECT = createTextAttributesKey("KOTLIN_OBJECT", CLASS); + public static final TextAttributesKey ENUM_ENTRY = createTextAttributesKey("KOTLIN_ENUM_ENTRY", CodeInsightColors.INSTANCE_FIELD_ATTRIBUTES); // 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.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.java index db9b1001696..a4267bd75fa 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/TypeKindHighlightingVisitor.java @@ -62,14 +62,6 @@ class TypeKindHighlightingVisitor extends AfterAnalysisHighlightingVisitor { JetPsiChecker.highlightName(holder, toHighlight, JetHighlightingColors.ANNOTATION); } - @Override - public void visitObjectDeclarationName(@NotNull JetObjectDeclarationName declaration) { - PsiElement nameIdentifier = declaration.getNameIdentifier(); - if (nameIdentifier != null) { - highlightName(nameIdentifier, JetHighlightingColors.CLASS); - } - } - @Override public void visitTypeParameter(@NotNull JetTypeParameter parameter) { PsiElement identifier = parameter.getNameIdentifier(); @@ -80,18 +72,13 @@ class TypeKindHighlightingVisitor extends AfterAnalysisHighlightingVisitor { } @Override - public void visitEnumEntry(@NotNull JetEnumEntry enumEntry) { - // Do nothing, the name was already highlighted in visitObjectDeclarationName - } - - @Override - public void visitClass(@NotNull JetClass klass) { - PsiElement identifier = klass.getNameIdentifier(); - ClassDescriptor classDescriptor = bindingContext.get(BindingContext.CLASS, klass); + public void visitClassOrObject(@NotNull JetClassOrObject classOrObject) { + PsiElement identifier = classOrObject.getNameIdentifier(); + ClassDescriptor classDescriptor = bindingContext.get(BindingContext.CLASS, classOrObject); if (identifier != null && classDescriptor != null) { highlightName(identifier, textAttributesKeyForClass(classDescriptor)); } - super.visitClass(klass); + super.visitClassOrObject(classOrObject); } @Override @@ -113,7 +100,7 @@ class TypeKindHighlightingVisitor extends AfterAnalysisHighlightingVisitor { case OBJECT: return JetHighlightingColors.OBJECT; case ENUM_ENTRY: - return JetHighlightingColors.INSTANCE_PROPERTY; + return JetHighlightingColors.ENUM_ENTRY; default: return descriptor.getModality() == Modality.ABSTRACT ? JetHighlightingColors.ABSTRACT_CLASS diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/JetColorSettingsPage.java b/idea/src/org/jetbrains/kotlin/idea/highlighter/JetColorSettingsPage.java index 0969b6e4983..9973ee92441 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/JetColorSettingsPage.java +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/JetColorSettingsPage.java @@ -82,6 +82,10 @@ public class JetColorSettingsPage implements ColorSettingsPage { "\n" + "public abstract class Abstract {\n" + "}\n" + + "\n" + + "object Obj\n" + + "\n" + + "enum class E { A }\n" + " Bad character: \\n\n"; } @@ -137,6 +141,7 @@ public class JetColorSettingsPage implements ColorSettingsPage { new AttributesDescriptor("Interface", JetHighlightingColors.TRAIT), new AttributesDescriptor(JetBundle.message("options.kotlin.attribute.descriptor.annotation"), JetHighlightingColors.ANNOTATION), new AttributesDescriptor(JetBundle.message("options.kotlin.attribute.descriptor.object"), JetHighlightingColors.OBJECT), + new AttributesDescriptor(JetBundle.message("options.kotlin.attribute.descriptor.enumEntry"), JetHighlightingColors.ENUM_ENTRY), new AttributesDescriptor(JetBundle.message("options.kotlin.attribute.descriptor.var"), JetHighlightingColors.MUTABLE_VARIABLE), diff --git a/idea/testData/highlighter/Enums.kt b/idea/testData/highlighter/Enums.kt index 835f6f1cffa..4c194cc8392 100644 --- a/idea/testData/highlighter/Enums.kt +++ b/idea/testData/highlighter/Enums.kt @@ -1,11 +1,11 @@ package testing enum class Test { - FIRST, - SECOND + FIRST, + SECOND } fun testing(t1: Test, t2: Test): Test { - if (t1 != t2) return Test.FIRST - return testing(Test.FIRST, Test.SECOND) + if (t1 != t2) return Test.FIRST + return testing(Test.FIRST, Test.SECOND) } \ No newline at end of file diff --git a/idea/testData/highlighter/Object.kt b/idea/testData/highlighter/Object.kt index 1533b54340f..1e25e85a838 100644 --- a/idea/testData/highlighter/Object.kt +++ b/idea/testData/highlighter/Object.kt @@ -1,6 +1,6 @@ package testing -object O { +object O { fun foo() = 42 }