diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt index 774faee8d8a..9cb880a284f 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt @@ -19,6 +19,7 @@ import com.intellij.util.containers.ContainerUtil import gnu.trove.THashSet import org.jetbrains.annotations.TestOnly 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.getLibrarySourcesModuleInfos 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.psi.* import org.jetbrains.kotlin.psi.debugText.getDebugText +import org.jetbrains.kotlin.resolve.TargetPlatform object SourceNavigationHelper { private val LOG = Logger.getInstance(SourceNavigationHelper::class.java) @@ -53,8 +55,19 @@ object SourceNavigationHelper { val vFile = containingFile.virtualFile ?: return null return when (navigationKind) { - NavigationKind.CLASS_FILES_TO_SOURCES -> getBinaryLibrariesModuleInfos(declaration.project, vFile) - .mapNotNull { it.sourcesModuleInfo?.sourceScope() }.union() + NavigationKind.CLASS_FILES_TO_SOURCES -> { + 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().filter { + it.platform == TargetPlatform.Common + } + binaryModuleInfo + } + }.flatten().mapNotNull { it.sourcesModuleInfo?.sourceScope() }.union() + } NavigationKind.SOURCES_TO_CLASS_FILES -> getLibrarySourcesModuleInfos(declaration.project, vFile) .map { it.binariesModuleInfo.binariesScope() }.union()