diff --git a/idea/testData/debugger/tinyApp/outs/soInlineOperatorIterator.out b/idea/testData/debugger/tinyApp/outs/soInlineOperatorIterator.out new file mode 100644 index 00000000000..a57b0993a6f --- /dev/null +++ b/idea/testData/debugger/tinyApp/outs/soInlineOperatorIterator.out @@ -0,0 +1,22 @@ +LineBreakpoint created at soInlineOperatorIterator.kt:7 +!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! soInlineOperatorIterator.SoInlineOperatorIteratorKt +Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' +soInlineOperatorIterator.kt:7 +soInlineOperatorIterator.kt:8 +soInlineOperatorIterator.kt:23 +soInlineOperatorIterator.kt:27 +soInlineOperatorIterator.kt:9 +soInlineOperatorIterator.kt:8 +soInlineOperatorIterator.kt:23 +soInlineOperatorIterator.kt:27 +soInlineOperatorIterator.kt:9 +soInlineOperatorIterator.kt:8 +soInlineOperatorIterator.kt:23 +soInlineOperatorIterator.kt:27 +soInlineOperatorIterator.kt:9 +soInlineOperatorIterator.kt:8 +soInlineOperatorIterator.kt:23 +soInlineOperatorIterator.kt:11 +Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' + +Process finished with exit code 0 diff --git a/idea/testData/debugger/tinyApp/src/stepping/stepOver/soInlineOperatorIterator.kt b/idea/testData/debugger/tinyApp/src/stepping/stepOver/soInlineOperatorIterator.kt new file mode 100644 index 00000000000..4521756877c --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/stepping/stepOver/soInlineOperatorIterator.kt @@ -0,0 +1,31 @@ +package soInlineOperatorIterator + +// TODO: Test with current bad behaviour of KT-14296 + +fun main(args: Array) { + //Breakpoint! + val list = listOf("a", "b", "c") + for (element in Some(list)) { // No inlining visible on this string + nonInline(element) + } +} + +fun nonInline(p: T): T = p + +class Some(val list: List) { + operator fun iterator() = SomeIterator(list) +} + +class SomeIterator(list: List) { + val iterator = list.iterator() + + inline operator fun hasNext() : Boolean { + return iterator.hasNext() + } + + inline operator fun next(): T { + return iterator.next() + } +} + +// STEP_OVER: 15 diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java index aaae589a2d3..94c5343f728 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java @@ -505,6 +505,12 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest { doStepOverTest(fileName); } + @TestMetadata("soInlineOperatorIterator.kt") + public void testSoInlineOperatorIterator() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/stepOver/soInlineOperatorIterator.kt"); + doStepOverTest(fileName); + } + @TestMetadata("soInlineWhileCondition.kt") public void testSoInlineWhileCondition() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/stepOver/soInlineWhileCondition.kt");