WASM: Enable exception handling tests

This commit is contained in:
Igor Laevsky
2021-09-03 20:46:44 +03:00
committed by TeamCityServer
parent ef2970a888
commit 00f61978b8
124 changed files with 1137 additions and 234 deletions
@@ -1,6 +1,3 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// Doesn't fail on WASM backend if lambdas return Int. Need to investigate futher.
// WASM_MUTE_REASON: UNIT_ISSUES
// !LANGUAGE: +UseCorrectExecutionOrderForVarargArguments
// WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME
+3 -2
View File
@@ -1,10 +1,11 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
// On Wasm we don't currently have ArrayIndexOutOfBoundsException
// IGNORE_BACKEND: WASM
fun iarr(vararg a : Int) = a
fun <T> array(vararg a : T) = a
+3 -3
View File
@@ -1,9 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// IGNORE_BACKEND: JS
// reason - no error from division by zero in JS
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: IGNORED_IN_JS
// reason - no error from division by zero in JS or WASM
fun expectFail(f: () -> Unit): Nothing? {
try {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box() : String {
try {
return "OK"
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KT-3985
interface Trait<T> {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun <T> castToString(t: T) {
t as String
}
@@ -1,8 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
class LItr : ListIterator<String> by ArrayList<String>().listIterator()
@@ -1,8 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
class LItr : ListIterator<String> by ArrayList<String>().listIterator()
@@ -1,8 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
class LItr : ListIterator<String> by ArrayList<String>().listIterator()
@@ -1,8 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
class Itr : Iterator<String> by ArrayList<String>().iterator()
class MItr : MutableIterator<String> by ArrayList<String>().iterator()
class LItr : ListIterator<String> by ArrayList<String>().listIterator()
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun test1() : Boolean {
try {
return true
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
var GUEST_USER_ID = 3
val USER_ID =
try {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class Reluctant() {
init {
throw Exception("I'm not coming out")
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
//WITH_RUNTIME
class Test {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// This test checks that bytecode optimizer doesn't crash on unreachable code.
fun box(): String {
+3 -2
View File
@@ -1,9 +1,10 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: WASM
// reason - no error from division by zero in JS
// in wasm we just trap
// WASM_MUTE_REASON: IGNORED_IN_JS
fun expectArithmeticException(f: () -> Unit): Boolean {
try {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
OUTER@while (true) {
var x = ""
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun foo(x: Long, y: Int, z: Double, s: String) {}
fun box(): String {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
var x = "OK"
while (true) {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
var r = ""
for (i in 1..1) {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
while (true) {
try {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
var result = "Fail"
fun foo() {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
try {
} catch (e: Exception) {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun nyCompiler() {
try {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
var s = ""
try {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun foo(args: Array<String>) {
try {
} finally {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun foo(): Int {
try {
} finally {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A() {
fun action() = "OK"
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A(var value: String)
fun box(): String {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A(var value: String)
fun box(): String {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A(var value: String)
fun box(): String {
+4 -2
View File
@@ -1,6 +1,8 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KJS_WITH_FULL_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
fun foo() : Int =
try {
2
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun exit(): Nothing = null!!
fun box(): String {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun exit(): Nothing = null!!
fun box(): String {
@@ -1,5 +1,3 @@
// IGNORE_BACKEND: WASM
var log = ""
fun foo() {
@@ -1,5 +1,3 @@
// IGNORE_BACKEND: WASM
var log = ""
fun foo() {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box() : String {
try {
} finally {
@@ -1,4 +1,3 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String =
"O" + try { throw Exception("oops!") } catch (e: Exception) { "K" }
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun cleanup() {}
inline fun concat(x: String, y: String): String = x + y
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun catchAll(x: String, block: () -> Unit): String {
try {
block()
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// TODO: muted automatically, investigate should it be ran for JS or not
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
public inline fun fails(block: () -> Unit): Throwable? {
var thrown: Throwable? = null
try {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun <T> tryOrElse(f1: () -> T, f2: () -> T): T {
try {
return f1()
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun <T> tryOrElse(f1: () -> T, f2: () -> T): T =
try { f1() } catch (e: Exception) { f2() }
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun <T> tryAndThen(f1: () -> Unit, f2: () -> Unit, f3: () -> T): T {
try {
f1()
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun zap(s: String) = s
inline fun tryZap(string: String, fn: (String) -> String) =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun zap(s: String) = s
inline fun tryZap(s1: String, s2: String, fn: (String, String) -> String) =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun zap(s: String) = s
inline fun tryZap(s1: String, s2: String, fn: String.(String) -> String) =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun zap(s: String) = s
inline fun tryZap(string: String, fn: String.() -> String) =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun zap(s: String) = s
inline fun tryZap(string: String, fn: (String) -> String) =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun zap(s: String) = s
inline fun tryZap1(string: String, fn: (String) -> String) =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun doCall(f: () -> Any) = f()
fun test1() {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class Exception1(msg: String): Exception(msg)
class Exception2(msg: String): Exception(msg)
class Exception3(msg: String): Exception(msg)
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun test(s: () -> Int): Int =
try {
val i = s()
@@ -1,4 +1,3 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String =
"O" + try { "K" } catch (e: Exception) { "oops!" }
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String =
"" +
try { "O" } catch (e: Exception) { "1" } +
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun idiv(a: Int, b: Int): Int =
if (b == 0) throw Exception("Division by zero") else a / b
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun idiv(a: Int, b: Int): Int =
if (b == 0) throw Exception("Division by zero") else a / b
@@ -1,5 +1,8 @@
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_COLLECTIONS
fun box(): String {
val a = arrayListOf<String>()
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String =
"O" +
try {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class MyException(message: String): Exception(message)
fun box(): String =
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
inline fun catchAll(x: String, block: () -> Unit): String {
try {
block()
@@ -1,5 +1,3 @@
// IGNORE_BACKEND: WASM
var log = ""
fun foo() {
@@ -1,7 +1,6 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JS, JS_IR, NATIVE
// IGNORE_BACKEND: JS, JS_IR, NATIVE, WASM
// IGNORE_BACKEND: JS_IR_ES6
// WASM_MUTE_REASON: IGNORED_IN_JS
fun f(
f1: () -> String = { f2() },
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
enum class Empty
fun box(): String {
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
enum class Color {
RED,
BLUE
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun <T> foo(t: T) {
t!!
}
-2
View File
@@ -1,5 +1,3 @@
// IGNORE_BACKEND: WASM
fun test(): String {
var exception: Throwable? = null
val f = {
-2
View File
@@ -1,5 +1,3 @@
// IGNORE_BACKEND: WASM
fun <T> id(t: T): T = t
fun test(b: Boolean): String {
+201
View File
@@ -0,0 +1,201 @@
// Tests that are inspired by the stack-related and verifier-related bugs in the wasm backend
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
fun box(): String {
if (!test1()) return "Fail 1"
if (!test2()) return "Fail 2"
if (!test3()) return "Fail 3"
if (!test4()) return "Fail 4"
if (!test5()) return "Fail 5"
if (!test6()) return "Fail 6"
if (!test7()) return "Fail 7"
if (!test8()) return "Fail 8"
return "OK"
}
open class Foo: Throwable("") {}
class Bar: Foo() {}
class Baz: Foo() {}
class Darb: Throwable("") {}
fun ooo() {
throw Baz()
}
fun zoot(): String {
return "str"
}
// Standard exception handling case without finally
fun test1(): Boolean {
try {
ooo()
} catch (b: Bar) {
throw Darb()
return false
} catch (b: Baz) {
return true
} catch (b: Darb) {
return false
}
return false
}
// Standart case with finally
fun test2(): Boolean {
var catched = false
try {
ooo()
} catch (b: Bar) {
throw Darb()
return false
} catch (b: Baz) {
catched = true
return false
} catch (b: Darb) {
return false
} finally {
return catched
}
return false
}
// Fallthrough with value on the stack (only needs to compile)
fun test3(): Boolean {
try {
1
} catch (e: Throwable) {
2
}
return true
}
// Fallthrough with value on the stack and finally
fun test4(): Boolean {
var seenFinally = false
try {
ooo()
2
} catch (b: Throwable) {
1
} finally {
seenFinally = true
}
return seenFinally
}
// Try with return value which is used later
fun test5(): Boolean {
val arg = try {
ooo()
1
} catch (b: Baz) {
3
} catch (b: Darb) {
4
}
return arg == 3
}
// Case where catch uses labeled return which doesn't end the catch
fun foo_for_test6(): String {
var ret = ""
try {
ooo()
} catch (e: Throwable) {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach
}
ret += "O"
} finally {
ret += "K"
}
return ret
}
fun test6(): Boolean {
return foo_for_test6() == "OK"
}
// Catch is ended with the loop break into outer loop
fun test7(): Boolean {
var num_exc = 0
var num_breaks = 0
var num_finallies = 0
var num_bodies = 0
loop@ for (i in 1..3) {
for (j in 1..5) {
try {
ooo()
} catch (e: Throwable) {
++num_exc
if (i == 2 || i == 4) {
++num_breaks
break@loop
}
} finally {
++num_finallies
}
++num_bodies
}
}
if (num_exc == 6 && num_breaks == 1 && num_finallies == 6 && num_bodies == 5)
return true
return false
}
// Finally throws an exception
class Baobab: Throwable()
class Zanzibar: Throwable()
class Hypo(val catchedBaobab: Boolean, val thrownZanzibar: Boolean, val seenFinally: Boolean): Throwable()
fun golb() {
throw Baobab()
}
fun foo(i: Int) {
var catchedBaobab = false
var thrownZanzibar = false
var seenFinally = false
try {
golb()
} catch (b: Baobab) {
catchedBaobab = true
if (i == 9) {
thrownZanzibar = true
throw Zanzibar()
}
} finally {
seenFinally = true
throw Hypo(catchedBaobab, thrownZanzibar, seenFinally)
}
}
fun test8(): Boolean {
try {
foo(9)
} catch (z: Hypo) {
if (z.catchedBaobab && z.seenFinally && z.thrownZanzibar)
return true
return false
} catch (e: Throwable) {
return false
}
return false
}
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun a(): IntArray? = null
fun b(): Nothing = throw Exception()
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun a(): String? = null
fun b(): Nothing = throw Exception()
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
//KT-3297 Calling the wrong function inside an extension method to the Function0 class
infix fun <R> Function0<R>.or(alt: () -> R): R {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun test(): () -> Throwable {
return try {
TODO()
@@ -1,6 +1,10 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// Result::getOrNull contains cast (value as T). It gets inlined but type parameter is not updated. We loose information that it was
// a String and instead we treat it as Any. We then fail to assign it into temporary variable of type String?.
// WASM_MUTE_REASON: TYPE_ISSUES
fun f1(): () -> Result<String> {
return {
runCatching {
@@ -1,6 +1,10 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// Result::getOrNull contains cast (value as T). It gets inlined but type parameter is not updated. We loose information that it was
// a String and instead we treat it as Any. We then fail to assign it into temporary variable of type String?.
// WASM_MUTE_REASON: TYPE_ISSUES
fun f1() = lazy {
runCatching {
"OK"
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// !LANGUAGE: +InlineClasses
inline class Inner(val x: Int)
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// !LANGUAGE: +InlineClasses
inline class A(val x: String = "")
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// !LANGUAGE: +InlineClasses
inline class A(val x: Any? = null)
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// !LANGUAGE: +InlineClasses
inline class A(val x: Int = 0)
@@ -1,10 +1,10 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JS, JS_IR
// IGNORE_BACKEND: JS, JS_IR, WASM
// IGNORE_BACKEND: JS_IR_ES6
// FULL_JDK
// WITH_RUNTIME
// WASM_MUTE_REASON: IGNORED_IN_JS
inline class Id(val id: String)
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// !LANGUAGE: +InlineClasses
inline class Result<out T>(val value: Any?) {
@@ -1,5 +1,6 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: TYPE_ISSUES
inline class Result<out T>(val value: Any?) {
fun exceptionOrNull(): Throwable? =
when (value) {
@@ -1,8 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: STDLIB_TEXT
fun box(): String {
try {
"a b c".trimMargin(" ")
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A(val p: String) {
val prop: String = throw RuntimeException()
}
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A {
val p : Int = try{
1
@@ -1,7 +1,8 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: REFLECTION
fun <T> something(): T = Any() as T
class Context<T>
+1 -2
View File
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
package foo
fun box(): String {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun box(): String {
try {
if ((null as Int?)!! == 10) return "Fail #1"
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
public class A {
fun getFromClass(): Boolean {
try {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
fun <T> eval(fn: () -> T) = fn()
public class A {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A {
private lateinit var str: String
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
class A {
public lateinit var str: String
}
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// IGNORE_BACKEND: JVM
class Test {
@@ -1,8 +1,9 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: REFLECTION
fun box(): String {
lateinit var str: String
try {
@@ -1,7 +1,8 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: REFLECTION
import kotlin.UninitializedPropertyAccessException
fun runNoInline(f: () -> Unit) = f()
@@ -1,7 +1,8 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: REFLECTION
import kotlin.UninitializedPropertyAccessException
fun runNoInline(f: () -> Unit) = f()
@@ -1,7 +1,8 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: REFLECTION
import kotlin.UninitializedPropertyAccessException
fun box(): String {
@@ -1,7 +1,8 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: REFLECTION
import kotlin.UninitializedPropertyAccessException
fun box(): String {
@@ -1,5 +1,4 @@
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: EXCEPTIONS_NOT_IMPLEMENTED
// WITH_RUNTIME
import kotlin.UninitializedPropertyAccessException

Some files were not shown because too many files have changed in this diff Show More