[KMP] Allow matching expect ctorless final classes to objects
both directly and via typealias. This is a possible fix to KT-59747
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class E01
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E02()<!>
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class E03<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E04 {
|
||||
constructor()
|
||||
}<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E05(e: E01)<!>
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E06 {
|
||||
constructor(e: E02)
|
||||
}<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface I01<!>
|
||||
|
||||
expect class M01 {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class ENUM01<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class ANNO01<!>
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual object E01
|
||||
actual object <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E02<!>
|
||||
actual object <!ACTUAL_WITHOUT_EXPECT!>E03<!>
|
||||
|
||||
actual object <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E04<!>
|
||||
|
||||
actual object <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E05<!>
|
||||
actual object <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E06<!>
|
||||
|
||||
actual object <!ACTUAL_WITHOUT_EXPECT!>I01<!>
|
||||
|
||||
actual object M01 {
|
||||
actual fun foo() {}
|
||||
}
|
||||
|
||||
actual object <!ACTUAL_WITHOUT_EXPECT!>ENUM01<!>
|
||||
|
||||
actual object <!ACTUAL_WITHOUT_EXPECT!>ANNO01<!>
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class E01
|
||||
expect class E02()
|
||||
expect open class E03
|
||||
|
||||
expect class E04 {
|
||||
constructor()
|
||||
}
|
||||
|
||||
expect class E05(e: E01)
|
||||
expect class E06 {
|
||||
constructor(e: E02)
|
||||
}
|
||||
|
||||
expect interface I01
|
||||
|
||||
expect class M01 {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect enum class ENUM01
|
||||
|
||||
expect annotation class ANNO01
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual object E01
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> E02
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> E03
|
||||
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> E04
|
||||
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> E05
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> E06
|
||||
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> I01
|
||||
|
||||
actual object M01 {
|
||||
actual fun foo() {}
|
||||
}
|
||||
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> ENUM01
|
||||
|
||||
actual <!ACTUAL_WITHOUT_EXPECT!>object<!> ANNO01
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class E01
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E02()<!>
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class E03<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E04 {
|
||||
constructor()
|
||||
}<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E05(e: E01)<!>
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E06 {
|
||||
constructor(e: E02)
|
||||
}<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface I01<!>
|
||||
|
||||
expect class M01 {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class ENUM01<!>
|
||||
|
||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class ANNO01<!>
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
object ActualObject {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
actual typealias E01 = ActualObject
|
||||
actual typealias <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E02<!> = ActualObject
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>E03<!> = ActualObject
|
||||
|
||||
actual typealias <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E04<!> = ActualObject
|
||||
|
||||
actual typealias <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E05<!> = ActualObject
|
||||
actual typealias <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>E06<!> = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>I01<!> = ActualObject
|
||||
|
||||
actual typealias M01 = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>ENUM01<!> = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>ANNO01<!> = ActualObject
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class E01
|
||||
expect class E02()
|
||||
expect open class E03
|
||||
|
||||
expect class E04 {
|
||||
constructor()
|
||||
}
|
||||
|
||||
expect class E05(e: E01)
|
||||
expect class E06 {
|
||||
constructor(e: E02)
|
||||
}
|
||||
|
||||
expect interface I01
|
||||
|
||||
expect class M01 {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect enum class ENUM01
|
||||
|
||||
expect annotation class ANNO01
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
object ActualObject {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
actual typealias E01 = ActualObject
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>E02<!> = ActualObject
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>E03<!> = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>E04<!> = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>E05<!> = ActualObject
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>E06<!> = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>I01<!> = ActualObject
|
||||
|
||||
actual typealias M01 = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>ENUM01<!> = ActualObject
|
||||
|
||||
actual typealias <!ACTUAL_WITHOUT_EXPECT!>ANNO01<!> = ActualObject
|
||||
Reference in New Issue
Block a user