Implement fillInStackTrace and others in TestsError

This fixes exception stack traces in some compiler tests. Also provide
explicit return types to get rid of platform type inspections
This commit is contained in:
Alexander Udalov
2019-02-07 12:08:14 +01:00
parent ce7d8a6874
commit 23298af5a4
@@ -5,10 +5,11 @@
package org.jetbrains.kotlin package org.jetbrains.kotlin
import org.junit.Assert
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Assert
import java.io.File import java.io.File
import java.lang.Error import java.io.PrintStream
import java.io.PrintWriter
import java.util.regex.Matcher import java.util.regex.Matcher
import java.util.regex.Pattern import java.util.regex.Pattern
@@ -20,10 +21,21 @@ enum class TestsExceptionFilePostfix(val text: String) {
} }
sealed class TestsError(val original: Throwable, val postfix: TestsExceptionFilePostfix) : Error() { sealed class TestsError(val original: Throwable, val postfix: TestsExceptionFilePostfix) : Error() {
override fun toString() = original.toString() override fun toString(): String = original.toString()
override fun getStackTrace() = original.stackTrace override fun getStackTrace(): Array<out StackTraceElement> = original.stackTrace
override fun initCause(cause: Throwable?) = original.initCause(cause) override fun initCause(cause: Throwable?): Throwable = original.initCause(cause)
override val cause = original.cause override val cause: Throwable? get() = original.cause
// This function is called in the constructor of Throwable, where original is not yet initialized
override fun fillInStackTrace(): Throwable? = @Suppress("UNNECESSARY_SAFE_CALL") original?.fillInStackTrace()
override fun setStackTrace(stackTrace: Array<out StackTraceElement>?) {
original.stackTrace = stackTrace
}
override fun printStackTrace() = original.printStackTrace()
override fun printStackTrace(s: PrintStream?) = original.printStackTrace(s)
override fun printStackTrace(s: PrintWriter?) = original.printStackTrace(s)
} }
class TestsCompilerError(original: Throwable) : TestsError(original, TestsExceptionFilePostfix.COMPILER_ERROR) class TestsCompilerError(original: Throwable) : TestsError(original, TestsExceptionFilePostfix.COMPILER_ERROR)