Remove codegen tests on old language and API versions

This commit is contained in:
Alexander Udalov
2021-02-10 21:05:23 +01:00
parent 401f0ac583
commit 2d60fa787d
40 changed files with 11 additions and 1752 deletions
@@ -1,17 +0,0 @@
// !LANGUAGE: -ProperForInArrayLoopRangeVariableAssignmentSemantic
// IGNORE_BACKEND: NATIVE
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// WITH_RUNTIME
// IGNORE_BACKEND: JS
fun box(): String {
var xs = intArrayOf(1, 2, 3)
var sum = 0
for (x in xs) {
sum = sum * 10 + x
xs = intArrayOf(4, 5)
}
return if (sum == 15) "OK" else "Fail: $sum"
}
@@ -1,18 +0,0 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: IGNORED_IN_JS
// !LANGUAGE: -DataClassInheritance
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// IGNORE_BACKEND: JVM_IR
data class Foo(val s: String)
fun box(): String {
val f1 = Foo("OK")
val f2 = Foo("OK")
if (f1 != f2) return "Fail equals"
if (f1.hashCode() != f2.hashCode()) return "Fail hashCode"
if (f1.toString() != f2.toString() || f1.toString() != "Foo(s=OK)") return "Fail toString: $f1 $f2"
return f1.s
}
@@ -1,24 +0,0 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: BIG_ARITY
// !LANGUAGE: -FunctionTypesWithBigArity
// This test does not make sense for JVM because a diagnostic is reported when function types with big arity are not available
// (see diagnostics/tests/sourceCompatibility/noBigFunctionTypes.kt)
// IGNORE_BACKEND: JVM, JVM_IR
class A
fun foo(
p00: A, p01: A, p02: A, p03: A, p04: A, p05: A, p06: A, p07: A, p08: A, p09: A,
p10: A, p11: A, p12: A, p13: A, p14: A, p15: A, p16: A, p17: A, p18: A, p19: A,
p20: A, p21: A, p22: A, p23: A, p24: A, p25: A, p26: A, p27: A, p28: A, p29: A
): String = "OK"
fun bar(x: Function30<A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, String>): String {
val a = A()
return x(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a)
}
fun box(): String {
return bar(::foo)
}
@@ -1,34 +0,0 @@
// TARGET_BACKEND: JVM
// !LANGUAGE: -ThrowNpeOnExplicitEqualsForBoxedNull
// IGNORE_BACKEND: JVM_IR
// ^ ThrowNpeOnExplicitEqualsForBoxedNull is introduced in 1.2.
// MODULE: lib
// FILE: JavaClass.java
public class JavaClass {
public Double minus0(){
return -0.0;
}
public Double plus0(){
return 0.0;
}
public Double null0(){
return null;
}
}
// MODULE: main(lib)
// FILE: b.kt
fun box(): String {
val jClass = JavaClass()
if (jClass.null0().equals(jClass.plus0())) return "fail 6"
if (jClass.minus0().equals(jClass.null0())) return "fail 7"
return "OK"
}
@@ -1,27 +0,0 @@
// !API_VERSION: 1.0
fun myEquals(a: Double?, b: Double?) = a == b
fun myEquals1(a: Double?, b: Double) = a == b
fun myEquals2(a: Double, b: Double?) = a == b
fun myEquals0(a: Double, b: Double) = a == b
fun box(): String {
if (!myEquals(null, null)) return "fail 1"
if (myEquals(null, 0.0)) return "fail 2"
if (myEquals(0.0, null)) return "fail 3"
if (!myEquals(0.0, 0.0)) return "fail 4"
if (myEquals1(null, 0.0)) return "fail 5"
if (!myEquals1(0.0, 0.0)) return "fail 6"
if (myEquals2(0.0, null)) return "fail 7"
if (!myEquals2(0.0, 0.0)) return "fail 8"
if (!myEquals0(0.0, 0.0)) return "fail 9"
return "OK"
}
@@ -1,27 +0,0 @@
// !API_VERSION: 1.0
fun myNotEquals(a: Double?, b: Double?) = a != b
fun myNotEquals1(a: Double?, b: Double) = a != b
fun myNotEquals2(a: Double, b: Double?) = a != b
fun myNotEquals0(a: Double, b: Double) = a != b
fun box(): String {
if (myNotEquals(null, null)) return "fail 1"
if (!myNotEquals(null, 0.0)) return "fail 2"
if (!myNotEquals(0.0, null)) return "fail 3"
if (myNotEquals(0.0, 0.0)) return "fail 4"
if (!myNotEquals1(null, 0.0)) return "fail 5"
if (myNotEquals1(0.0, 0.0)) return "fail 6"
if (!myNotEquals2(0.0, null)) return "fail 7"
if (myNotEquals2(0.0, 0.0)) return "fail 8"
if (myNotEquals0(0.0, 0.0)) return "fail 9"
return "OK"
}
@@ -1,27 +0,0 @@
// !API_VERSION: 1.0
fun myEquals(a: Float?, b: Float?) = a == b
fun myEquals1(a: Float?, b: Float) = a == b
fun myEquals2(a: Float, b: Float?) = a == b
fun myEquals0(a: Float, b: Float) = a == b
fun box(): String {
if (!myEquals(null, null)) return "fail 1"
if (myEquals(null, 0.0F)) return "fail 2"
if (myEquals(0.0F, null)) return "fail 3"
if (!myEquals(0.0F, 0.0F)) return "fail 4"
if (myEquals1(null, 0.0F)) return "fail 5"
if (!myEquals1(0.0F, 0.0F)) return "fail 6"
if (myEquals2(0.0F, null)) return "fail 7"
if (!myEquals2(0.0F, 0.0F)) return "fail 8"
if (!myEquals0(0.0F, 0.0F)) return "fail 9"
return "OK"
}
@@ -1,27 +0,0 @@
// !API_VERSION: 1.0
fun myNotEquals(a: Float?, b: Float?) = a != b
fun myNotEquals1(a: Float?, b: Float) = a != b
fun myNotEquals2(a: Float, b: Float?) = a != b
fun myNotEquals0(a: Float, b: Float) = a != b
fun box(): String {
if (myNotEquals(null, null)) return "fail 1"
if (!myNotEquals(null, 0.0F)) return "fail 2"
if (!myNotEquals(0.0F, null)) return "fail 3"
if (myNotEquals(0.0F, 0.0F)) return "fail 4"
if (!myNotEquals1(null, 0.0F)) return "fail 5"
if (myNotEquals1(0.0F, 0.0F)) return "fail 6"
if (!myNotEquals2(0.0F, null)) return "fail 7"
if (myNotEquals2(0.0F, 0.0F)) return "fail 8"
if (myNotEquals0(0.0F, 0.0F)) return "fail 9"
return "OK"
}
@@ -1,36 +0,0 @@
// !LANGUAGE: -ProperIeee754Comparisons
// !API_VERSION: 1.0
// IGNORE_BACKEND: NATIVE
// DONT_TARGET_EXACT_BACKEND: JS_IR
// DONT_TARGET_EXACT_BACKEND: JS_IR_ES6
fun box(): String {
val plusZero: Any = 0.0
val minusZero: Any = -0.0
val nullDouble: Double? = null
if (plusZero is Double) {
when (plusZero) {
nullDouble -> {
return "fail 1"
}
-0.0 -> {
return "fail 2"
}
else -> {}
}
if (minusZero is Double) {
when (plusZero) {
nullDouble -> {
return "fail 3"
}
minusZero -> {
return "fail 4"
}
else -> {}
}
}
}
return "OK"
}
@@ -1,29 +0,0 @@
// !API_VERSION: 1.0
fun box(): String {
val nullValue: Any? = null
val nullDouble: Double? = null
val minusZero: Any = -0.0
if (nullValue is Double?) {
when (nullValue) {
-0.0 -> {
return "fail 1"
}
nullDouble -> {}
else -> return "fail 2"
}
if (minusZero is Double) {
when (nullValue) {
minusZero -> {
return "fail 3"
}
nullDouble -> {
}
else -> return "fail 4"
}
}
}
return "OK"
}
@@ -1,17 +0,0 @@
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: test.kt
private operator fun A.inc() = A()
fun box(): String {
var aNull = A.n()
aNull++
// NB no exception is thrown in language version 1.1
return "OK"
}
// FILE: A.java
public class A {
public static A n() { return null; }
}
@@ -1,22 +0,0 @@
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
operator fun A.inc() = A()
fun box(): String {
assertFailsWith<NullPointerException> {
var aNull = A.n()
aNull++
}
return "OK"
}
// FILE: A.java
public class A {
public static A n() { return null; }
}
@@ -1,17 +0,0 @@
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
fun String.extension() {}
fun box(): String {
assertFailsWith<NullPointerException> { J.s().extension() }
return "OK"
}
// FILE: J.java
public class J {
public static String s() { return null; }
}
@@ -1,17 +0,0 @@
// !LANGUAGE: -NullabilityAssertionOnExtensionReceiver
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
inline fun String.extension() {}
fun box(): String {
J.s().extension() // NB no exception thrown
return "OK"
}
// FILE: J.java
public class J {
public static String s() { return null; }
}
@@ -1,11 +0,0 @@
// !LANGUAGE: -ProhibitOperatorMod
// !API_VERSION: 1.0
// TARGET_BACKEND: JVM
// FULL_JDK
import java.math.BigInteger
fun box(): String {
val m = BigInteger.valueOf(-2) % BigInteger.valueOf(3)
return if (m != BigInteger.valueOf(1)) "Fail: BigInteger(-2) mod BigInteger(3) == $m" else "OK"
}
@@ -1,39 +0,0 @@
// !LANGUAGE: -ThrowNpeOnExplicitEqualsForBoxedNull
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: test.kt
import kotlin.test.*
fun box(): String {
assertEquals(J.BOOL_NULL.equals(null), true)
assertEquals(J.CHAR_NULL.equals(null), true)
assertEquals(J.BYTE_NULL.equals(null), true)
assertEquals(J.SHORT_NULL.equals(null), true)
assertEquals(J.INT_NULL.equals(null), true)
assertEquals(J.LONG_NULL.equals(null), true)
assertEquals(J.FLOAT_NULL.equals(null), true)
assertEquals(J.DOUBLE_NULL.equals(null), true)
assertEquals(J.BOOL_NULL == null, true)
assertEquals(J.CHAR_NULL == null, true)
assertEquals(J.BYTE_NULL == null, true)
assertEquals(J.SHORT_NULL == null, true)
assertEquals(J.INT_NULL == null, true)
assertEquals(J.LONG_NULL == null, true)
assertEquals(J.FLOAT_NULL == null, true)
assertEquals(J.DOUBLE_NULL == null, true)
return "OK"
}
// FILE: J.java
public class J {
public static Boolean BOOL_NULL = null;
public static Character CHAR_NULL = null;
public static Byte BYTE_NULL = null;
public static Short SHORT_NULL = null;
public static Integer INT_NULL = null;
public static Long LONG_NULL = null;
public static Float FLOAT_NULL = null;
public static Double DOUBLE_NULL = null;
}
@@ -1,22 +0,0 @@
// !LANGUAGE: -InlineConstVals
// IGNORE_BACKEND: JVM_IR
// FILE: Foo.kt
private const val OUTER_PRIVATE = 20
class Foo {
companion object {
private const val LOCAL_PRIVATE = 20
}
fun foo() {
// Access to the property use getstatic on the backed field
LOCAL_PRIVATE
// Access to the property requires an invokestatic
OUTER_PRIVATE
}
}
// 1 INVOKESTATIC
// 1 PUTSTATIC
// 2 GETSTATIC
@@ -1,29 +0,0 @@
// !API_VERSION: 1.0
fun myEquals(a: Double?, b: Double?) = a == b
fun myEquals1(a: Double?, b: Double) = a == b
fun myEquals2(a: Double, b: Double?) = a == b
fun myEquals0(a: Double, b: Double) = a == b
fun box(): String {
if (!myEquals(null, null)) return "fail 1"
if (myEquals(null, 0.0)) return "fail 2"
if (myEquals(0.0, null)) return "fail 3"
if (!myEquals(0.0, 0.0)) return "fail 4"
if (myEquals1(null, 0.0)) return "fail 5"
if (!myEquals1(0.0, 0.0)) return "fail 6"
if (myEquals2(0.0, null)) return "fail 7"
if (!myEquals2(0.0, 0.0)) return "fail 8"
if (!myEquals0(0.0, 0.0)) return "fail 9"
return "OK"
}
// 0 areEqual
@@ -1,29 +0,0 @@
// !API_VERSION: 1.0
fun myNotEquals(a: Double?, b: Double?) = a != b
fun myNotEquals1(a: Double?, b: Double) = a != b
fun myNotEquals2(a: Double, b: Double?) = a != b
fun myNotEquals0(a: Double, b: Double) = a != b
fun box(): String {
if (myNotEquals(null, null)) return "fail 1"
if (!myNotEquals(null, 0.0)) return "fail 2"
if (!myNotEquals(0.0, null)) return "fail 3"
if (myNotEquals(0.0, 0.0)) return "fail 4"
if (!myNotEquals1(null, 0.0)) return "fail 5"
if (myNotEquals1(0.0, 0.0)) return "fail 6"
if (!myNotEquals2(0.0, null)) return "fail 7"
if (myNotEquals2(0.0, 0.0)) return "fail 8"
if (myNotEquals0(0.0, 0.0)) return "fail 9"
return "OK"
}
// 0 areEqual
@@ -1,29 +0,0 @@
// !API_VERSION: 1.0
fun myEquals(a: Float?, b: Float?) = a == b
fun myEquals1(a: Float?, b: Float) = a == b
fun myEquals2(a: Float, b: Float?) = a == b
fun myEquals0(a: Float, b: Float) = a == b
fun box(): String {
if (!myEquals(null, null)) return "fail 1"
if (myEquals(null, 0.0F)) return "fail 2"
if (myEquals(0.0F, null)) return "fail 3"
if (!myEquals(0.0F, 0.0F)) return "fail 4"
if (myEquals1(null, 0.0F)) return "fail 5"
if (!myEquals1(0.0F, 0.0F)) return "fail 6"
if (myEquals2(0.0F, null)) return "fail 7"
if (!myEquals2(0.0F, 0.0F)) return "fail 8"
if (!myEquals0(0.0F, 0.0F)) return "fail 9"
return "OK"
}
// 0 areEqual
@@ -1,29 +0,0 @@
// !API_VERSION: 1.0
fun myNotEquals(a: Float?, b: Float?) = a != b
fun myNotEquals1(a: Float?, b: Float) = a != b
fun myNotEquals2(a: Float, b: Float?) = a != b
fun myNotEquals0(a: Float, b: Float) = a != b
fun box(): String {
if (myNotEquals(null, null)) return "fail 1"
if (!myNotEquals(null, 0.0F)) return "fail 2"
if (!myNotEquals(0.0F, null)) return "fail 3"
if (myNotEquals(0.0F, 0.0F)) return "fail 4"
if (!myNotEquals1(null, 0.0F)) return "fail 5"
if (myNotEquals1(0.0F, 0.0F)) return "fail 6"
if (!myNotEquals2(0.0F, null)) return "fail 7"
if (myNotEquals2(0.0F, 0.0F)) return "fail 8"
if (myNotEquals0(0.0F, 0.0F)) return "fail 9"
return "OK"
}
// 0 areEqual
@@ -1,24 +0,0 @@
// !API_VERSION: 1.0
// !LANGUAGE: -ProperIeee754Comparisons
fun equals5(a: Any?, b: Any?) = if (a is Double && b is Double?) a == b else null!!
fun equals6(a: Any?, b: Any?) = if (a is Double? && b is Double) a == b else null!!
fun equals8(a: Any?, b: Any?) = if (a is Double? && b is Double?) a == b else null!!
fun box(): String {
if (!equals5(-0.0, 0.0)) return "fail 5"
if (!equals6(-0.0, 0.0)) return "fail 6"
if (!equals8(-0.0, 0.0)) return "fail 8"
if (!equals8(null, null)) return "fail 9"
if (equals8(null, 0.0)) return "fail 10"
if (equals8(0.0, null)) return "fail 11"
return "OK"
}
// 3 areEqual \(Ljava/lang/Object;Ljava/lang/Object;\)Z
// 3 areEqual
@@ -1,24 +0,0 @@
// !API_VERSION: 1.0
// !LANGUAGE: -ProperIeee754Comparisons
fun equals5(a: Any?, b: Any?) = if (a is Float && b is Float?) a == b else null!!
fun equals6(a: Any?, b: Any?) = if (a is Float? && b is Float) a == b else null!!
fun equals8(a: Any?, b: Any?) = if (a is Float? && b is Float?) a == b else null!!
fun box(): String {
if (!equals5(-0.0F, 0.0F)) return "fail 5"
if (!equals6(-0.0F, 0.0F)) return "fail 6"
if (!equals8(-0.0F, 0.0F)) return "fail 8"
if (!equals8(null, null)) return "fail 9"
if (equals8(null, 0.0F)) return "fail 10"
if (equals8(0.0F, null)) return "fail 11"
return "OK"
}
// 3 areEqual \(Ljava/lang/Object;Ljava/lang/Object;\)Z
// 3 areEqual
@@ -1,34 +0,0 @@
// !API_VERSION: 1.0
// !LANGUAGE: -ProperIeee754Comparisons
fun box(): String {
val plusZero: Any = 0.0
val minusZero: Any = -0.0
val nullDouble: Double? = null
if (plusZero is Double) {
when (plusZero) {
nullDouble -> {
return "fail 1"
}
-0.0 -> {
}
else -> return "fail 2"
}
if (minusZero is Double) {
when (plusZero) {
nullDouble -> {
return "fail 3"
}
minusZero -> {
}
else -> return "fail 4"
}
}
}
return "OK"
}
// 4 areEqual \(Ljava/lang/Object;Ljava/lang/Object;\)Z
// 4 areEqual
@@ -1,33 +0,0 @@
// !API_VERSION: 1.0
// !LANGUAGE: -ProperIeee754Comparisons
fun box(): String {
val nullValue: Any? = null
val nullDouble: Double? = null
val minusZero: Any = -0.0
if (nullValue is Double?) {
when (nullValue) {
-0.0 -> {
return "fail 1"
}
nullDouble -> {}
else -> return "fail 2"
}
if (minusZero is Double) {
when (nullValue) {
minusZero -> {
return "fail 3"
}
nullDouble -> {
}
else -> return "fail 4"
}
}
}
return "OK"
}
// 4 areEqual \(Ljava/lang/Object;Ljava/lang/Object;\)Z
// 4 areEqual
@@ -1,24 +0,0 @@
// !LANGUAGE: -InlineConstVals
// IGNORE_BACKEND: JVM_IR
// FILE: first/Foo.java
package first;
public class Foo {
protected static final int FOO = 42;
}
// FILE: bar.kt
package second
import first.Foo
class Bar : Foo() {
fun bar() = FOO
}
// @second/BarKt.class
// 1 INVOKESTATIC
// 0 GETSTATIC
// 1 BIPUSH 42