Extract 'PsiElement.hasJavaResolutionFacade()' (related to KT-28199)
This commit is contained in:
+2
@@ -149,6 +149,8 @@ private fun <T : DeclarationDescriptorWithSource> Collection<T>.findByJavaElemen
|
||||
}
|
||||
}
|
||||
|
||||
fun PsiElement.hasJavaResolutionFacade(): Boolean = this.originalElement.containingFile != null
|
||||
|
||||
fun PsiElement.javaResolutionFacade() =
|
||||
KotlinCacheService.getInstance(project).getResolutionFacadeByFile(
|
||||
this.originalElement.containingFile ?: reportCouldNotCreateJavaFacade(),
|
||||
|
||||
+2
-1
@@ -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<PsiRe
|
||||
override fun processQuery(queryParameters: SearchParameters, consumer: ExecutorProcessor<PsiReference>) {
|
||||
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
|
||||
|
||||
+2
-1
@@ -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<PsiReference, MethodReferencesSearch.SearchParameters>(true) {
|
||||
override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) {
|
||||
val method = queryParameters.method
|
||||
if (method.originalElement.containingFile == null) return
|
||||
if (!method.hasJavaResolutionFacade()) return
|
||||
|
||||
val operatorSearcher = OperatorReferenceSearcher.create(
|
||||
queryParameters.method,
|
||||
|
||||
Reference in New Issue
Block a user