From 7d51be17c80e98a6a1e2834fec04d62df7c8d353 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 24 Dec 2018 15:00:57 +0300 Subject: [PATCH] Extract 'PsiElement.hasJavaResolutionFacade()' (related to KT-28199) --- .../kotlin/idea/caches/resolve/util/JavaResolveExtension.kt | 2 ++ .../KotlinConstructorDelegationCallReferenceSearcher.kt | 3 ++- .../ideaExtensions/KotlinConventionMethodReferencesSearcher.kt | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt index cd021f1c76e..27b2daee012 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt @@ -149,6 +149,8 @@ private fun Collection.findByJavaElemen } } +fun PsiElement.hasJavaResolutionFacade(): Boolean = this.originalElement.containingFile != null + fun PsiElement.javaResolutionFacade() = KotlinCacheService.getInstance(project).getResolutionFacadeByFile( this.originalElement.containingFile ?: reportCouldNotCreateJavaFacade(), diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt index b515419d71a..f4cf4217e2a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.application.QueryExecutorBase import com.intellij.psi.PsiReference import com.intellij.psi.search.searches.MethodReferencesSearch.SearchParameters import org.jetbrains.kotlin.compatibility.ExecutorProcessor +import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages @@ -27,7 +28,7 @@ class KotlinConstructorDelegationCallReferenceSearcher : QueryExecutorBase) { val method = queryParameters.method if (!method.isConstructor) return - if (method.originalElement.containingFile == null) return + if (!method.hasJavaResolutionFacade()) return method.processDelegationCallConstructorUsages(method.useScope.intersectWith(queryParameters.effectiveSearchScope)) { it.calleeExpression?.mainReference?.let { consumer.process(it) } ?: true diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConventionMethodReferencesSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConventionMethodReferencesSearcher.kt index a2819eb5963..4beb1c59eb7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConventionMethodReferencesSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConventionMethodReferencesSearcher.kt @@ -20,12 +20,13 @@ import com.intellij.openapi.application.QueryExecutorBase import com.intellij.psi.PsiReference import com.intellij.psi.search.searches.MethodReferencesSearch import org.jetbrains.kotlin.compatibility.ExecutorProcessor +import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade import org.jetbrains.kotlin.idea.search.usagesSearch.operators.OperatorReferenceSearcher class KotlinConventionMethodReferencesSearcher : QueryExecutorBase(true) { override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor) { val method = queryParameters.method - if (method.originalElement.containingFile == null) return + if (!method.hasJavaResolutionFacade()) return val operatorSearcher = OperatorReferenceSearcher.create( queryParameters.method,