From 38b1e6beabcb1f325bf5a559e26d4f9ac017bbe1 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 6 Apr 2020 19:58:49 +0300 Subject: [PATCH] Make Throwable.printStackTrace() common #KT-38044 --- libraries/stdlib/common/src/kotlin/ExceptionsH.kt | 6 ++++++ libraries/stdlib/js/src/kotlin/throwableExtensions.kt | 8 ++++++++ libraries/stdlib/jvm/src/kotlin/util/Exceptions.kt | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libraries/stdlib/common/src/kotlin/ExceptionsH.kt b/libraries/stdlib/common/src/kotlin/ExceptionsH.kt index fc29fce07c2..a7915556f91 100644 --- a/libraries/stdlib/common/src/kotlin/ExceptionsH.kt +++ b/libraries/stdlib/common/src/kotlin/ExceptionsH.kt @@ -130,6 +130,12 @@ internal class KotlinNothingValueException : RuntimeException { @SinceKotlin("1.4") public expect fun Throwable.stackTraceToString(): String +/** + * Prints the [detailed description][Throwable.stackTraceToString] of this throwable to the standard output or standard error output. + */ +@SinceKotlin("1.4") +public expect fun Throwable.printStackTrace(): Unit + /** * When supported by the platform, adds the specified exception to the list of exceptions that were * suppressed in order to deliver this exception. diff --git a/libraries/stdlib/js/src/kotlin/throwableExtensions.kt b/libraries/stdlib/js/src/kotlin/throwableExtensions.kt index e176bb1595e..a2e4c2c43ed 100644 --- a/libraries/stdlib/js/src/kotlin/throwableExtensions.kt +++ b/libraries/stdlib/js/src/kotlin/throwableExtensions.kt @@ -17,6 +17,14 @@ package kotlin @SinceKotlin("1.4") public actual fun Throwable.stackTraceToString(): String = ExceptionTraceBuilder().buildFor(this) +/** + * Prints the [detailed description][Throwable.stackTraceToString] of this throwable to console error output. + */ +@SinceKotlin("1.4") +public actual fun Throwable.printStackTrace() { + console.error(this.stackTraceToString()) +} + /** * Adds the specified exception to the list of exceptions that were * suppressed in order to deliver this exception. diff --git a/libraries/stdlib/jvm/src/kotlin/util/Exceptions.kt b/libraries/stdlib/jvm/src/kotlin/util/Exceptions.kt index e37e4c04143..a8319c6b8d8 100644 --- a/libraries/stdlib/jvm/src/kotlin/util/Exceptions.kt +++ b/libraries/stdlib/jvm/src/kotlin/util/Exceptions.kt @@ -18,7 +18,7 @@ import kotlin.internal.* */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") // to be used when no member available @kotlin.internal.InlineOnly -public inline fun Throwable.printStackTrace(): Unit = (this as java.lang.Throwable).printStackTrace() +public actual inline fun Throwable.printStackTrace(): Unit = (this as java.lang.Throwable).printStackTrace() /** * Prints the [detailed description][Throwable.stackTraceToString] of this throwable to the specified [writer].