[JS] Fix stack trace capturing from secondary constructors KT-37563

This commit is contained in:
Svyatoslav Kuzmich
2020-06-19 16:42:03 +03:00
parent 6792779281
commit bbfc1a10ad
4 changed files with 6 additions and 5 deletions
@@ -1,6 +1,5 @@
// EXPECTED_REACHABLE_NODES: 1281
// EXPECTED_REACHABLE_NODES: 1462
// KJS_WITH_FULL_RUNTIME
// IGNORE_BACKEND: JS
// Reproduction of KT-37563
// Test stack trace capturing in various kinds of constructors
+1 -1
View File
@@ -1,5 +1,5 @@
// KJS_WITH_FULL_RUNTIME
// EXPECTED_REACHABLE_NODES: 1618
// EXPECTED_REACHABLE_NODES: 1600
// Simplified example from https://youtrack.jetbrains.com/issue/KT-26787
@@ -1,4 +1,4 @@
// EXPECTED_REACHABLE_NODES: 1750
// EXPECTED_REACHABLE_NODES: 1700
// KJS_WITH_FULL_RUNTIME
fun abstractCollectionToArray() {
@@ -98,7 +98,9 @@ internal fun subSequence(c: CharSequence, startIndex: Int, endIndex: Int): CharS
@JsName("captureStack")
internal fun captureStack(baseClass: JsClass<in Throwable>, instance: Throwable) {
if (js("Error").captureStackTrace) {
js("Error").captureStackTrace(instance, instance::class.js);
// Using uncropped stack traces due to KT-37563.
// Precise stack traces are implemented in JS IR compiler and stdlib
js("Error").captureStackTrace(instance);
} else {
instance.asDynamic().stack = js("new Error()").stack;
}