Add box and PSI2IR tests for special cases listed in KT-35849
This commit is contained in:
+26
@@ -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;
|
||||
}
|
||||
}
|
||||
+26
@@ -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;
|
||||
}
|
||||
}
|
||||
+29
@@ -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;
|
||||
}
|
||||
}
|
||||
+29
@@ -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;
|
||||
}
|
||||
}
|
||||
+28
@@ -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;
|
||||
}
|
||||
}
|
||||
+26
@@ -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;
|
||||
}
|
||||
}
|
||||
+26
@@ -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;
|
||||
}
|
||||
}
|
||||
+28
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+26
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user