[IR] Split INCOMPATIBLE_MATCHING to EXPECT_ACTUAL_MISMATCH & EXPECT_ACTUAL_INCOMPATIBILITY

KT-62590

Review: https://jetbrains.team/p/kt/reviews/12750/timeline
This commit is contained in:
Nikita Bobko
2023-10-25 23:21:24 +02:00
committed by teamcity
parent dab69e38c4
commit ddc1ae9ac6
61 changed files with 145 additions and 119 deletions
@@ -5,7 +5,7 @@ open class Base {
open fun <T> foo(t: T) {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -7,7 +7,7 @@ open class Base {
open lateinit var green: String
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -5,7 +5,7 @@ interface Base {
fun foo()
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!> : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!> : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -3,7 +3,7 @@
interface Base {
fun foo()
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!>() : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!>() : Base<!>
// MODULE: m2-jvm()()(m1-common)
@@ -3,7 +3,7 @@
interface Base {
fun foo() {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect abstract class Foo() : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect abstract class Foo() : Base<!>
// MODULE: m2-jvm()()(m1-common)
@@ -5,7 +5,7 @@ open class Base {
open fun foo() {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -5,7 +5,7 @@ open class Base<T> {
open fun foo(t: T) {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<String><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<String><!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -5,7 +5,7 @@ open class Base {
open fun foo(param: Int) {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo1 : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo1 : Base<!>
expect open class Foo2 : Base
expect open class Foo3 {
open fun foo(param: Int)
@@ -6,7 +6,7 @@ open class Base {
protected set
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -5,7 +5,7 @@ open class Base {
open fun foo(vararg bar: Int) {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -5,7 +5,7 @@ open class Base {
protected open fun foo() {}
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -6,7 +6,7 @@ open class Base {
open fun foo(): Any = ""
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -7,7 +7,7 @@ open class Base {
open fun foo(): I = null!!
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo<T : I> : Base {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo<T : I> : Base {
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -5,7 +5,7 @@ open class Base<R> {
open fun foo(): R = null!!
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo<R, T : R> : Base<R> {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo<R, T : R> : Base<R> {
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -6,7 +6,7 @@ open class Base {
open fun foo(): String = ""
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -5,7 +5,7 @@ expect open class Base {
open fun foo(): MutableList<String>
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
}<!>
@@ -5,7 +5,7 @@ open class Base {
open val foo: Int = 1
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -8,7 +8,7 @@ open class Base() {
protected open fun overrideVisibility(): Any = ""
}
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
fun existingMethod()
val existingParam: Int
}<!>
@@ -2,8 +2,8 @@
// FILE: common.kt
annotation class Ann
<!INCOMPATIBLE_MATCHING{JVM}!>expect class A {
<!INCOMPATIBLE_MATCHING{JVM}!>class B {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class A {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>class B {
@Ann
fun foo()
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun missingOnActual()<!>
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}("A; A; some expected members have no actual ones")!>expect annotation class A<!INCOMPATIBLE_MATCHING{JVM}("<init>; <init>; some value parameter is vararg in one declaration and non-vararg in the other")!>(vararg val x: String)<!><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class A<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>(vararg val x: String)<!><!>
@A("abc", "foo", "bar")
fun test() {}
@@ -2,13 +2,13 @@
// FILE: common.kt
annotation class Ann
<!INCOMPATIBLE_MATCHING{JVM}!>expect class WeakIncompatibility {
<!INCOMPATIBLE_MATCHING{JVM}!>@Ann
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class WeakIncompatibility {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>@Ann
fun foo(p: String)<!>
}<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class StrongIncompatibility {
<!INCOMPATIBLE_MATCHING{JVM}!>@Ann
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class StrongIncompatibility {
<!EXPECT_ACTUAL_MISMATCH{JVM}!>@Ann
fun foo(p: Int)<!>
}<!>
@@ -2,7 +2,7 @@
// FILE: common.kt
annotation class Ann
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class E {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect enum class E {
@Ann
FOO,
<!NO_ACTUAL_FOR_EXPECT{JVM}!>MISSING_ON_ACTUAL<!>
@@ -3,7 +3,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class Mode {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class Mode {
Throughput, AverageTime
}<!>
@@ -13,7 +13,7 @@ expect class ViaTypealias<@Ann A>
expect class TypealiasParamNotAccepted<@Ann A>
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <@Ann A, @Ann B> withIncompatibility()<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <@Ann A, @Ann B> withIncompatibility()<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@@ -19,9 +19,9 @@ interface I2
expect fun <T> severalBounds() where T : I1, T : @Ann I2
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T> severalBoundsDifferentOrder() where T : I2, T : @Ann I1<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T> severalBoundsDifferentOrder() where T : I2, T : @Ann I1<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T> lessTypeParamBoundsOnActual() where T : I1, T : @Ann I2<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T> lessTypeParamBoundsOnActual() where T : I1, T : @Ann I2<!>
expect fun @Ann Any.onReceiver()
@@ -51,7 +51,7 @@ expect fun qualifierPartsMatching(arg: WithNested<String>.Nested<@Ann String>)
expect fun qualifierPartsNonMatching(arg: WithNested<String>.Nested<@Ann String>)
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun funTypeVsUserType(arg: () -> @Ann String)<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun funTypeVsUserType(arg: () -> @Ann String)<!>
expect fun funcTypeReturnType(arg: () -> @Ann Any)
@@ -3,7 +3,7 @@
@Target(AnnotationTarget.TYPE)
annotation class Ann
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T : @Ann Any> foo()<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T : @Ann Any> foo()<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@@ -7,7 +7,7 @@ expect fun inMethod(@Ann arg: String)
expect class InConstructor(@Ann arg: String)
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun withIncopatibility(@Ann p1: String, @Ann p2: String)<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun withIncopatibility(@Ann p1: String, @Ann p2: String)<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@@ -2,10 +2,10 @@
// FILE: common.kt
annotation class Ann
<!INCOMPATIBLE_MATCHING{JVM}!>@Ann
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>@Ann
expect inline fun hasWeakIncompatibility()<!>
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>@Ann
<!EXPECT_ACTUAL_MISMATCH{JVM}, EXPECT_ACTUAL_MISMATCH{JVM}!>@Ann
expect fun hasStrongIncompatibility(arg: Int)<!>
expect fun hasStrongIncompatibility(arg: Double)
@@ -2,27 +2,27 @@
// FILE: common.kt
expect class E01
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E02()<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class E03<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E02()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class E03<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E04 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E04 {
constructor()
}<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E05(e: E01)<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E06 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E05(e: E01)<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E06 {
constructor(e: E02)
}<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface I01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface I01<!>
expect class M01 {
fun foo()
}
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class ENUM01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect enum class ENUM01<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class ANNO01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class ANNO01<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -2,27 +2,27 @@
// FILE: common.kt
expect class E01
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E02()<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class E03<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E02()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class E03<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E04 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E04 {
constructor()
}<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E05(e: E01)<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E06 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E05(e: E01)<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E06 {
constructor(e: E02)
}<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface I01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface I01<!>
expect class M01 {
fun foo()
}
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class ENUM01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect enum class ENUM01<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class ANNO01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class ANNO01<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Foo {
<!INCOMPATIBLE_MATCHING{JVM}!>fun foo(param: Int = 1)<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>fun foo(param: Int = 1)<!>
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -1,6 +1,6 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Foo {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo {
fun foo(param: Int = 1)
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun missingOnActual()<!>
}<!>
@@ -17,7 +17,7 @@ expect class WithDefaultArgFromSuper : I {
override fun methodWithDefaultArg(s: String)
}
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class WithIncompatibility {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class WithIncompatibility {
fun foo(p: String = "common")
}<!>
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect class DefaultArgsInNestedClass {
<!INCOMPATIBLE_MATCHING{JVM}!>annotation class Nested<!INCOMPATIBLE_MATCHING{JVM}!>(val p: String = "")<!><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class DefaultArgsInNestedClass {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>annotation class Nested<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>(val p: String = "")<!><!>
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -1,13 +1,13 @@
// MODULE: m1-common
// FILE: common.kt
// TODO: .fir.kt version is just a stub.
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface My {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface My {
open fun openFunPositive()
<!INCOMPATIBLE_MATCHING{JVM}!>open fun openFunNegative()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open fun openFunNegative()<!>
abstract fun abstractFun()
open val openValPositive: Int
<!INCOMPATIBLE_MATCHING{JVM}!>open val openValNegative: Int<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open val openValNegative: Int<!>
abstract val abstractVal: Int
}<!>
@@ -4,7 +4,7 @@
interface A
interface B
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T> List<T>.foo() where T : A, T : B<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T> List<T>.foo() where T : A, T : B<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -7,7 +7,7 @@ expect annotation class Foo3
expect annotation class Foo4
expect annotation class Foo5()
expect annotation class Foo6()
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class Foo7<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class Foo7<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
@<!UNRESOLVED_REFERENCE!>Foo1<!>
fun foo() {}
@@ -5,9 +5,9 @@ expect class Foo1
expect class Foo2
expect class Foo3
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Bar1<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Bar2<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Bar3<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Bar1<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Bar2<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Bar3<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
expect class Bar4()
expect class Bar5()
expect class Bar6()
@@ -1,5 +1,5 @@
// MODULE: m1-common
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect interface Base<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface Base<!>
// MODULE: m1-jvm()()(m1-common)
actual interface Base {
@@ -3,12 +3,12 @@
// FILE: common.kt
expect fun foo1(x: Int)
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect fun foo2(x: Int)<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}, EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun foo2(x: Int)<!>
expect class NoArgConstructor()
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun foo3(): Int<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun foo4(): Int<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun foo3(): Int<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun foo4(): Int<!>
// MODULE: m2-jvm()()(m1-common)
@@ -5,7 +5,7 @@ expect fun interface F1 {
fun run()
}
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun interface F2 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun interface F2 {
fun run()
}<!>
@@ -21,7 +21,7 @@ expect fun interface F5 {
fun run()
}
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun interface F6 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun interface F6 {
fun run()
}<!>
@@ -3,8 +3,8 @@
// FILE: common.kt
expect class C1
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface C2<A><!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface C3<B><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface C2<A><!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface C3<B><!>
expect interface C4<D, E>
expect interface C5<F, G>
expect interface C6<H>
@@ -2,19 +2,19 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class Container {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Container {
fun publicFun()
internal fun internalFun1()
internal fun internalFun2()
<!INCOMPATIBLE_MATCHING{JVM}!>internal fun internalFun3()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>internal fun internalFun3()<!>
protected fun protectedFun1()
protected fun protectedFun2()
<!INCOMPATIBLE_MATCHING{JVM}!>protected fun protectedFun3()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>protected fun protectedFun3()<!>
<!INCOMPATIBLE_MATCHING{JVM}!>open internal fun openInternalFun()<!>
<!INCOMPATIBLE_MATCHING{JVM}!>open fun openPublicFun()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open internal fun openInternalFun()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open fun openPublicFun()<!>
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -2,8 +2,8 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class Container {
<!INCOMPATIBLE_MATCHING{JVM}!>internal open fun internalFun()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Container {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>internal open fun internalFun()<!>
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -14,7 +14,7 @@ expect class C {
<!WRONG_MODIFIER_TARGET!>expect<!> inner class I
}
<!INCOMPATIBLE_MATCHING{JVM}!>expect class D {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class D {
<!NO_ACTUAL_FOR_EXPECT{JVM}!>class N<!>
}<!>
@@ -1,9 +1,9 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Foo {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo {
fun bar(): String
<!INCOMPATIBLE_MATCHING{JVM}!>fun bas(f: Int)<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>fun bas(f: Int)<!>
}<!>
// MODULE: m2-jvm()()(m1-common)
@@ -26,7 +26,7 @@ interface KotlinXStringDemoInterface {
val value: String
}
<!INCOMPATIBLE_MATCHING{JS}!>expect fun StringDemoInterface.plusK(): String<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JS}!>expect fun StringDemoInterface.plusK(): String<!>
// MODULE: js()()(common, intermediate)
// TARGET_PLATFORM: JS
@@ -34,7 +34,7 @@ interface KotlinXStringDemoInterface {
// FILE: StringDemoInterface.kt
actual typealias StringDemoInterface = KotlinXStringDemoInterface
actual fun StringDemoIn<!INCOMPATIBLE_MATCHING!>terface.<!ACTUAL_WITHOUT_EXPECT("actual fun StringDemoInterface.plusK(): <ERROR TYPE REF: Unresolved name: value>; The following declaration is incompatible: expect fun StringDemoInterface.plusK(): String")!>plusK<!>() = <!EXPECT_CLASS_AS_FUNCTION!>StringValue<!>(value).plus("K")<!>.<!UNRESOLVED_REFERENCE!>value<!>
actual fun StringDemoIn<!EXPECT_ACTUAL_INCOMPATIBILITY!>terface.<!ACTUAL_WITHOUT_EXPECT("actual fun StringDemoInterface.plusK(): <ERROR TYPE REF: Unresolved name: value>; The following declaration is incompatible: expect fun StringDemoInterface.plusK(): String")!>plusK<!>() = <!EXPECT_CLASS_AS_FUNCTION!>StringValue<!>(value).plus("K")<!>.<!UNRESOLVED_REFERENCE!>value<!>
// FILE: main.kt
class StringDemo(override val value: String) : StringDemoInterface
@@ -3,7 +3,7 @@
// FILE: common.kt
// K2: false positve INCOMPATIBLE_MATCHING: KT-60155
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
override val values: MutableCollection<V>
}<!>
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect class <!PACKAGE_OR_CLASSIFIER_REDECLARATION!>Foo<!>(i: Int) {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class <!PACKAGE_OR_CLASSIFIER_REDECLARATION!>Foo<!>(i: Int) {
fun foo()
}<!>
@@ -1,6 +1,6 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect class SomeClass<T> {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class SomeClass<T> {
fun foo()
}<!>
@@ -2,7 +2,7 @@
// FILE: common.kt
interface A
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T : A> foo(t: T): String<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun <T : A> foo(t: T): String<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -1,7 +1,7 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>inline expect fun inlineFun()<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>inline expect fun inlineFun()<!>
expect fun nonInlineFun()
// MODULE: m2-jvm()()(m1-common)
@@ -3,15 +3,15 @@
// FILE: common.kt
expect fun f1(s: () -> String)
<!INCOMPATIBLE_MATCHING{JVM}!>expect inline fun f2(s: () -> String)<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect inline fun f2(s: () -> String)<!>
expect inline fun f3(noinline s: () -> String)
expect fun f4(s: () -> String)
<!INCOMPATIBLE_MATCHING{JVM}!>expect inline fun f5(s: () -> String)<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect inline fun f5(s: () -> String)<!>
expect inline fun f6(crossinline s: () -> String)
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun f7(x: Any)<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun f8(vararg x: Any)<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun f7(x: Any)<!>
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun f8(vararg x: Any)<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -1,8 +1,8 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@@ -2,8 +2,8 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
@@ -1,19 +1,19 @@
// MODULE: m1-common
// FILE: common.kt
<!INCOMPATIBLE_MATCHING{JVM}!>expect var v1: Boolean<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect var v1: Boolean<!>
expect var v2: Boolean
internal set
<!INCOMPATIBLE_MATCHING{JVM}!>expect var v3: Boolean
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect var v3: Boolean
internal set<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class C {
<!INCOMPATIBLE_MATCHING{JVM}!>var foo: Boolean<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class C {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>var foo: Boolean<!>
}<!>
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class C2 {
<!INCOMPATIBLE_MATCHING{JVM}!>var foo: Boolean<!>
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class C2 {
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>var foo: Boolean<!>
}<!>
// MODULE: m1-jvm()()(m1-common)