From bbfc1a10ad6b99c091e06be28f3676a3038180a7 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Fri, 19 Jun 2020 16:42:03 +0300 Subject: [PATCH] [JS] Fix stack trace capturing from secondary constructors KT-37563 --- .../testData/box/expression/misc/stackTraceCapturing.kt | 3 +-- js/js.translator/testData/box/inline/kt26787.kt | 2 +- .../stdlibTestSnippets/abstractCollectionToArray.kt | 2 +- libraries/stdlib/js-v1/src/kotlin/builtins.kt | 4 +++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/js/js.translator/testData/box/expression/misc/stackTraceCapturing.kt b/js/js.translator/testData/box/expression/misc/stackTraceCapturing.kt index f85acb100fc..38ce64d41a0 100644 --- a/js/js.translator/testData/box/expression/misc/stackTraceCapturing.kt +++ b/js/js.translator/testData/box/expression/misc/stackTraceCapturing.kt @@ -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 diff --git a/js/js.translator/testData/box/inline/kt26787.kt b/js/js.translator/testData/box/inline/kt26787.kt index f5c11c2a88c..9bec381ded8 100644 --- a/js/js.translator/testData/box/inline/kt26787.kt +++ b/js/js.translator/testData/box/inline/kt26787.kt @@ -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 diff --git a/js/js.translator/testData/box/regression/stdlibTestSnippets/abstractCollectionToArray.kt b/js/js.translator/testData/box/regression/stdlibTestSnippets/abstractCollectionToArray.kt index 84d7f748ac4..0147c536496 100644 --- a/js/js.translator/testData/box/regression/stdlibTestSnippets/abstractCollectionToArray.kt +++ b/js/js.translator/testData/box/regression/stdlibTestSnippets/abstractCollectionToArray.kt @@ -1,4 +1,4 @@ -// EXPECTED_REACHABLE_NODES: 1750 +// EXPECTED_REACHABLE_NODES: 1700 // KJS_WITH_FULL_RUNTIME fun abstractCollectionToArray() { diff --git a/libraries/stdlib/js-v1/src/kotlin/builtins.kt b/libraries/stdlib/js-v1/src/kotlin/builtins.kt index 603e131d6e0..c38350d7344 100644 --- a/libraries/stdlib/js-v1/src/kotlin/builtins.kt +++ b/libraries/stdlib/js-v1/src/kotlin/builtins.kt @@ -98,7 +98,9 @@ internal fun subSequence(c: CharSequence, startIndex: Int, endIndex: Int): CharS @JsName("captureStack") internal fun captureStack(baseClass: JsClass, 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; }