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 691b84e5937..894ea0d7f6f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt @@ -35,7 +35,7 @@ import java.awt.event.MouseEvent fun ModuleDescriptor.hasActualsFor(descriptor: MemberDescriptor) = actualsFor(descriptor).isNotEmpty() -fun ModuleDescriptor.actualsFor(descriptor: MemberDescriptor, checkCompatible: Boolean = true): List = +fun ModuleDescriptor.actualsFor(descriptor: MemberDescriptor, checkCompatible: Boolean = false): List = with(ExpectedActualResolver) { if (checkCompatible) { descriptor.findCompatibleActualForExpected(this@actualsFor) diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectedMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectedMarker.kt index be3529f865b..73d78e005ee 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectedMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectedMarker.kt @@ -29,14 +29,16 @@ import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver +import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver.Compatibility.* import org.jetbrains.kotlin.utils.addToStdlib.safeAs fun ModuleDescriptor.hasDeclarationOf(descriptor: MemberDescriptor) = declarationOf(descriptor) != null private fun ModuleDescriptor.declarationOf(descriptor: MemberDescriptor): DeclarationDescriptor? = - with(ExpectedActualResolver) { - descriptor.findCompatibleExpectedForActual(this@declarationOf).firstOrNull() - } + with(ExpectedActualResolver) { + val expectedCompatibilityMap = findExpectedForActual(descriptor, this@declarationOf) + expectedCompatibilityMap?.get(Compatible)?.firstOrNull() ?: expectedCompatibilityMap?.values?.flatten()?.firstOrNull() + } fun getExpectedDeclarationTooltip(declaration: KtDeclaration?): String? { val descriptor = declaration?.toDescriptor() as? MemberDescriptor ?: return null @@ -67,8 +69,7 @@ internal fun KtDeclaration.isExpectedOrExpectedClassMember(): Boolean { } internal fun KtClassOrObject.isExpected(): Boolean { - return this.hasExpectModifier() || - this.descriptor.safeAs()?.isExpect == true + return this.hasExpectModifier() || this.descriptor.safeAs()?.isExpect == true } internal fun DeclarationDescriptor.liftToExpected(): DeclarationDescriptor? { diff --git a/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/common/common.kt b/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/common/common.kt index eae24c519fd..6477429372c 100644 --- a/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/common/common.kt +++ b/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/common/common.kt @@ -2,6 +2,10 @@ expect class Header { fun foo(): Int } +expect class Incomplete { + fun foo(): Int +} + expect fun foo(arg: Int): String expect val flag: Boolean diff --git a/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/jvm/jvm.kt b/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/jvm/jvm.kt index a396157e35b..603022ab92b 100644 --- a/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/jvm/jvm.kt +++ b/idea/testData/multiModuleLineMarker/fromCommonToJvmHeader/jvm/jvm.kt @@ -4,6 +4,8 @@ actual class Header { actual fun foo() = 42 } +actual class Incomplete + actual fun foo(arg: Int) = arg.toString() actual val flag = true diff --git a/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/common/common.kt b/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/common/common.kt index af72b1d5f88..d17267ccf6b 100644 --- a/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/common/common.kt +++ b/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/common/common.kt @@ -4,6 +4,10 @@ expect class Header { fun foo(): Int } +expect class Incomplete { + fun foo(): Int +} + expect fun foo(arg: Int): String expect val flag: Boolean diff --git a/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt b/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt index 22299dbf5c6..6b880d726aa 100644 --- a/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt +++ b/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt @@ -2,6 +2,8 @@ actual class Header { actual fun foo() = 42 } +actual class Incomplete + actual fun foo(arg: Int) = arg.toString() actual val flag = true