EA-210234: Fix invalid access to Java resolution facade
Do not try to get Java resolution facade for non-Java PSI elements
This commit is contained in:
+6
-3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.search.usagesSearch.operators
|
package org.jetbrains.kotlin.idea.search.usagesSearch.operators
|
||||||
|
|
||||||
|
import com.intellij.lang.java.JavaLanguage
|
||||||
import com.intellij.openapi.progress.ProgressIndicatorProvider
|
import com.intellij.openapi.progress.ProgressIndicatorProvider
|
||||||
import com.intellij.openapi.progress.util.ProgressWrapper
|
import com.intellij.openapi.progress.util.ProgressWrapper
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
@@ -19,6 +20,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType
|
|||||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaOrKotlinMemberDescriptor
|
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaOrKotlinMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
|
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
|
||||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinRequestResultProcessor
|
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinRequestResultProcessor
|
||||||
@@ -201,9 +203,10 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected open fun resolveTargetToDescriptor(): FunctionDescriptor? {
|
protected open fun resolveTargetToDescriptor(): FunctionDescriptor? {
|
||||||
return when (targetDeclaration) {
|
return when {
|
||||||
is KtDeclaration -> targetDeclaration.resolveToDescriptorIfAny(BodyResolveMode.FULL)
|
targetDeclaration is KtDeclaration -> targetDeclaration.resolveToDescriptorIfAny(BodyResolveMode.FULL)
|
||||||
is PsiMember -> targetDeclaration.getJavaOrKotlinMemberDescriptor()
|
targetDeclaration is PsiMember && targetDeclaration.hasJavaResolutionFacade() ->
|
||||||
|
targetDeclaration.getJavaOrKotlinMemberDescriptor()
|
||||||
else -> null
|
else -> null
|
||||||
} as? FunctionDescriptor
|
} as? FunctionDescriptor
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations
|
package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations
|
||||||
|
|
||||||
|
import com.intellij.lang.java.JavaLanguage
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.module.ModuleUtilCore
|
import com.intellij.openapi.module.ModuleUtilCore
|
||||||
import com.intellij.openapi.module.impl.scopes.JdkScope
|
import com.intellij.openapi.module.impl.scopes.JdkScope
|
||||||
@@ -35,6 +36,7 @@ import org.jetbrains.kotlin.idea.caches.project.getModuleInfoByVirtualFile
|
|||||||
import org.jetbrains.kotlin.idea.caches.project.implementedModules
|
import org.jetbrains.kotlin.idea.caches.project.implementedModules
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaMemberDescriptor
|
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||||
import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware
|
import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware
|
||||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||||
@@ -459,9 +461,9 @@ class MoveConflictChecker(
|
|||||||
val target = ref.resolve() ?: return@forEach
|
val target = ref.resolve() ?: return@forEach
|
||||||
if (isToBeMoved(target)) return@forEach
|
if (isToBeMoved(target)) return@forEach
|
||||||
|
|
||||||
val targetDescriptor = when (target) {
|
val targetDescriptor = when {
|
||||||
is KtDeclaration -> target.unsafeResolveToDescriptor()
|
target is KtDeclaration -> target.unsafeResolveToDescriptor()
|
||||||
is PsiMember -> target.getJavaMemberDescriptor()
|
target is PsiMember && target.hasJavaResolutionFacade() -> target.getJavaMemberDescriptor()
|
||||||
else -> null
|
else -> null
|
||||||
} as? DeclarationDescriptorWithVisibility ?: return@forEach
|
} as? DeclarationDescriptorWithVisibility ?: return@forEach
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user