Fix find usages classification for objects
Objects/enum entries are treated as variables as before. Test data for private object in superclass was changed because now the object (as opposed to the property) is no longer resolved due to KT-354
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
+3
-4
@@ -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<JetClass> {
|
||||
public KotlinFindClassUsagesHandler(@NotNull JetClass jetClass, @NotNull KotlinFindUsagesHandlerFactory factory) {
|
||||
public class KotlinFindClassUsagesHandler extends KotlinFindUsagesHandler<JetClassOrObject> {
|
||||
public KotlinFindClassUsagesHandler(@NotNull JetClassOrObject jetClass, @NotNull KotlinFindUsagesHandlerFactory factory) {
|
||||
super(jetClass, factory);
|
||||
}
|
||||
|
||||
@@ -131,7 +130,7 @@ public class KotlinFindClassUsagesHandler extends KotlinFindUsagesHandler<JetCla
|
||||
@Override
|
||||
protected boolean isSearchForTextOccurencesAvailable(@NotNull PsiElement psiElement, boolean isSingleFile) {
|
||||
if (isSingleFile) return false;
|
||||
return psiElement instanceof JetClass;
|
||||
return psiElement instanceof JetClassOrObject;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName
|
||||
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration
|
||||
package server;
|
||||
|
||||
object <caret>O {
|
||||
|
||||
@@ -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 <caret>Bar
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName
|
||||
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration
|
||||
package a
|
||||
|
||||
class A {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName
|
||||
// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclaration
|
||||
package server;
|
||||
|
||||
object <caret>O {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user