Show expect / actual gutter even for incomplete compatibility
So #KT-18445 Fixed So #KT-21115 Fixed
This commit is contained in:
@@ -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<DeclarationDescriptor> =
|
||||
fun ModuleDescriptor.actualsFor(descriptor: MemberDescriptor, checkCompatible: Boolean = false): List<DeclarationDescriptor> =
|
||||
with(ExpectedActualResolver) {
|
||||
if (checkCompatible) {
|
||||
descriptor.findCompatibleActualForExpected(this@actualsFor)
|
||||
|
||||
@@ -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<ClassDescriptor>()?.isExpect == true
|
||||
return this.hasExpectModifier() || this.descriptor.safeAs<ClassDescriptor>()?.isExpect == true
|
||||
}
|
||||
|
||||
internal fun DeclarationDescriptor.liftToExpected(): DeclarationDescriptor? {
|
||||
|
||||
@@ -2,6 +2,10 @@ expect class <lineMarker>Header</lineMarker> {
|
||||
fun <lineMarker>foo</lineMarker>(): Int
|
||||
}
|
||||
|
||||
expect class <lineMarker>Incomplete</lineMarker> {
|
||||
fun foo(): Int
|
||||
}
|
||||
|
||||
expect fun <lineMarker>foo</lineMarker>(arg: Int): String
|
||||
|
||||
expect val <lineMarker>flag</lineMarker>: Boolean
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,6 +2,8 @@ actual class <lineMarker>Header</lineMarker> {
|
||||
actual fun <lineMarker>foo</lineMarker>() = 42
|
||||
}
|
||||
|
||||
actual class <lineMarker>Incomplete</lineMarker>
|
||||
|
||||
actual fun <lineMarker>foo</lineMarker>(arg: Int) = arg.toString()
|
||||
|
||||
actual val <lineMarker>flag</lineMarker> = true
|
||||
|
||||
Reference in New Issue
Block a user