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
import org.junit.Assert
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Assert
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.Pattern
@@ -20,10 +21,21 @@ enum class TestsExceptionFilePostfix(val text: String) {
}
sealed class TestsError(val original: Throwable, val postfix: TestsExceptionFilePostfix) : Error() {
override fun toString() = original.toString()
override fun getStackTrace() = original.stackTrace
override fun initCause(cause: Throwable?) = original.initCause(cause)
override val cause = original.cause
override fun toString(): String = original.toString()
override fun getStackTrace(): Array<out StackTraceElement> = original.stackTrace
override fun initCause(cause: Throwable?): Throwable = original.initCause(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)