[K2, MPP] implement IR errors reporting and test infrastructure

Fix test data

^KT-56344 Fixed
This commit is contained in:
Ilya Chernikov
2023-02-09 12:34:30 +01:00
committed by Space Team
parent 3b1071b42b
commit 59b88f33b2
48 changed files with 2583 additions and 2146 deletions
@@ -0,0 +1,34 @@
// MODULE: m1-common
// FILE: common.kt
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class Foo {
<!NO_ACTUAL_FOR_EXPECT{JVM}!>ENTRY<!>
}<!>
expect enum class _TimeUnit
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual typealias Foo = FooImpl
actual typealias _TimeUnit = java.util.concurrent.TimeUnit
// FILE: FooImpl.java
public enum FooImpl {
ENTRY("OK") {
@Override
public String getResult() {
return value;
}
};
protected final String value;
public FooImpl(String value) {
this.value = value;
}
public abstract String getResult();
}
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
expect enum class Foo {
ENTRY
}
@@ -9,11 +9,13 @@ expect enum class _TimeUnit
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual typealias Foo = FooImpl
actual typealias _TimeUnit = java.util.concurrent.TimeUnit
// FILE: FooImpl.java
public enum FooImpl {
ENTRY("OK") {
@Override
@@ -0,0 +1,17 @@
// MODULE: m1-common
// FILE: common.kt
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class Foo {
ENTRY1,
ENTRY2,
ENTRY3;
}<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual enum class Foo(val x: String) {
ENTRY1("1"),
ENTRY2("2"),
ENTRY3("3");
}
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
expect enum class Foo {
ENTRY1,
ENTRY2,
@@ -9,6 +9,7 @@ expect enum class Foo {
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual enum class Foo(val x: String) {
ENTRY1("1"),
ENTRY2("2"),
@@ -6,8 +6,8 @@ expect annotation class Foo2
expect annotation class Foo3
expect annotation class Foo4
expect annotation class Foo5()
expect annotation class Foo6()
expect annotation class Foo7()
expect annotation class Foo6<!NO_ACTUAL_FOR_EXPECT{JVM}!>()<!>
expect annotation class Foo7<!NO_ACTUAL_FOR_EXPECT{JVM}!>()<!>
@<!UNRESOLVED_REFERENCE!>Foo1<!>
fun foo() {}
@@ -5,9 +5,9 @@ expect class Foo1
expect class Foo2
expect class Foo3
expect class Bar1()
expect class Bar2()
expect class Bar3()
expect class Bar1<!NO_ACTUAL_FOR_EXPECT{JVM}!>()<!>
expect class Bar2<!NO_ACTUAL_FOR_EXPECT{JVM}!>()<!>
expect class Bar3<!NO_ACTUAL_FOR_EXPECT{JVM}!>()<!>
expect class Bar4()
expect class Bar5()
expect class Bar6()
@@ -3,12 +3,12 @@
// FILE: common.kt
expect fun foo1(x: Int)
expect fun foo2(x: Int)
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun foo2(x: Int)<!>
expect class NoArgConstructor()
expect fun foo3(): Int
expect fun foo4(): Int
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun foo4(): Int<!>
// MODULE: m2-jvm()()(m1-common)
@@ -15,7 +15,7 @@ expect class C {
}
expect class D {
class N
<!NO_ACTUAL_FOR_EXPECT{JVM}!>class N<!>
}
expect class E {
@@ -2,7 +2,7 @@
// FILE: common.kt
class Foo {
<!NON_ABSTRACT_FUNCTION_WITH_NO_BODY!><!WRONG_MODIFIER_TARGET!>expect<!> fun bar(): String<!>
<!NON_ABSTRACT_FUNCTION_WITH_NO_BODY, NO_ACTUAL_FOR_EXPECT{JVM}!><!WRONG_MODIFIER_TARGET!>expect<!> fun bar(): String<!>
}
// MODULE: m1-jvm()()(m1-common)
@@ -1,11 +1,12 @@
// MODULE: common
// TARGET_PLATFORM: Common
expect class CommonClass {
fun memberFun()
val memberProp: Int
class Nested
inner class Inner
}
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect class CommonClass {
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun memberFun()<!>
<!NO_ACTUAL_FOR_EXPECT{JVM}!>val memberProp: Int<!>
<!NO_ACTUAL_FOR_EXPECT{JVM}!>class Nested<!>
<!NO_ACTUAL_FOR_EXPECT{JVM}!>inner class Inner<!>
}<!>
<!ACTUAL_WITHOUT_EXPECT!>actual class CommonClass {
<!ACTUAL_WITHOUT_EXPECT!>actual fun memberFun() {}<!>
<!ACTUAL_WITHOUT_EXPECT!>actual val memberProp: Int = 42<!>
@@ -13,15 +14,16 @@ expect class CommonClass {
<!ACTUAL_WITHOUT_EXPECT!>actual inner class Inner<!>
}<!>
expect fun commonFun()
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun commonFun()<!>
<!ACTUAL_WITHOUT_EXPECT!>actual fun commonFun() {}<!>
expect val commonProperty: String
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect val commonProperty: String<!>
<!ACTUAL_WITHOUT_EXPECT!>actual val commonProperty: String
get() = "hello"<!>
// MODULE: intermediate()()(common)
// TARGET_PLATFORM: Common
expect class IntermediateClass {
fun memberFun()
val memberProp: Int
@@ -43,6 +45,7 @@ expect val intermediateProperty: String
get() = "hello"<!>
// MODULE: main()()(intermediate)
expect class PlatformClass {
fun memberFun()
val memberProp: Int
@@ -1,5 +1,6 @@
// MODULE: common
// TARGET_PLATFORM: Common
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class CommonClass<!> {
fun memberFun()
val memberProp: Int
@@ -22,6 +23,7 @@ actual val <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>commonProperty<!>: String
// MODULE: intermediate()()(common)
// TARGET_PLATFORM: Common
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class IntermediateClass<!> {
fun memberFun()
val memberProp: Int
@@ -43,6 +45,7 @@ actual val <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>intermediateProperty<!>: Stri
get() = "hello"
// MODULE: main()()(intermediate)
expect <!EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE!>class PlatformClass<!> {
fun memberFun()
val memberProp: Int
@@ -4,7 +4,7 @@
expect fun parameterCount()
fun parameterCount(p: String) {}
expect fun parameterCount2()
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun parameterCount2()<!>
<!ACTUAL_WITHOUT_EXPECT!>actual fun parameterCount2(p: String) {}<!>
expect fun callableKind(): Int
@@ -13,9 +13,9 @@ val callableKind: Int = 1
expect fun <T> typeParameterCount()
fun typeParameterCount() {}
expect enum class EnumEntries {
ONE, TWO;
}
<!NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class EnumEntries {
<!NO_ACTUAL_FOR_EXPECT{JVM}!>ONE,<!> <!NO_ACTUAL_FOR_EXPECT{JVM}!>TWO;<!>
}<!>
<!ACTUAL_WITHOUT_EXPECT!>actual enum class EnumEntries {
ONE;
}<!>
@@ -0,0 +1,28 @@
// !DIAGNOSTICS: -UNSUPPORTED
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
constructor(p: Any)
fun f1(s: String): Int
fun f2(s: List<String>?): MutableMap<Boolean?, Foo>
fun <T : Set<Number>> f3(t: T): T?
}
// MODULE: m2-js()()(m1-common)
// FILE: js.kt
// TODO: do not suppress UNSUPPORTED once JS files in multi-platform tests are analyzed with JS analyzer facade
actual class Foo {
actual constructor(p: dynamic) {}
actual fun f1(s: dynamic): dynamic = null!!
actual fun f2(s: dynamic): MutableMap<Boolean?, Foo> = null!!
actual fun <T : Set<Number>> f3(t: T): dynamic = null!!
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNSUPPORTED
// MODULE: m1-common
// FILE: common.kt
@@ -0,0 +1,31 @@
// MODULE: m1-common
// FILE: common.kt
expect class Foo {
constructor(p: Any)
fun f1(s: String): Int
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun f2(s: List<String>?): MutableMap<Boolean?, Foo><!>
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun <T : Set<Number>> f3(t: T): T?<!>
}
// MODULE: m2-jvm()()(m1-common)
// FILE: FooImpl.java
import java.util.*;
public class FooImpl {
public FooImpl(Object p) {}
public final int f1(String s) { return 0; }
public final Map<Boolean, FooImpl> f2(List<String> s) { return null; }
public final <T extends Set<Number>> T f3(T t) { return null; }
}
// FILE: jvm.kt
actual typealias Foo = FooImpl
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
@@ -0,0 +1,16 @@
// MODULE: m1-common
// FILE: common.kt
expect sealed class Presence {
<!NO_ACTUAL_FOR_EXPECT{JVM}!>object Online: Presence<!>
<!NO_ACTUAL_FOR_EXPECT{JVM}!>object Offline: Presence<!>
}
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
actual typealias Presence = P
sealed class P {
object Online : P()
object Offline : P()
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
@@ -2,7 +2,7 @@
// FILE: common.kt
package common
expect fun foo()
<!NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JS}!>expect fun foo()<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
@@ -10,8 +10,8 @@ expect fun f4(s: () -> String)
expect inline fun f5(s: () -> String)
expect inline fun f6(crossinline s: () -> String)
expect fun f7(x: Any)
expect fun f8(vararg x: Any)
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun f7(x: Any)<!>
<!NO_ACTUAL_FOR_EXPECT{JVM}!>expect fun f8(vararg x: Any)<!>
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt