[FIR] Implement EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE

^KT-60367 Fixed
KT review: https://jetbrains.team/p/kt/reviews/14064/timeline
IJ review: https://jetbrains.team/p/ij/reviews/124657/timeline
This commit is contained in:
Nikita Bobko
2024-01-17 19:36:28 +01:00
committed by teamcity
parent b317a88536
commit c214c5445a
25 changed files with 254 additions and 36 deletions
@@ -0,0 +1,11 @@
// MODULE: m1-common
// FILE: common.kt
expect class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>A<!>
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>A<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>B<!>
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>B<!>
@@ -0,0 +1,11 @@
// MODULE: m1-common
// FILE: common.kt
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class A<!>
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class A<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class B<!>
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class B<!>
@@ -0,0 +1,15 @@
// MODULE: m1-common
// FILE: common.kt
expect class A
// FILE: common2.kt
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>A<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>B<!>
// FILE: jvm2.kt
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>B<!>
@@ -0,0 +1,15 @@
// MODULE: m1-common
// FILE: common.kt
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class A<!>
// FILE: common2.kt
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class A<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class B<!>
// FILE: jvm2.kt
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class B<!>
@@ -0,0 +1,15 @@
// MODULE: m1-common
// FILE: common.kt
expect class A
// FILE: common2.kt
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>A<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect class B
// FILE: jvm2.kt
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>B<!>
@@ -0,0 +1,13 @@
// MODULE: m1-common
// FILE: common.kt
expect fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>()
// FILE: common2.kt
actual fun <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>() {}
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>()
// FILE: jvm2.kt
actual fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>() {}
@@ -0,0 +1,13 @@
// MODULE: m1-common
// FILE: common.kt
expect fun <!AMBIGUOUS_ACTUALS{JVM}, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>()
// FILE: common2.kt
actual fun <!AMBIGUOUS_EXPECTS{JVM}, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{JVM}!>main<!>() {}
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
expect fun <!AMBIGUOUS_ACTUALS, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>()
// FILE: jvm2.kt
actual fun <!AMBIGUOUS_EXPECTS, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>main<!>() {}
@@ -1,67 +1,67 @@
// MODULE: common
// TARGET_PLATFORM: Common
expect class CommonClass {
expect class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>CommonClass<!> {
fun memberFun()
val memberProp: Int
class Nested
inner class Inner
}
actual class <!ACTUAL_WITHOUT_EXPECT!>CommonClass<!> {
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>CommonClass<!> {
actual fun <!ACTUAL_WITHOUT_EXPECT!>memberFun<!>() {}
actual val <!ACTUAL_WITHOUT_EXPECT!>memberProp<!>: Int = 42
actual class <!ACTUAL_WITHOUT_EXPECT!>Nested<!>
actual inner class <!ACTUAL_WITHOUT_EXPECT!>Inner<!>
}
expect fun commonFun()
actual fun <!ACTUAL_WITHOUT_EXPECT!>commonFun<!>() {}
expect fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>commonFun<!>()
actual fun <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>commonFun<!>() {}
expect val commonProperty: String
actual val <!ACTUAL_WITHOUT_EXPECT!>commonProperty<!>: String
expect val <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>commonProperty<!>: String
actual val <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>commonProperty<!>: String
get() = "hello"
// MODULE: intermediate()()(common)
// TARGET_PLATFORM: Common
expect class IntermediateClass {
expect class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>IntermediateClass<!> {
fun memberFun()
val memberProp: Int
class Nested
inner class Inner
}
actual class <!ACTUAL_WITHOUT_EXPECT!>IntermediateClass<!> {
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>IntermediateClass<!> {
actual fun <!ACTUAL_WITHOUT_EXPECT!>memberFun<!>() {}
actual val <!ACTUAL_WITHOUT_EXPECT!>memberProp<!>: Int = 42
actual class <!ACTUAL_WITHOUT_EXPECT!>Nested<!>
actual inner class <!ACTUAL_WITHOUT_EXPECT!>Inner<!>
}
expect fun intermediateFun()
actual fun <!ACTUAL_WITHOUT_EXPECT!>intermediateFun<!>() {}
expect fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>intermediateFun<!>()
actual fun <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>intermediateFun<!>() {}
expect val intermediateProperty: String
actual val <!ACTUAL_WITHOUT_EXPECT!>intermediateProperty<!>: String
expect val <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>intermediateProperty<!>: String
actual val <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>intermediateProperty<!>: String
get() = "hello"
// MODULE: main()()(intermediate)
expect class PlatformClass {
expect class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>PlatformClass<!> {
fun memberFun()
val memberProp: Int
class Nested
inner class Inner
}
actual class <!ACTUAL_WITHOUT_EXPECT!>PlatformClass<!> {
actual class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>PlatformClass<!> {
actual fun <!ACTUAL_WITHOUT_EXPECT!>memberFun<!>() {}
actual val <!ACTUAL_WITHOUT_EXPECT!>memberProp<!>: Int = 42
actual class <!ACTUAL_WITHOUT_EXPECT!>Nested<!>
actual inner class <!ACTUAL_WITHOUT_EXPECT!>Inner<!>
}
expect fun platformFun()
actual fun <!ACTUAL_WITHOUT_EXPECT!>platformFun<!>() {}
expect fun <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>platformFun<!>()
actual fun <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>platformFun<!>() {}
expect val platformProperty: String
actual val <!ACTUAL_WITHOUT_EXPECT!>platformProperty<!>: String
expect val <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>platformProperty<!>: String
actual val <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>platformProperty<!>: String
get() = "hello"
@@ -13,10 +13,10 @@ val callableKind: Int = 1
expect fun <T> typeParameterCount()
fun typeParameterCount() {}
expect enum class EnumEntries {
expect enum class <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>EnumEntries<!> {
ONE, TWO;
}
actual enum class <!ACTUAL_WITHOUT_EXPECT!>EnumEntries<!> {
actual enum class <!ACTUAL_WITHOUT_EXPECT, EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>EnumEntries<!> {
ONE;
}