[FE] Cover "implicit actualization"/"actual fake-overrides" KT-58544 with regression tests

Review: https://jetbrains.team/p/kt/reviews/11039/timeline
This commit is contained in:
Nikita Bobko
2023-06-13 13:10:32 +02:00
committed by teamcity
parent e4ae15b3f0
commit ab8913dee8
8 changed files with 162 additions and 0 deletions
@@ -0,0 +1,20 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
expect class HashMap {
val size: Int
}
expect abstract class AbstractMap {
val size: Int
}
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual abstract class AbstractMap() {
actual val size: Int = 0
}
actual class HashMap : AbstractMap()
@@ -0,0 +1,24 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
interface Map {
val size: Int
}
expect class HashMap : Map {
override val size: Int
}
expect abstract class AbstractMap : Map {
override val size: Int
}
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual abstract class AbstractMap() : Map {
actual override val size: Int = 0
}
actual class HashMap : AbstractMap(), Map
@@ -0,0 +1,15 @@
// WITH_STDLIB
// MODULE: m1-common
// FILE: common.kt
// K2: false positve INCOMPATIBLE_MATCHING: KT-60155
<!INCOMPATIBLE_MATCHING{JVM}!>public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
override val values: MutableCollection<V>
}<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
import java.util.AbstractMap
public actual abstract class AbstractMutableMap<K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
@@ -0,0 +1,15 @@
// WITH_STDLIB
// MODULE: m1-common
// FILE: common.kt
// K2: false positve INCOMPATIBLE_MATCHING: KT-60155
public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
override val values: MutableCollection<V>
}
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
import java.util.AbstractMap
public actual abstract class AbstractMutableMap<K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
@@ -0,0 +1,16 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
fun foo(): Int
}
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
interface FooProvider {
fun foo(): Int = 42
}
actual class Foo : FooProvider