diff --git a/compiler/testData/debug/stepping/simpleInlineDefaultArg.kt b/compiler/testData/debug/stepping/simpleInlineDefaultArg.kt index 2de524ab586..e9910dae5f1 100644 --- a/compiler/testData/debug/stepping/simpleInlineDefaultArg.kt +++ b/compiler/testData/debug/stepping/simpleInlineDefaultArg.kt @@ -1,5 +1,5 @@ -// IGNORE_BACKEND: JVM_IR // FILE: test.kt + inline fun alsoInline() = "OK" inline fun ifoo(s: String = alsoInline()): String { @@ -10,9 +10,29 @@ fun box(): String { return ifoo() } +// `alsoInline` is inlined in the `ifoo$default` stub. When exiting the inline +// codegen, the line number is reset. Therefore any code generated with line +// number information will emit a new line number so that stepping continues +// in the caller. +// +// For JVM none of the code after `alsoInline` leads to line number generation. +// This seems problematic as the line number for the inline function is then +// in effect for instructions outside the scope of the `$i$f$alsoInline` +// variable life time. +// +// For JVM_IR a line number is generated for the code following `alsoInline`. +// Therefore, we stop on line 5 before entering `alsoInline` +// and we step back to line 5 after `alsoInline` and before the body of +// `ifoo`. This seems reasonable and also help ensure that line numbers +// for the inline function are only used for instructions covered by +// the `$i$f$alsoInline` variable life time. + // LINENUMBERS // test.kt:10 box // test.kt:5 box // test.kt:3 box +// LINENUMBERS JVM_IR +// test.kt:5 box +// LINENUMBERS // test.kt:6 box // test.kt:10 box \ No newline at end of file