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
|
||||
|
||||
import com.intellij.lang.java.JavaLanguage
|
||||
import com.intellij.openapi.progress.ProgressIndicatorProvider
|
||||
import com.intellij.openapi.progress.util.ProgressWrapper
|
||||
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.resolveToDescriptorIfAny
|
||||
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.search.ideaExtensions.KotlinReferencesSearchOptions
|
||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinRequestResultProcessor
|
||||
@@ -201,9 +203,10 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
|
||||
}
|
||||
|
||||
protected open fun resolveTargetToDescriptor(): FunctionDescriptor? {
|
||||
return when (targetDeclaration) {
|
||||
is KtDeclaration -> targetDeclaration.resolveToDescriptorIfAny(BodyResolveMode.FULL)
|
||||
is PsiMember -> targetDeclaration.getJavaOrKotlinMemberDescriptor()
|
||||
return when {
|
||||
targetDeclaration is KtDeclaration -> targetDeclaration.resolveToDescriptorIfAny(BodyResolveMode.FULL)
|
||||
targetDeclaration is PsiMember && targetDeclaration.hasJavaResolutionFacade() ->
|
||||
targetDeclaration.getJavaOrKotlinMemberDescriptor()
|
||||
else -> null
|
||||
} as? FunctionDescriptor
|
||||
}
|
||||
|
||||
+5
-3
@@ -5,6 +5,7 @@
|
||||
|
||||
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.ModuleUtilCore
|
||||
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.resolve.*
|
||||
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.core.isInTestSourceContentKotlinAware
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
@@ -459,9 +461,9 @@ class MoveConflictChecker(
|
||||
val target = ref.resolve() ?: return@forEach
|
||||
if (isToBeMoved(target)) return@forEach
|
||||
|
||||
val targetDescriptor = when (target) {
|
||||
is KtDeclaration -> target.unsafeResolveToDescriptor()
|
||||
is PsiMember -> target.getJavaMemberDescriptor()
|
||||
val targetDescriptor = when {
|
||||
target is KtDeclaration -> target.unsafeResolveToDescriptor()
|
||||
target is PsiMember && target.hasJavaResolutionFacade() -> target.getJavaMemberDescriptor()
|
||||
else -> null
|
||||
} as? DeclarationDescriptorWithVisibility ?: return@forEach
|
||||
|
||||
|
||||
Reference in New Issue
Block a user