diff --git a/idea/src/org/jetbrains/jet/plugin/findUsages/JetUsageTypeProvider.kt b/idea/src/org/jetbrains/jet/plugin/findUsages/JetUsageTypeProvider.kt index 397d7bf269f..332a585d225 100644 --- a/idea/src/org/jetbrains/jet/plugin/findUsages/JetUsageTypeProvider.kt +++ b/idea/src/org/jetbrains/jet/plugin/findUsages/JetUsageTypeProvider.kt @@ -32,6 +32,7 @@ import org.jetbrains.jet.lexer.JetTokens import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache import org.jetbrains.jet.plugin.JetBundle import org.jetbrains.jet.lang.resolve.java.descriptor.JavaNamespaceDescriptor +import org.jetbrains.jet.lang.resolve.DescriptorUtils public object JetUsageTypeProvider : UsageTypeProviderEx { public override fun getUsageType(element: PsiElement?): UsageType? { @@ -179,7 +180,13 @@ public object JetUsageTypeProvider : UsageTypeProviderEx { val descriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, reference) return when (descriptor) { - is ClassifierDescriptor, is JavaNamespaceDescriptor -> getClassUsageType() + is ClassifierDescriptor -> if (DescriptorUtils.isSingleton(descriptor)) { + // Treat object accesses as variables to simulate the old behaviour (when variables were created for objects) + getVariableUsageType() + } else { + getClassUsageType() + } + is JavaNamespaceDescriptor -> getClassUsageType() is VariableDescriptor -> getVariableUsageType() is FunctionDescriptor -> getFunctionUsageType(descriptor) else -> null diff --git a/idea/src/org/jetbrains/jet/plugin/findUsages/KotlinFindUsagesHandlerFactory.kt b/idea/src/org/jetbrains/jet/plugin/findUsages/KotlinFindUsagesHandlerFactory.kt index 1e01668a495..c87fd1abfdd 100644 --- a/idea/src/org/jetbrains/jet/plugin/findUsages/KotlinFindUsagesHandlerFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/findUsages/KotlinFindUsagesHandlerFactory.kt @@ -20,19 +20,17 @@ import com.intellij.find.findUsages.FindUsagesHandler import com.intellij.find.findUsages.FindUsagesHandlerFactory import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement -import org.jetbrains.jet.lang.psi.JetClass -import org.jetbrains.jet.lang.psi.JetDeclaration import org.jetbrains.jet.lang.psi.JetNamedFunction import org.jetbrains.jet.plugin.findUsages.handlers.KotlinFindClassUsagesHandler import org.jetbrains.jet.plugin.findUsages.handlers.KotlinFindMemberUsagesHandler import org.jetbrains.jet.plugin.refactoring.JetRefactoringUtil import org.jetbrains.jet.lang.psi.JetProperty -import org.jetbrains.jet.lang.psi.JetNamedDeclaration import com.intellij.find.findUsages.FindUsagesOptions import org.jetbrains.jet.lang.psi.JetTypeParameter import org.jetbrains.jet.plugin.findUsages.handlers.KotlinTypeParameterFindUsagesHandler import org.jetbrains.jet.lang.psi.JetParameter import org.jetbrains.jet.lang.psi.JetNamedDeclaration +import org.jetbrains.jet.lang.psi.JetClassOrObject public class KotlinFindUsagesHandlerFactory(project: Project) : FindUsagesHandlerFactory() { val findFunctionOptions = KotlinFunctionFindUsagesOptions(project) @@ -41,11 +39,15 @@ public class KotlinFindUsagesHandlerFactory(project: Project) : FindUsagesHandle val defaultOptions = FindUsagesOptions(project) public override fun canFindUsages(element: PsiElement): Boolean = - element is JetClass || element is JetNamedFunction || element is JetProperty || element is JetParameter || element is JetTypeParameter + element is JetClassOrObject || + element is JetNamedFunction || + element is JetProperty || + element is JetParameter || + element is JetTypeParameter public override fun createFindUsagesHandler(element: PsiElement, forHighlightUsages: Boolean): FindUsagesHandler { when(element) { - is JetClass -> + is JetClassOrObject -> return KotlinFindClassUsagesHandler(element, this) is JetNamedFunction, is JetProperty, is JetParameter -> { diff --git a/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java b/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java index 0b2f5c07da0..495311ffc09 100644 --- a/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/findUsages/handlers/KotlinFindClassUsagesHandler.java @@ -33,7 +33,6 @@ import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.asJava.LightClassUtil; -import org.jetbrains.jet.lang.psi.JetClass; import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.plugin.findUsages.FindUsagesPackage; import org.jetbrains.jet.plugin.findUsages.KotlinClassFindUsagesOptions; @@ -43,8 +42,8 @@ import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearch; import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchRequest; import org.jetbrains.jet.plugin.search.usagesSearch.UsagesSearchTarget; -public class KotlinFindClassUsagesHandler extends KotlinFindUsagesHandler { - public KotlinFindClassUsagesHandler(@NotNull JetClass jetClass, @NotNull KotlinFindUsagesHandlerFactory factory) { +public class KotlinFindClassUsagesHandler extends KotlinFindUsagesHandler { + public KotlinFindClassUsagesHandler(@NotNull JetClassOrObject jetClass, @NotNull KotlinFindUsagesHandlerFactory factory) { super(jetClass, factory); } @@ -131,7 +130,7 @@ public class KotlinFindClassUsagesHandler extends KotlinFindUsagesHandlerO { diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages1.0.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages1.0.kt index c304f1bdb09..af5a1f583de 100644 --- a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages1.0.kt +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages1.0.kt @@ -1,4 +1,4 @@ -// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration // OPTIONS: usages fun foo(): Any { object Bar diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages2.0.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages2.0.kt index 91a7bf64add..a029a7049f0 100644 --- a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages2.0.kt +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages2.0.kt @@ -1,4 +1,4 @@ -// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration // OPTIONS: usages fun foo(): Any { if (true) { diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt index fa0d5503cb6..c5392e2d91b 100644 --- a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt @@ -1,4 +1,4 @@ -// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration package a class A { diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinObjectUsages.0.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinObjectUsages.0.kt index ff25227e772..22c113bad6c 100644 --- a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinObjectUsages.0.kt +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinObjectUsages.0.kt @@ -1,4 +1,4 @@ -// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration package server; object O { diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.0.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.0.kt index d377a2d8f82..c7ed4f0a0c7 100644 --- a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.0.kt +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.0.kt @@ -1,4 +1,4 @@ -// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration // OPTIONS: usages package server; @@ -11,6 +11,6 @@ public open class Server() { } public class ServerEx(): Server() { - override fun processRequest() = Foo + override fun processRequest() = Server.Foo } diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.results.txt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.results.txt index 44c32570375..4bc4d748716 100644 --- a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.results.txt +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinPrivateObjectUsages.results.txt @@ -1,3 +1,3 @@ Value read (10: 33) open fun processRequest() = Foo -Value read (14: 37) override fun processRequest() = Foo +Value read (14: 44) override fun processRequest() = Server.Foo Value read (5: 26) println(Server().Foo)