diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt index 42f3d48df12..4b83e0db418 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt @@ -45,6 +45,7 @@ abstract class BasicIrBoxTest( ) { val runtime = listOf( "libraries/stdlib/js/src/kotlin/core.kt", + "libraries/stdlib/js/irRuntime/exceptions.kt", "libraries/stdlib/js/irRuntime/annotations.kt", "libraries/stdlib/js/irRuntime/internalAnnotations.kt", "libraries/stdlib/js/irRuntime/typeCheckUtils.kt" diff --git a/js/js.translator/testData/_commonFiles/fail.kt b/js/js.translator/testData/_commonFiles/fail.kt index c06f20cc1f1..ac818be21fb 100644 --- a/js/js.translator/testData/_commonFiles/fail.kt +++ b/js/js.translator/testData/_commonFiles/fail.kt @@ -3,6 +3,5 @@ package kotlin // see StdLibTestBase.removeAdHocAssertions fun fail(message: String? = null): Nothing { - js("throw new Error(message)") - null!! + throw Exception(message) } \ No newline at end of file diff --git a/libraries/stdlib/js/irRuntime/exceptions.kt b/libraries/stdlib/js/irRuntime/exceptions.kt new file mode 100644 index 00000000000..81501c9343f --- /dev/null +++ b/libraries/stdlib/js/irRuntime/exceptions.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ +package kotlin + +open class Exception(override val message: String?, override val cause: Throwable?) : Throwable() { + constructor() : this(null, null) + constructor(_message: String?) : this(_message, null) + constructor(_cause: Throwable?) : this(null, _cause) +} + +open class RuntimeException(message: String?, cause: Throwable?) : Exception(message, cause) { + constructor() : this(null, null) + constructor(message: String?) : this(message, null) + constructor(cause: Throwable?) : this(null, cause) +} + +open class IllegalArgumentException(message: String?, cause: Throwable?) : RuntimeException(message, cause) { + constructor() : this(null, null) + constructor(message: String?) : this(message, null) + constructor(cause: Throwable?) : this(null, cause) +} + +open class IllegalStateException(message: String?, cause: Throwable?) : RuntimeException(message, cause) { + constructor() : this(null, null) + constructor(message: String?) : this(message, null) + constructor(cause: Throwable?) : this(null, cause) +} + +open class ClassCastException(message: String?, cause: Throwable?) : RuntimeException(message, cause) { + constructor() : this(null, null) + constructor(message: String?) : this(message, null) +} + +open class NullPointerException(message: String?, cause: Throwable?) : RuntimeException(message, cause) { + constructor() : this(null, null) + constructor(message: String?) : this(message, null) +} + +open class IndexOutOfBoundsException(message: String?, cause: Throwable?) : RuntimeException(message, cause) { + constructor() : this(null, null) + constructor(message: String?) : this(message, null) +} + +open class AssertionError(message: String?, cause: Throwable?) : Exception(message, cause) { + constructor() : this(null, null) + constructor(message: Any?) : this(message?.toString(), message as? Throwable) + +} + + +// TODO: fix function names to satisfy style convention (depends on built-in names) +fun THROW_CCE() { + throw ClassCastException() +} +fun THROW_NPE() { + throw NullPointerException() +} \ No newline at end of file