PlainTextPasteImportResolver: use relevant facade for Java classes
Fixes EA-75803 for this particular case
This commit is contained in:
+1
-1
@@ -369,7 +369,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
|
|||||||
|
|
||||||
override fun getResolutionFacadeByFile(file: PsiFile, platform: TargetPlatform): ResolutionFacade {
|
override fun getResolutionFacadeByFile(file: PsiFile, platform: TargetPlatform): ResolutionFacade {
|
||||||
assert(file !is PsiCodeFragment)
|
assert(file !is PsiCodeFragment)
|
||||||
assert(ProjectRootsUtil.isInProjectSource(file))
|
assert(ProjectRootsUtil.isInProjectOrLibraryContent(file))
|
||||||
val moduleInfo = file.getModuleInfo()
|
val moduleInfo = file.getModuleInfo()
|
||||||
return getResolutionFacadeByModuleInfo(moduleInfo, platform)
|
return getResolutionFacadeByModuleInfo(moduleInfo, platform)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,17 +19,20 @@ package org.jetbrains.kotlin.idea.conversion.copy
|
|||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.search.PsiShortNamesCache
|
import com.intellij.psi.search.PsiShortNamesCache
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
|
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||||
import org.jetbrains.kotlin.idea.core.isVisible
|
import org.jetbrains.kotlin.idea.core.isVisible
|
||||||
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||||
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
|
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
|
import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|
||||||
@@ -119,7 +122,18 @@ class PlainTextPasteImportResolver(val dataForConversion: DataForConversion, val
|
|||||||
val referenceName = reference.referenceName!!
|
val referenceName = reference.referenceName!!
|
||||||
if (referenceName in failedToResolveReferenceNames) return false
|
if (referenceName in failedToResolveReferenceNames) return false
|
||||||
val classes = shortNameCache.getClassesByName(referenceName, scope)
|
val classes = shortNameCache.getClassesByName(referenceName, scope)
|
||||||
.map { it to it.resolveToDescriptor(resolutionFacade) }
|
.mapNotNull { psiClass ->
|
||||||
|
val containingFile = psiClass.containingFile
|
||||||
|
if (ProjectRootsUtil.isInProjectOrLibraryContent(containingFile)) {
|
||||||
|
val resolutionFacade = KotlinCacheService.getInstance(project).getResolutionFacadeByFile(
|
||||||
|
containingFile, JvmPlatform
|
||||||
|
)
|
||||||
|
psiClass to psiClass.resolveToDescriptor(resolutionFacade)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
.filter { canBeImported(it.second) }
|
.filter { canBeImported(it.second) }
|
||||||
|
|
||||||
classes.find { (_, descriptor) -> JavaToKotlinClassMap.mapPlatformClass(descriptor!!).isNotEmpty() }
|
classes.find { (_, descriptor) -> JavaToKotlinClassMap.mapPlatformClass(descriptor!!).isNotEmpty() }
|
||||||
|
|||||||
Reference in New Issue
Block a user