Use correct function to find header for impl in IDE
Also do not call isHeader/isImpl because the returned declarations are guaranteed to be isHeader in findCompatibleHeaderForImpl and isImpl in findCompatibleImplForHeader
This commit is contained in:
+3
@@ -159,6 +159,9 @@ class HeaderImplDeclarationChecker(val moduleToCheck: ModuleDescriptor? = null)
|
||||
fun MemberDescriptor.findCompatibleImplForHeader(): List<MemberDescriptor> =
|
||||
findImplForHeader(this, false)?.get(Compatible).orEmpty()
|
||||
|
||||
fun MemberDescriptor.findCompatibleHeaderForImpl(): List<MemberDescriptor> =
|
||||
findHeaderForImpl(this)?.get(Compatible).orEmpty()
|
||||
|
||||
private fun CallableMemberDescriptor.findNamesakesFromTheSameModule(): Collection<CallableMemberDescriptor> {
|
||||
val packageFqName = (containingDeclaration as? PackageFragmentDescriptor)?.fqName ?: return emptyList()
|
||||
val myModule = moduleToCheck ?: module
|
||||
|
||||
@@ -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? {
|
||||
|
||||
@@ -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<DeclarationDescriptor> =
|
||||
with (HeaderImplDeclarationChecker(this)) {
|
||||
descriptor.findCompatibleImplForHeader().filter { it.isImpl }
|
||||
with(HeaderImplDeclarationChecker(this)) {
|
||||
descriptor.findCompatibleImplForHeader()
|
||||
}
|
||||
|
||||
fun getPlatformImplementationTooltip(declaration: KtDeclaration): String? {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
impl class <lineMarker>Header</lineMarker> {
|
||||
impl fun foo() = 42
|
||||
impl fun <lineMarker>foo</lineMarker>() = 42
|
||||
}
|
||||
|
||||
impl fun <lineMarker>foo</lineMarker>(arg: Int) = arg.toString()
|
||||
|
||||
Reference in New Issue
Block a user