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> =
|
fun MemberDescriptor.findCompatibleImplForHeader(): List<MemberDescriptor> =
|
||||||
findImplForHeader(this, false)?.get(Compatible).orEmpty()
|
findImplForHeader(this, false)?.get(Compatible).orEmpty()
|
||||||
|
|
||||||
|
fun MemberDescriptor.findCompatibleHeaderForImpl(): List<MemberDescriptor> =
|
||||||
|
findHeaderForImpl(this)?.get(Compatible).orEmpty()
|
||||||
|
|
||||||
private fun CallableMemberDescriptor.findNamesakesFromTheSameModule(): Collection<CallableMemberDescriptor> {
|
private fun CallableMemberDescriptor.findNamesakesFromTheSameModule(): Collection<CallableMemberDescriptor> {
|
||||||
val packageFqName = (containingDeclaration as? PackageFragmentDescriptor)?.fqName ?: return emptyList()
|
val packageFqName = (containingDeclaration as? PackageFragmentDescriptor)?.fqName ?: return emptyList()
|
||||||
val myModule = moduleToCheck ?: module
|
val myModule = moduleToCheck ?: module
|
||||||
|
|||||||
@@ -17,7 +17,9 @@
|
|||||||
package org.jetbrains.kotlin.idea.highlighter.markers
|
package org.jetbrains.kotlin.idea.highlighter.markers
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
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.ModuleProductionSourceInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.ModuleTestSourceInfo
|
import org.jetbrains.kotlin.idea.caches.resolve.ModuleTestSourceInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
|
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
|
fun ModuleDescriptor.hasDeclarationOf(descriptor: MemberDescriptor) = declarationOf(descriptor) != null
|
||||||
|
|
||||||
private fun ModuleDescriptor.declarationOf(descriptor: MemberDescriptor): DeclarationDescriptor? =
|
private fun ModuleDescriptor.declarationOf(descriptor: MemberDescriptor): DeclarationDescriptor? =
|
||||||
with (HeaderImplDeclarationChecker(this)) {
|
with(HeaderImplDeclarationChecker(this)) {
|
||||||
descriptor.findCompatibleImplForHeader().firstOrNull { it.isHeader }
|
descriptor.findCompatibleHeaderForImpl().firstOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHeaderDeclarationTooltip(declaration: KtDeclaration): String? {
|
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.codeInsight.daemon.impl.PsiElementListNavigator
|
||||||
import com.intellij.ide.util.DefaultPsiElementCellRenderer
|
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.caches.resolve.findModuleDescriptor
|
||||||
import org.jetbrains.kotlin.idea.core.toDescriptor
|
import org.jetbrains.kotlin.idea.core.toDescriptor
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
@@ -32,8 +34,8 @@ fun ModuleDescriptor.hasImplementationsOf(descriptor: MemberDescriptor) =
|
|||||||
implementationsOf(descriptor).isNotEmpty()
|
implementationsOf(descriptor).isNotEmpty()
|
||||||
|
|
||||||
private fun ModuleDescriptor.implementationsOf(descriptor: MemberDescriptor): List<DeclarationDescriptor> =
|
private fun ModuleDescriptor.implementationsOf(descriptor: MemberDescriptor): List<DeclarationDescriptor> =
|
||||||
with (HeaderImplDeclarationChecker(this)) {
|
with(HeaderImplDeclarationChecker(this)) {
|
||||||
descriptor.findCompatibleImplForHeader().filter { it.isImpl }
|
descriptor.findCompatibleImplForHeader()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPlatformImplementationTooltip(declaration: KtDeclaration): String? {
|
fun getPlatformImplementationTooltip(declaration: KtDeclaration): String? {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
impl class <lineMarker>Header</lineMarker> {
|
impl class <lineMarker>Header</lineMarker> {
|
||||||
impl fun foo() = 42
|
impl fun <lineMarker>foo</lineMarker>() = 42
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fun <lineMarker>foo</lineMarker>(arg: Int) = arg.toString()
|
impl fun <lineMarker>foo</lineMarker>(arg: Int) = arg.toString()
|
||||||
|
|||||||
Reference in New Issue
Block a user