diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt index 91d14223ec8..004dc62b6d2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt @@ -19,6 +19,10 @@ package org.jetbrains.kotlin.idea.highlighter.markers import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator import com.intellij.ide.util.DefaultPsiElementCellRenderer import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analyzer.ModuleInfo +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo +import org.jetbrains.kotlin.idea.core.isAndroidModule import org.jetbrains.kotlin.idea.core.toDescriptor import org.jetbrains.kotlin.idea.util.actualsForExpected import org.jetbrains.kotlin.psi.KtDeclaration @@ -27,25 +31,36 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.getMultiTargetPlatform import java.awt.event.MouseEvent +private fun ModuleDescriptor?.getMultiTargetPlatformName(): String? { + if (this == null) return null + val moduleInfo = getCapability(ModuleInfo.Capability) as? ModuleSourceInfo + if (moduleInfo != null && moduleInfo.module.isAndroidModule()) { + return "Android" + } + val platform = getMultiTargetPlatform() ?: return null + return when (platform) { + is MultiTargetPlatform.Specific -> + platform.platform + MultiTargetPlatform.Common -> + "common" + } +} + fun getPlatformActualTooltip(declaration: KtDeclaration): String? { val actualDeclarations = declaration.actualsForExpected() if (actualDeclarations.isEmpty()) return null return actualDeclarations.asSequence() .mapNotNull { it.toDescriptor()?.module } - .groupBy { it.getMultiTargetPlatform() } + .groupBy { it.getMultiTargetPlatformName() } .filter { (platform, _) -> platform != null } .entries .joinToString(prefix = "Has actuals in ") { (platform, modules) -> val modulesSuffix = if (modules.size <= 1) "" else " (${modules.size} modules)" - when (platform) { - is MultiTargetPlatform.Specific -> - "${platform.platform}$modulesSuffix" - MultiTargetPlatform.Common -> - "common$modulesSuffix" - null -> - throw AssertionError("Platform should not be null") + if (platform == null) { + throw AssertionError("Platform should not be null") } + platform + modulesSuffix } }