From 3160fc84fa1a1dd1816bdab811efa7c56823790b Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Wed, 28 Apr 2021 14:24:01 +0200 Subject: [PATCH] [kotlin-native][tests] kt-42208 test added. --- .../kotlin/native/test/debugger/LldbTests.kt | 30 +++++++++++++++++++ .../kotlin/native/test/debugger/Matchers.kt | 4 +++ 2 files changed, 34 insertions(+) diff --git a/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/LldbTests.kt b/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/LldbTests.kt index 6787efe6d90..a8b20c9b639 100644 --- a/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/LldbTests.kt +++ b/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/LldbTests.kt @@ -169,4 +169,34 @@ class LldbTests { Breakpoint 1: where = [..]`kfun:#question(kotlin.String;kotlin.Array){}kotlin.String [..] at kt33055.kt:2:12, [..] """.trimIndent().lldb(kt33055) } + + @Test + fun `kt42208`() = lldbComplexTest { + val kt42208One = """ + fun main() { + foo()() + } + """.feedOutput("kt42208-1.kt") + val kt42208Two = """ + // aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + inline fun foo() = { + throw Error() + } + """.feedOutput("kt42208-2.kt") + val binary = arrayOf(kt42208One, kt42208Two).binary("kt42208", "-g") + """ + > b ThrowException + > ${lldbCommandRunOrContinue()} + > bt + * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 + * frame #0: [..] kt42208.kexe`ThrowException + frame #1: [..] kt42208.kexe`kfun:main${'$'}_1#internal at kt42208-2.kt:3:18 + frame #2: [..] kt42208.kexe`kfun:${'$'}main${'$'}_1${'$'}FUNCTION_REFERENCE${'$'}0.invoke#internal(_this=[..]) at kt42208-1.kt:2:5 + frame #3: [..] kt42208.kexe`kfun:${'$'}main${'$'}_1${'$'}FUNCTION_REFERENCE${'$'}0.${'$'}invoke(_this=[..]){}kotlin.Nothing#internal at kt42208-1.kt:2:5 + frame #4: [..] kt42208.kexe`kfun:#main(){} at kt42208-1.kt:2:5 + frame #5: [..] kt42208.kexe`Konan_start(args=[..]) at kt42208-1.kt:1:1 + frame #6: [..] + frame #7: [..] + """.trimIndent().lldb(binary) + } } \ No newline at end of file diff --git a/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/Matchers.kt b/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/Matchers.kt index b5e22c60eb6..5e5ad52b523 100644 --- a/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/Matchers.kt +++ b/kotlin-native/backend.native/tests/debugger/src/test/kotlin/org/jetbrains/kotlin/native/test/debugger/Matchers.kt @@ -148,6 +148,10 @@ class ToolDriverHelper(private val driver: ToolDriver, val root:Path) { driver.compile(it, this, "-produce", "framework", *args) } + fun Array.binary(name:String, vararg args:String = emptyArray()):Path = root.resolve("$name.kexe").also { + driver.compile(it, this, *args) + } + fun swiftc(output: String, swiftSrc: Path, vararg args: String) = root.resolve(output).also { driver.swiftc(it, swiftSrc, *args, "-Xlinker", "-rpath", "-Xlinker", "@executable_path") }