Add box and PSI2IR tests for special cases listed in KT-35849

This commit is contained in:
Dmitry Petrov
2020-10-20 14:47:10 +03:00
parent efee322830
commit 3979cde738
50 changed files with 1428 additions and 0 deletions
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// FILE: nnStringVsT.kt
fun <T> useT(fn: () -> T) = fn()
fun checkNull(x: Any?) {
if (x != null) throw AssertionError("null expected")
}
fun box(): String {
checkNull(useT { J.notNullString() })
return "OK"
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// FILE: nnStringVsTAny.kt
fun <T : Any> useTAny(fn: () -> T) = fn()
fun checkNull(x: Any?) {
if (x != null) throw AssertionError("null expected")
}
fun box(): String {
checkNull(useTAny { J.notNullString() })
return "OK"
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,29 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
// FILE: nnStringVsTConstrained.kt
fun <T> useTConstrained(xs: Array<T>, fn: () -> T) = fn()
fun box(): String {
val xs = Array(1) { "" }
try {
useTConstrained(xs) { J.notNullString() }
} catch (e: NullPointerException) {
return "OK"
}
throw AssertionError("NullPointerException expected")
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,29 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
// FILE: nnStringVsTXArray.kt
fun <T> useTX(x: T, fn: () -> T) = fn()
fun box(): String {
val xs = Array(1) { "" }
try {
useTX(xs) { J.notNullString() }
} catch (e: NullPointerException) {
return "OK"
}
throw AssertionError("NullPointerException expected")
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,28 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
// FILE: nnStringVsTXString.kt
fun <T> useTX(x: T, fn: () -> T) = fn()
fun box(): String {
try {
useTX("") { J.notNullString() }
} catch (e: NullPointerException) {
return "OK"
}
throw AssertionError("NullPointerException expected")
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// FILE: stringVsT.kt
fun <T> useT(fn: () -> T) = fn()
fun checkNull(x: Any?) {
if (x != null) throw AssertionError("null expected")
}
fun box(): String {
checkNull(useT { J.string() })
return "OK"
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// FILE: stringVsTAny.kt
fun <T : Any> useTAny(fn: () -> T) = fn()
fun checkNull(x: Any?) {
if (x != null) throw AssertionError("null expected")
}
fun box(): String {
checkNull(useTAny { J.string() })
return "OK"
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,28 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// FILE: stringVsTConstrained.kt
fun <T> useTConstrained(xs: Array<T>, fn: () -> T) = fn()
fun box(): String {
val xs = Array(1) { "" }
try {
useTConstrained(xs) { J.string() }
} catch (e: NullPointerException) {
return "OK"
}
throw AssertionError("NullPointerException expected")
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,27 @@
// TARGET_BACKEND: JVM
// FILE: stringVsTXArray.kt
fun <T> useTX(x: T, fn: () -> T) = fn()
fun checkNull(x: Any?) {
if (x != null) throw AssertionError("null expected")
}
fun box(): String {
val xs = Array(1) { "" }
checkNull(useTX(xs) { J.string() })
return "OK"
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// FILE: stringVsTXString.kt
fun <T> useTX(x: T, fn: () -> T) = fn()
fun checkNull(x: Any?) {
if (x != null) throw AssertionError("null expected")
}
fun box(): String {
checkNull(useTX("") { J.string() })
return "OK"
}
// FILE: J.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class J {
public static String string() {
return null;
}
public static @NotNull String notNullString() {
return null;
}
}