From 359723416525b481d898ef624603695b85d699a0 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 4 Sep 2015 14:46:28 +0200 Subject: [PATCH] code review --- .../handlers/KotlinFindClassUsagesHandler.kt | 16 ++++++++-------- .../handlers/KotlinFindUsagesHandler.kt | 6 +----- .../KotlinTypeParameterFindUsagesHandler.kt | 7 +------ 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt index 0fd0f584487..44a7f6b6380 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt @@ -51,6 +51,7 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.effectiveDeclarations import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver import java.util.* @@ -103,7 +104,7 @@ public class KotlinFindClassUsagesHandler( } if (kotlinOptions.isUsages && classOrObject is JetObjectDeclaration && classOrObject.isCompanion()) { - if (!processClassObjectInternalReferences(classOrObject, referenceProcessor)) { + if (!processCompanionObjectInternalReferences(classOrObject, referenceProcessor)) { return false } } @@ -145,20 +146,19 @@ public class KotlinFindClassUsagesHandler( return usagesQuery.forEach(processor) } - private fun processClassObjectInternalReferences(classObject: JetObjectDeclaration, - processor: Processor): Boolean { - val klass = classObject.getStrictParentOfType() ?: return true - val companionObjectDescriptor = classObject.descriptor + private fun processCompanionObjectInternalReferences(companionObject: JetObjectDeclaration, + processor: Processor): Boolean { + val klass = companionObject.getStrictParentOfType() ?: return true + val companionObjectDescriptor = companionObject.descriptor var stop: Boolean = false klass.acceptChildren(object : JetVisitorVoid() { override fun visitJetElement(element: JetElement) { - if (element == classObject) return // skip companion object itself + if (element == companionObject) return // skip companion object itself if (stop) return element.acceptChildren(this) val bindingContext = element.analyze() - val call = bindingContext[BindingContext.CALL, element] ?: return - val resolvedCall = bindingContext[BindingContext.RESOLVED_CALL, call] ?: return + val resolvedCall = bindingContext[BindingContext.CALL, element]?.getResolvedCall(bindingContext) ?: return if ((resolvedCall.getDispatchReceiver() as? ClassReceiver)?.getDeclarationDescriptor() == companionObjectDescriptor || (resolvedCall.getExtensionReceiver() as? ClassReceiver)?.getDeclarationDescriptor() == companionObjectDescriptor) { element.getReferences().forEach { diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt index d577ae8b993..b42d0c59c75 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt @@ -102,11 +102,7 @@ public abstract class KotlinFindUsagesHandler(psiElement: T, protected fun createReferenceProcessor(usageInfoProcessor: Processor): Processor { val uniqueProcessor = CommonProcessors.UniqueProcessor(usageInfoProcessor) - return object: Processor { - override fun process(t: PsiReference): Boolean { - return KotlinFindUsagesHandler.processUsage(uniqueProcessor, t) - } - } + return Processor { KotlinFindUsagesHandler.processUsage(uniqueProcessor, it) } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinTypeParameterFindUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinTypeParameterFindUsagesHandler.kt index fd3962d1c99..1577700bfa2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinTypeParameterFindUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinTypeParameterFindUsagesHandler.kt @@ -40,12 +40,7 @@ public class KotlinTypeParameterFindUsagesHandler( } protected override fun searchReferences(element: PsiElement, processor: Processor, options: FindUsagesOptions): Boolean { - for (reference in ReferencesSearch.search(element)) { - if (!KotlinFindUsagesHandler.processUsage(processor, reference)) { - return false - } - } - return true + return ReferencesSearch.search(element).all { KotlinFindUsagesHandler.processUsage(processor, it ) } } public override fun getFindUsagesOptions(dataContext: DataContext?): FindUsagesOptions {