Search for source of platform binary also in common sources
So #KT-20971 Fixed
This commit is contained in:
+15
-2
@@ -19,6 +19,7 @@ import com.intellij.util.containers.ContainerUtil
|
|||||||
import gnu.trove.THashSet
|
import gnu.trove.THashSet
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.BinaryModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.getBinaryLibrariesModuleInfos
|
import org.jetbrains.kotlin.idea.caches.resolve.getBinaryLibrariesModuleInfos
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.getLibrarySourcesModuleInfos
|
import org.jetbrains.kotlin.idea.caches.resolve.getLibrarySourcesModuleInfos
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
@@ -32,6 +33,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||||
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
|
|
||||||
object SourceNavigationHelper {
|
object SourceNavigationHelper {
|
||||||
private val LOG = Logger.getInstance(SourceNavigationHelper::class.java)
|
private val LOG = Logger.getInstance(SourceNavigationHelper::class.java)
|
||||||
@@ -53,8 +55,19 @@ object SourceNavigationHelper {
|
|||||||
val vFile = containingFile.virtualFile ?: return null
|
val vFile = containingFile.virtualFile ?: return null
|
||||||
|
|
||||||
return when (navigationKind) {
|
return when (navigationKind) {
|
||||||
NavigationKind.CLASS_FILES_TO_SOURCES -> getBinaryLibrariesModuleInfos(declaration.project, vFile)
|
NavigationKind.CLASS_FILES_TO_SOURCES -> {
|
||||||
.mapNotNull { it.sourcesModuleInfo?.sourceScope() }.union()
|
val binaryModuleInfos = getBinaryLibrariesModuleInfos(declaration.project, vFile)
|
||||||
|
binaryModuleInfos.map { binaryModuleInfo ->
|
||||||
|
val platform = binaryModuleInfo.platform
|
||||||
|
if (platform == null || platform == TargetPlatform.Common) {
|
||||||
|
listOf(binaryModuleInfo)
|
||||||
|
} else {
|
||||||
|
binaryModuleInfo.dependencies().filterIsInstance<BinaryModuleInfo>().filter {
|
||||||
|
it.platform == TargetPlatform.Common
|
||||||
|
} + binaryModuleInfo
|
||||||
|
}
|
||||||
|
}.flatten().mapNotNull { it.sourcesModuleInfo?.sourceScope() }.union()
|
||||||
|
}
|
||||||
|
|
||||||
NavigationKind.SOURCES_TO_CLASS_FILES -> getLibrarySourcesModuleInfos(declaration.project, vFile)
|
NavigationKind.SOURCES_TO_CLASS_FILES -> getLibrarySourcesModuleInfos(declaration.project, vFile)
|
||||||
.map { it.binariesModuleInfo.binariesScope() }.union()
|
.map { it.binariesModuleInfo.binariesScope() }.union()
|
||||||
|
|||||||
Reference in New Issue
Block a user