Implement new stepping for suspend functions
This commit is contained in:
+4
-2
@@ -90,8 +90,10 @@ abstract class KotlinDescriptorTestCaseWithStepping : KotlinDescriptorTestCase()
|
||||
}
|
||||
|
||||
private fun SuspendContextImpl.doStepOver(ignoreBreakpoints: Boolean = false) {
|
||||
val stepOverCommand = runReadAction { commandProvider.getStepOverCommand(this, ignoreBreakpoints, debuggerContext) }
|
||||
?: dp.createStepOverCommand(this, ignoreBreakpoints)
|
||||
val stepOverCommand = runReadAction {
|
||||
val sourcePosition = debuggerContext.sourcePosition
|
||||
commandProvider.getStepOverCommand(this, ignoreBreakpoints, sourcePosition)
|
||||
} ?: dp.createStepOverCommand(this, ignoreBreakpoints)
|
||||
|
||||
dp.managerThread.schedule(stepOverCommand)
|
||||
}
|
||||
|
||||
+33
@@ -931,6 +931,39 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest {
|
||||
public void testWhenWithoutExpression() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/whenWithoutExpression.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/coroutines")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Coroutines extends AbstractKotlinSteppingTest {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doStepOverTest, this, testDataFilePath);
|
||||
}
|
||||
|
||||
public void testAllFilesPresentInCoroutines() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/coroutines"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@TestMetadata("sequenceNested.kt")
|
||||
public void testSequenceNested() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/coroutines/sequenceNested.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("sequenceNested2.kt")
|
||||
public void testSequenceNested2() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/coroutines/sequenceNested2.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("sequenceSimple.kt")
|
||||
public void testSequenceSimple() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/coroutines/sequenceSimple.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("sequenceTake2.kt")
|
||||
public void testSequenceTake2() throws Exception {
|
||||
runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/stepOver/coroutines/sequenceTake2.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("idea/jvm-debugger/jvm-debugger-test/testData/stepping/filters")
|
||||
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
package test
|
||||
|
||||
fun main() {
|
||||
val seq = sequence {
|
||||
//Breakpoint!
|
||||
yield(
|
||||
sequence {
|
||||
yield(1)
|
||||
yield(2)
|
||||
yield(3)
|
||||
}
|
||||
)
|
||||
|
||||
yield(
|
||||
sequence {
|
||||
yield(4)
|
||||
yield(5)
|
||||
yield(6)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
seq.map { it.toList() }.flatten().toList()
|
||||
}
|
||||
|
||||
// STEP_OVER: 10
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
LineBreakpoint created at sequenceNested.kt:6
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
sequenceNested.kt:6
|
||||
sequenceNested.kt:7
|
||||
sequenceNested.kt:6
|
||||
sequenceNested.kt:14
|
||||
sequenceNested.kt:15
|
||||
sequenceNested.kt:14
|
||||
sequenceNested.kt:21
|
||||
sequenceNested.kt:23
|
||||
sequenceNested.kt:24
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
package test
|
||||
|
||||
fun main() {
|
||||
val seq = sequence {
|
||||
yield(
|
||||
sequence {
|
||||
//Breakpoint!
|
||||
yield(1)
|
||||
yield(2)
|
||||
yield(3)
|
||||
}
|
||||
)
|
||||
|
||||
yield(
|
||||
sequence {
|
||||
yield(4)
|
||||
yield(5)
|
||||
yield(6)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
seq.map { it.toList() }.flatten().toList()
|
||||
}
|
||||
|
||||
// STEP_OVER: 10
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
LineBreakpoint created at sequenceNested2.kt:8
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
sequenceNested2.kt:8
|
||||
sequenceNested2.kt:9
|
||||
sequenceNested2.kt:10
|
||||
sequenceNested2.kt:11
|
||||
sequenceNested2.kt:23
|
||||
sequenceNested2.kt:23
|
||||
sequenceNested2.kt:24
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
package test
|
||||
|
||||
fun main() {
|
||||
val seq = sequence {
|
||||
//Breakpoint!
|
||||
yield(1)
|
||||
yield(2)
|
||||
yield(3)
|
||||
}
|
||||
|
||||
seq.toList()
|
||||
}
|
||||
|
||||
// STEP_OVER: 4
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
LineBreakpoint created at sequenceSimple.kt:6
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
sequenceSimple.kt:6
|
||||
sequenceSimple.kt:7
|
||||
sequenceSimple.kt:8
|
||||
sequenceSimple.kt:9
|
||||
sequenceSimple.kt:11
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package test
|
||||
|
||||
fun main() {
|
||||
val seq = sequence {
|
||||
//Breakpoint!
|
||||
yield(1)
|
||||
yield(2)
|
||||
yield(3)
|
||||
}
|
||||
|
||||
seq.take(2).toList()
|
||||
}
|
||||
|
||||
// STEP_OVER: 4
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
LineBreakpoint created at sequenceTake2.kt:6
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
sequenceTake2.kt:6
|
||||
sequenceTake2.kt:7
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
Reference in New Issue
Block a user