[Test] Migrate AbstractDiagnosticsWithJdk15Test to new infrastructure

This commit is contained in:
Dmitriy Novozhilov
2020-12-22 12:05:01 +03:00
committed by TeamCityServer
parent 02fb11a2cd
commit a9f913a97f
37 changed files with 521 additions and 144 deletions
@@ -0,0 +1,56 @@
// !API_VERSION: 1.5
// !LANGUAGE: +JvmRecordSupport
// SKIP_TXT
// JVM_TARGET: 15
// ENABLE_JVM_PREVIEW
@JvmRecord
class A0
@JvmRecord
class A1 {
constructor()
}
@JvmRecord
class A2()
@JvmRecord
class A3(name: String)
@JvmRecord
class A4(var name: String)
@JvmRecord
class A5(vararg val name: String, y: Int)
@JvmRecord
open class A6(val x: String)
@JvmRecord
abstract class A7(val x: String)
@JvmRecord
sealed class A8(val x: String)
@JvmRecord
enum class A9(val x: String) {
X("");
}
@JvmRecord
class A10(
val x: String,
val y: Int,
vararg val z: Double,
)
fun main() {
@JvmRecord
class Local
}
class Outer {
@JvmRecord
inner class Inner(val name: String)
}
@@ -0,0 +1,23 @@
// !API_VERSION: 1.5
// !LANGUAGE: -JvmRecordSupport
// SKIP_TXT
// FILE: JRecord.java
public record JRecord(int x, CharSequence y) {}
// FILE: main.kt
@JvmRecord
class MyRec(
val x: String,
val y: Int,
vararg val z: Double,
)
fun foo(jr: JRecord) {
<!INAPPLICABLE_CANDIDATE!>JRecord<!>(1, "")
jr.<!UNRESOLVED_REFERENCE!>x<!>()
jr.<!UNRESOLVED_REFERENCE!>y<!>()
jr.<!UNRESOLVED_REFERENCE!>x<!>
jr.<!UNRESOLVED_REFERENCE!>y<!>
}
@@ -0,0 +1,43 @@
// !API_VERSION: 1.5
// !LANGUAGE: +JvmRecordSupport
// SKIP_TXT
// JVM_TARGET: 15
// ENABLE_JVM_PREVIEW
interface I
val i: I = object : I {}
@JvmRecord
data class MyRec1(val name: String) : I by i
@JvmRecord
data class MyRec2(val name: String) {
val x: Int = 0
}
@JvmRecord
data class MyRec3(val name: String) {
val y: String
get() = field + "1"
init {
y = ""
}
}
@JvmRecord
data class MyRec4(val name: String) {
val z: Int by lazy { 1 }
}
@JvmRecord
data class MyRec5(val name: String) {
val w: String get() = name + "1"
}
@@ -0,0 +1,14 @@
// !API_VERSION: 1.5
// !LANGUAGE: +JvmRecordSupport
// JVM_TARGET: 15
// ENABLE_JVM_PREVIEW
@JvmRecord
class BasicRecord(val x: String)
@JvmRecord
data class BasicDataRecord(val x: String)
@JvmRecord
class BasicRecordWithSuperClass(val x: String) : Record()
@@ -0,0 +1,18 @@
// !API_VERSION: 1.5
// !LANGUAGE: +JvmRecordSupport
// FILE: MyRecord.java
public record MyRecord(int x, CharSequence y) {
}
// FILE: main.kt
fun foo(mr: MyRecord) {
<!INAPPLICABLE_CANDIDATE!>MyRecord<!>(1, "")
mr.<!UNRESOLVED_REFERENCE!>x<!>()
mr.<!UNRESOLVED_REFERENCE!>y<!>()
mr.<!UNRESOLVED_REFERENCE!>x<!>
mr.<!UNRESOLVED_REFERENCE!>y<!>
}
@@ -0,0 +1,26 @@
// !API_VERSION: 1.5
// !LANGUAGE: +JvmRecordSupport
// JVM_TARGET: 15
// ENABLE_JVM_PREVIEW
abstract class Abstract
interface I
@JvmRecord
data class A1(val x: String) : Abstract(), I
@JvmRecord
data class A2(val x: String) : Any(), I
@JvmRecord
data class A3(val x: String) : Record(), I
@JvmRecord
data class A4(val x: String) : java.lang.Record(), I
@JvmRecord
data class A5(val x: String) : I
data class A6(val x: String) : Record(), I
data class A7(val x: String) : java.lang.Record(), I
@@ -0,0 +1,44 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// ISSUE: KT-41215, KT-43551
// FILE: Base.java
public sealed class Base permits A, B {}
// FILE: A.java
public final class A extends Base {}
// FILE: B.java
public sealed class B extends Base permits B.C, B.D {
public static final class C implements B {}
public static non-sealed class D extends B {}
}
// FILE: main.kt
fun test_ok_1(base: Base) {
val x = when (base) {
is A -> 1
is B -> 2
}
}
fun test_ok_2(base: Base) {
val x = when (base) {
is A -> 1
is B.C -> 2
is B.D -> 3
}
}
fun test_error_1(base: Base) {
val x = when (base) {
is A -> 1
}
}
fun test_error_2(base: Base) {
val x = when (base) {
is A -> 1
is B.C -> 2
}
}
@@ -0,0 +1,64 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// ISSUE: KT-41215, KT-43551
// FILE: Base.java
public sealed interface Base permits A, B, E {}
// FILE: A.java
public non-sealed interface A extends Base {}
// FILE: B.java
public sealed interface B extends Base permits B.C, B.D {
public static final class C implements B {}
public static non-sealed interface D extends B {}
}
// FILE: E.java
public enum E implements Base {
First, Second
}
// FILE: main.kt
fun test_ok_1(base: Base) {
val x = when (base) {
is A -> 1
is B -> 2
is E -> 3
}
}
fun test_ok_2(base: Base) {
val x = when (base) {
is A -> 1
is B.C -> 2
is B.D -> 3
E.First -> 4
E.Second -> 5
}
}
fun test_error_1(base: Base) {
val x = when (base) {
is A -> 1
is B -> 2
}
}
fun test_error_2(base: Base) {
val x = when (base) {
is A -> 1
is B.C -> 2
is B.D -> 3
E.Second -> 5
}
}
fun test_error_3(base: Base) {
val x = when (base) {
is A -> 1
is B.C -> 2
E.First -> 4
E.Second -> 5
}
}
@@ -0,0 +1,11 @@
// ISSUE: KT-41215
// FILE: Base.java
public sealed class Base permits A, B {}
// FILE: A.java
public final class A extends Base {}
// FILE: B.kt
class B : Base()
@@ -0,0 +1,11 @@
// ISSUE: KT-41215
// FILE: Base.java
public sealed interface Base permits A, B {}
// FILE: A.java
public final class A extends Base {}
// FILE: B.kt
class B : Base