diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt index f85e0feccae..501466cc6fd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt @@ -159,6 +159,9 @@ class HeaderImplDeclarationChecker(val moduleToCheck: ModuleDescriptor? = null) fun MemberDescriptor.findCompatibleImplForHeader(): List = findImplForHeader(this, false)?.get(Compatible).orEmpty() + fun MemberDescriptor.findCompatibleHeaderForImpl(): List = + findHeaderForImpl(this)?.get(Compatible).orEmpty() + private fun CallableMemberDescriptor.findNamesakesFromTheSameModule(): Collection { val packageFqName = (containingDeclaration as? PackageFragmentDescriptor)?.fqName ?: return emptyList() val myModule = moduleToCheck ?: module diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt index c003c8f63f1..9b0b2d4c551 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt @@ -17,7 +17,9 @@ package org.jetbrains.kotlin.idea.highlighter.markers import org.jetbrains.kotlin.analyzer.ModuleInfo -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.MemberDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.idea.caches.resolve.ModuleProductionSourceInfo import org.jetbrains.kotlin.idea.caches.resolve.ModuleTestSourceInfo import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor @@ -49,8 +51,8 @@ private enum class SourceKind { NONE, PRODUCTION, TEST } fun ModuleDescriptor.hasDeclarationOf(descriptor: MemberDescriptor) = declarationOf(descriptor) != null private fun ModuleDescriptor.declarationOf(descriptor: MemberDescriptor): DeclarationDescriptor? = - with (HeaderImplDeclarationChecker(this)) { - descriptor.findCompatibleImplForHeader().firstOrNull { it.isHeader } + with(HeaderImplDeclarationChecker(this)) { + descriptor.findCompatibleHeaderForImpl().firstOrNull() } fun getHeaderDeclarationTooltip(declaration: KtDeclaration): String? { diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt index 033883cb0d9..1df4ed52db2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt @@ -18,7 +18,9 @@ package org.jetbrains.kotlin.idea.highlighter.markers import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator import com.intellij.ide.util.DefaultPsiElementCellRenderer -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.MemberDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.core.toDescriptor import org.jetbrains.kotlin.psi.KtDeclaration @@ -32,8 +34,8 @@ fun ModuleDescriptor.hasImplementationsOf(descriptor: MemberDescriptor) = implementationsOf(descriptor).isNotEmpty() private fun ModuleDescriptor.implementationsOf(descriptor: MemberDescriptor): List = - with (HeaderImplDeclarationChecker(this)) { - descriptor.findCompatibleImplForHeader().filter { it.isImpl } + with(HeaderImplDeclarationChecker(this)) { + descriptor.findCompatibleImplForHeader() } fun getPlatformImplementationTooltip(declaration: KtDeclaration): String? { diff --git a/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt b/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt index a6a9f3856bd..bcfed098a58 100644 --- a/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt +++ b/idea/testData/multiModuleLineMarker/fromCommonToJvmImpl/jvm/jvm.kt @@ -1,5 +1,5 @@ impl class Header { - impl fun foo() = 42 + impl fun foo() = 42 } impl fun foo(arg: Int) = arg.toString()