Debugger: wrong stepping through the loop with continue label
#KT-5776 Fixed #KT-5664 Fixed
This commit is contained in:
@@ -661,6 +661,8 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void afterBody(@NotNull Label loopExit) {
|
public void afterBody(@NotNull Label loopExit) {
|
||||||
|
markLineNumber(forExpression);
|
||||||
|
|
||||||
increment(loopExit);
|
increment(loopExit);
|
||||||
|
|
||||||
v.mark(bodyEnd);
|
v.mark(bodyEnd);
|
||||||
|
|||||||
@@ -591,6 +591,7 @@ fun main(args: Array<String>) {
|
|||||||
testClass(javaClass<AbstractKotlinSteppingTest>()) {
|
testClass(javaClass<AbstractKotlinSteppingTest>()) {
|
||||||
model("debugger/tinyApp/src/stepInto/stepIntoAndSmartStepInto", testMethod = "doStepIntoTest", testClassName = "StepInto")
|
model("debugger/tinyApp/src/stepInto/stepIntoAndSmartStepInto", testMethod = "doStepIntoTest", testClassName = "StepInto")
|
||||||
model("debugger/tinyApp/src/stepInto/stepIntoAndSmartStepInto", testMethod = "doSmartStepIntoTest", testClassName = "SmartStepInto")
|
model("debugger/tinyApp/src/stepInto/stepIntoAndSmartStepInto", testMethod = "doSmartStepIntoTest", testClassName = "SmartStepInto")
|
||||||
|
model("debugger/tinyApp/src/stepInto/stepInto", testMethod = "doStepIntoTest", testClassName = "StepIntoOnly")
|
||||||
model("debugger/tinyApp/src/filters", testMethod = "doStepIntoTest")
|
model("debugger/tinyApp/src/filters", testMethod = "doStepIntoTest")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
LineBreakpoint created at continueLabel.kt:5
|
||||||
|
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! continueLabel.ContinueLabelPackage
|
||||||
|
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
|
continueLabel.kt:5
|
||||||
|
continueLabel.kt:6
|
||||||
|
continueLabel.kt:7
|
||||||
|
continueLabel.kt:8
|
||||||
|
continueLabel.kt:5
|
||||||
|
continueLabel.kt:6
|
||||||
|
continueLabel.kt:7
|
||||||
|
continueLabel.kt:10
|
||||||
|
continueLabel.kt:5
|
||||||
|
continueLabel.kt:12
|
||||||
|
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
|
|
||||||
|
Process finished with exit code 0
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
LineBreakpoint created at forLoop.kt:6
|
||||||
|
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! forLoop.ForLoopPackage
|
||||||
|
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
|
forLoop.kt:6
|
||||||
|
forLoop.kt:7
|
||||||
|
forLoop.kt:8
|
||||||
|
forLoop.kt:7
|
||||||
|
forLoop.kt:8
|
||||||
|
forLoop.kt:7
|
||||||
|
forLoop.kt:10
|
||||||
|
forLoop.kt:11
|
||||||
|
forLoop.kt:12
|
||||||
|
forLoop.kt:13
|
||||||
|
forLoop.kt:11
|
||||||
|
forLoop.kt:12
|
||||||
|
forLoop.kt:13
|
||||||
|
forLoop.kt:11
|
||||||
|
forLoop.kt:15
|
||||||
|
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
|
|
||||||
|
Process finished with exit code 0
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package continueLabel
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
//Breakpoint!
|
||||||
|
for(el in 0..1) {
|
||||||
|
val a1 = 1
|
||||||
|
if (el == 0) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
val a2 = 2
|
||||||
|
}
|
||||||
|
val a3 = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
// STEP_INTO: 9
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package forLoop
|
||||||
|
|
||||||
|
// KT-5664 Wrong stepping through for loop
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
//Breakpoint!
|
||||||
|
var x = 1
|
||||||
|
for (i in 0..1) {
|
||||||
|
x++
|
||||||
|
}
|
||||||
|
var y = 1
|
||||||
|
for (i in 0..1) {
|
||||||
|
y++
|
||||||
|
val y1 = y
|
||||||
|
}
|
||||||
|
val z = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// STEP_INTO: 14
|
||||||
@@ -28,7 +28,7 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
@InnerTestClasses({KotlinSteppingTestGenerated.StepInto.class, KotlinSteppingTestGenerated.SmartStepInto.class, KotlinSteppingTestGenerated.Filters.class})
|
@InnerTestClasses({KotlinSteppingTestGenerated.StepInto.class, KotlinSteppingTestGenerated.SmartStepInto.class, KotlinSteppingTestGenerated.StepIntoOnly.class, KotlinSteppingTestGenerated.Filters.class})
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest {
|
public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest {
|
||||||
@TestMetadata("idea/testData/debugger/tinyApp/src/stepInto/stepIntoAndSmartStepInto")
|
@TestMetadata("idea/testData/debugger/tinyApp/src/stepInto/stepIntoAndSmartStepInto")
|
||||||
@@ -205,6 +205,27 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("idea/testData/debugger/tinyApp/src/stepInto/stepInto")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class StepIntoOnly extends AbstractKotlinSteppingTest {
|
||||||
|
public void testAllFilesPresentInStepIntoOnly() throws Exception {
|
||||||
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/debugger/tinyApp/src/stepInto/stepInto"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("continueLabel.kt")
|
||||||
|
public void testContinueLabel() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepInto/stepInto/continueLabel.kt");
|
||||||
|
doStepIntoTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("forLoop.kt")
|
||||||
|
public void testForLoop() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepInto/stepInto/forLoop.kt");
|
||||||
|
doStepIntoTest(fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("idea/testData/debugger/tinyApp/src/filters")
|
@TestMetadata("idea/testData/debugger/tinyApp/src/filters")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user