[FIR] Switch FirExpectActualDeclarationChecker to Platform checker
^KT-66028 Fixed
This commit is contained in:
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class A() : B<!>
|
||||
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class C() : B<!>
|
||||
expect open class B()
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
actual class A : B() {
|
||||
// "Nothing to override" in metadata compilation. Unfortunately we don't check metadata compilation in diagnostic tests
|
||||
override fun foo() {}
|
||||
}
|
||||
actual class C : B() {
|
||||
// Nothing to override in platform compilation.
|
||||
fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>() {}
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class B {
|
||||
open fun foo() {}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{COMMON}!>class A<!>() : B
|
||||
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{COMMON}!>class C<!>() : B
|
||||
expect open class B()
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class A<!> : B() {
|
||||
// "Nothing to override" in metadata compilation. Unfortunately we don't check metadata compilation in diagnostic tests
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun foo() {}
|
||||
}
|
||||
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class C<!> : B() {
|
||||
// Nothing to override in platform compilation.
|
||||
fun <!VIRTUAL_MEMBER_HIDDEN{JVM}!>foo<!>() {}
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class B {
|
||||
open fun foo() {}
|
||||
}
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class A() : B
|
||||
expect class C() : B
|
||||
expect open class B()
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
actual class A : B() {
|
||||
// "Nothing to override" in metadata compilation. Unfortunately we don't check metadata compilation in diagnostic tests
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun foo() {}
|
||||
}
|
||||
actual class C : B() {
|
||||
// Nothing to override in platform compilation.
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class B {
|
||||
open fun foo() {}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo() {
|
||||
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun foo()<!>
|
||||
}<!>
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
expect open class Base() {}
|
||||
|
||||
actual class Foo : Base() {
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class Base {
|
||||
fun foo() {}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{COMMON}!>class Foo<!>() {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
expect open class Base() {}
|
||||
|
||||
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class Foo<!> : Base() {
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class Base {
|
||||
fun foo() {}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class Foo() {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
expect open class Base() {}
|
||||
|
||||
actual class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>Foo<!> : Base() {
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class Base {
|
||||
fun foo() {}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect abstract class Foo() {
|
||||
abstract fun foo()
|
||||
}
|
||||
|
||||
class Impl : Foo() {}
|
||||
|
||||
fun common() {
|
||||
Impl().foo()
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
interface I {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect open class Base() {}
|
||||
|
||||
actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>Foo<!> : Base(), I {
|
||||
// In non-KMP world, these two f/o would squash into a single f/o final fun foo()
|
||||
// f/o abstract fun foo(): Unit in intermediate
|
||||
// f/o final fun foo(): Unit in platform
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class Base {
|
||||
fun foo() {}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect abstract <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{COMMON}!>class Foo<!>() {
|
||||
abstract fun foo()
|
||||
}
|
||||
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED, ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED{COMMON}!>class Impl<!> : Foo() {}
|
||||
|
||||
fun common() {
|
||||
Impl().foo()
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
interface I {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect open class Base() {}
|
||||
|
||||
actual abstract <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS{JVM}!>Foo<!><!> : Base(), I {
|
||||
// In non-KMP world, these two f/o would squash into a single f/o final fun foo()
|
||||
// f/o abstract fun foo(): Unit in intermediate
|
||||
// f/o final fun foo(): Unit in platform
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class Base {
|
||||
fun foo() {}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect abstract class Foo() {
|
||||
abstract fun foo()
|
||||
}
|
||||
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class Impl<!> : Foo() {}
|
||||
|
||||
fun common() {
|
||||
Impl().foo()
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
interface I {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect open class Base() {}
|
||||
|
||||
actual abstract class Foo : Base(), I {
|
||||
// In non-KMP world, these two f/o would squash into a single f/o final fun foo()
|
||||
// f/o abstract fun foo(): Unit in intermediate
|
||||
// f/o final fun foo(): Unit in platform
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual open class Base {
|
||||
fun foo() {}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class A {
|
||||
fun foo(x: String): String
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class B
|
||||
|
||||
// K1 EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE false positive
|
||||
actual class A {
|
||||
actual fun <!ACTUAL_WITHOUT_EXPECT!>foo<!>(x: B) = "a"
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual typealias B = String
|
||||
@@ -0,0 +1,17 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE{COMMON}!>class A<!> {
|
||||
fun foo(x: String): String
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class B
|
||||
|
||||
// K1 EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE false positive
|
||||
actual <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class A<!> {
|
||||
actual fun foo(x: B) = "a"
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual typealias B = String
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: common
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class A {
|
||||
fun foo(x: String): String
|
||||
}
|
||||
|
||||
// MODULE: intermediate()()(common)
|
||||
// TARGET_PLATFORM: Common
|
||||
expect class B
|
||||
|
||||
// K1 EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE false positive
|
||||
actual class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>A<!> {
|
||||
actual fun <!ACTUAL_WITHOUT_EXPECT!>foo<!>(x: B) = "a"
|
||||
}
|
||||
|
||||
// MODULE: main()()(intermediate)
|
||||
actual typealias B = String
|
||||
Reference in New Issue
Block a user