Migrate all JDK 15 related tests to JDK 17
This commit is contained in:
committed by
TeamCityServer
parent
452dfd6edd
commit
ce3562f0e8
+36
@@ -0,0 +1,36 @@
|
||||
// ISSUE: KT-41215, KT-43551
|
||||
|
||||
// MODULE: lib
|
||||
|
||||
// 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 extends B {}
|
||||
|
||||
public static non-sealed class D extends B {}
|
||||
}
|
||||
|
||||
// MODULE: main(lib)
|
||||
fun test_1(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "O"
|
||||
is B -> "Fail"
|
||||
}
|
||||
}
|
||||
|
||||
fun test_2(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "Fail A"
|
||||
is B.C -> "K"
|
||||
is B.D -> "Fail B.D"
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return test_1(A()) + test_2(B.C())
|
||||
}
|
||||
Vendored
+45
@@ -0,0 +1,45 @@
|
||||
// ISSUE: KT-41215, KT-43551
|
||||
|
||||
// MODULE: lib
|
||||
// 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
|
||||
}
|
||||
|
||||
// MODULE: main(lib)
|
||||
fun test_1(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "Fail A"
|
||||
is B -> "Fail B"
|
||||
is E -> "O"
|
||||
}
|
||||
}
|
||||
|
||||
fun test_2(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "Fail A"
|
||||
is B.C -> "Fail B.C"
|
||||
is B.D -> "K"
|
||||
E.First -> "Fail E.First"
|
||||
E.Second -> "Fail E.Second"
|
||||
}
|
||||
}
|
||||
|
||||
class MyD : B.D
|
||||
|
||||
fun box(): String {
|
||||
return test_1(E.First) + test_2(MyD())
|
||||
}
|
||||
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
// WITH_REFLECT
|
||||
// ATTACH_DEBUGGERp
|
||||
// ISSUE: KT-47760
|
||||
|
||||
// FILE: MyRecord.java
|
||||
public record MyRecord(String stringField) {}
|
||||
|
||||
// FILE: main.kt
|
||||
import kotlin.reflect.full.*
|
||||
import kotlin.reflect.KVisibility
|
||||
import kotlin.reflect.jvm.isAccessible
|
||||
|
||||
fun box(): String {
|
||||
val expectedValue = "Hello"
|
||||
val obj = MyRecord(expectedValue)
|
||||
|
||||
// stringField() function
|
||||
val function = MyRecord::class.functions.single { it.name == "stringField" }
|
||||
val functionValue = function.call(obj)
|
||||
if (functionValue != expectedValue) {
|
||||
return "Fail: stringField() call returned $functionValue, expected $expectedValue"
|
||||
}
|
||||
|
||||
// stringField field
|
||||
val property = MyRecord::class.memberProperties.single { it.name == "stringField" }
|
||||
if (property.visibility != KVisibility.PRIVATE) {
|
||||
return "Fail: field stringField is not private"
|
||||
}
|
||||
val getter = property.getter
|
||||
getter.isAccessible = true
|
||||
val propertyValue = getter.call(obj)
|
||||
if (propertyValue != expectedValue) {
|
||||
return "Fail: stringField field returned $propertyValue, expected $expectedValue"
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
// 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 extends B {}
|
||||
|
||||
public static non-sealed class D extends B {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun test_1(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "O"
|
||||
is B -> "Fail"
|
||||
}
|
||||
}
|
||||
|
||||
fun test_2(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "Fail A"
|
||||
is B.C -> "K"
|
||||
is B.D -> "Fail B.D"
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return test_1(A()) + test_2(B.C())
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
// 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_1(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "Fail A"
|
||||
is B -> "Fail B"
|
||||
is E -> "O"
|
||||
}
|
||||
}
|
||||
|
||||
fun test_2(base: Base): String {
|
||||
return when (base) {
|
||||
is A -> "Fail A"
|
||||
is B.C -> "Fail B.C"
|
||||
is B.D -> "K"
|
||||
E.First -> "Fail E.First"
|
||||
E.Second -> "Fail E.Second"
|
||||
}
|
||||
}
|
||||
|
||||
class MyD : B.D
|
||||
|
||||
fun box(): String {
|
||||
return test_1(E.First) + test_2(MyD())
|
||||
}
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: Base.java
|
||||
public sealed class Base permits O, K {}
|
||||
|
||||
// FILE: O.java
|
||||
public final class O extends Base {}
|
||||
|
||||
// FILE: K.java
|
||||
public non-sealed class K extends Base {}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun box(): String {
|
||||
val clazz = Base::class.java
|
||||
if (!clazz.isSealed) return "Error: Base is not sealed"
|
||||
return clazz.permittedSubclasses.joinToString("") { it.simpleName ?: "_No name provided_" }
|
||||
}
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: Base.java
|
||||
public sealed class Base permits O, K {}
|
||||
|
||||
// FILE: O.java
|
||||
public final class O extends Base {}
|
||||
|
||||
// FILE: K.java
|
||||
public non-sealed class K extends Base {}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun box(): String {
|
||||
val klass = Base::class
|
||||
if (!klass.isSealed) return "Error: Base is not sealed"
|
||||
if (klass.isAbstract) return "Error: Base is not abstract"
|
||||
return klass.sealedSubclasses
|
||||
.joinToString("") { it.simpleName ?: "_No name provided_" }
|
||||
.takeIf { it.isNotBlank() }
|
||||
?: "_No sealed subclasses found_"
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// WITH_REFLECT
|
||||
// FILE: Base.java
|
||||
public sealed interface Base permits O, K {}
|
||||
|
||||
// FILE: O.java
|
||||
public non-sealed interface O extends Base {}
|
||||
|
||||
// FILE: K.java
|
||||
public non-sealed interface K extends Base {}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun box(): String {
|
||||
val klass = Base::class
|
||||
if (!klass.isSealed) return "Error: Base is not sealed"
|
||||
if (klass.isAbstract) return "Error: Base is abstract"
|
||||
return klass.sealedSubclasses
|
||||
.joinToString("") { it.simpleName ?: "_No name provided_" }
|
||||
.takeIf { it.isNotBlank() }
|
||||
?: "_No sealed subclasses found_"
|
||||
}
|
||||
Reference in New Issue
Block a user