[coroutine-debugger]: Step out before a suspend call should execute the function before jumping to the parent frame.

IDEA-349060


Merge-request: IJ-MR-128837
Merged-by: Maria Sokolova <maria.sokolova@jetbrains.com>

GitOrigin-RevId: 5cbb101132a960f52f51050f6a4cf13264ee0d07
This commit is contained in:
Maria Sokolova
2024-03-14 18:15:55 +00:00
committed by intellij-monorepo-bot
parent b74c275094
commit 2cc8fa2e69
26 changed files with 1176 additions and 644 deletions
@@ -119,7 +119,7 @@ object KotlinStepActionFactory {
// first check coroutines
// TODO: it is better to move it somewhere else
val method = DebuggerUtilsEx.getMethod(StackFrameInterceptor.instance?.callerLocation(suspendContext))
if (method != null && method != getDirectCallerMethod(suspendContext.frameProxy)) {
if (method != null) {
installCoroutineResumedBreakpoint(suspendContext, method)
applyThreadFilter(getThreadFilterFromContext(suspendContext))
// call ResumeCommand.contextAction directly: if createResumeCommand is used, it will also reset thread filter
@@ -157,23 +157,4 @@ object KotlinStepActionFactory {
}
return null
}
private fun getDirectCallerMethod(frame: StackFrameProxyImpl?): Method? {
if (frame != null) {
try {
val threadProxy = frame.threadProxy()
val callerIndex = frame.frameIndex + 1
if (callerIndex >= threadProxy.frameCount()) {
return null
}
val callerFrame = threadProxy.frame(callerIndex)
if (callerFrame != null) {
return DebuggerUtilsEx.getMethod(callerFrame.location())
}
} catch (e: EvaluateException) {
LOG.error(e)
}
}
return null
}
}
@@ -120,8 +120,9 @@ class CoroutineStackFrameInterceptor : StackFrameInterceptor {
val suspendExitMode = frameProxy.location().getSuspendExitMode()
return when (suspendExitMode) {
SuspendExitMode.SUSPEND_LAMBDA -> frameProxy.thisVariableValue()
// completionVariableValue seems wrong here
SuspendExitMode.SUSPEND_METHOD_PARAMETER -> /*frameProxy.completionVariableValue() ?:*/ frameProxy.continuationVariableValue()
// If the final call within a function body is a suspend call, and it's the only suspend call,
// then tail call optimization is applied, and no state machine is generated, hence only completion variable is available.
SuspendExitMode.SUSPEND_METHOD_PARAMETER -> frameProxy.continuationVariableValue() ?: frameProxy.completionVariableValue()
else -> null
}
}
@@ -131,7 +132,9 @@ class CoroutineStackFrameInterceptor : StackFrameInterceptor {
val continuationObject = extractContinuation(frameProxy) ?: return null
val executionContext = DefaultExecutionContext(suspendContext, frameProxy)
val debugMetadata = DebugMetadata.instance(executionContext) ?: return null
val completionObject = debugMetadata.baseContinuationImpl.getNextContinuation(continuationObject, executionContext) ?: return null
// At first, try to extract the completion field of the current BaseContinuationImpl instance,
// if the completion field is null, then return the object itself and try to extract the StackTraceElement
val completionObject = debugMetadata.baseContinuationImpl.getNextContinuation(continuationObject, executionContext) ?: continuationObject
val stackTraceElement = debugMetadata.getStackTraceElement(completionObject, executionContext)?.stackTraceElement() ?: return null
return DebuggerUtilsEx.findOrCreateLocation(suspendContext.debugProcess, stackTraceElement)
}
@@ -364,11 +364,6 @@ public abstract class K2IdeK1CodeKotlinSteppingTestGenerated extends AbstractK2I
runTest("../testData/stepping/stepOut/inapplicableFieldWatchpoints.kt");
}
@TestMetadata("souSuspendFun.kt")
public void testSouSuspendFun() throws Exception {
runTest("../testData/stepping/stepOut/souSuspendFun.kt");
}
@TestMetadata("stepOutFromInlineFunctionThenResume.kt")
public void testStepOutFromInlineFunctionThenResume() throws Exception {
runTest("../testData/stepping/stepOut/stepOutFromInlineFunctionThenResume.kt");
@@ -242,109 +242,158 @@ public abstract class K2IdeK2CodeKotlinEvaluateExpressionTestGenerated extends A
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractK2IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractK2IdeK2CodeKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractK2IdeK2CodeKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractK2IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractK2IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractK2IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("../testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -364,11 +364,6 @@ public abstract class K2IdeK2CodeKotlinSteppingTestGenerated extends AbstractK2I
runTest("../testData/stepping/stepOut/inapplicableFieldWatchpoints.kt");
}
@TestMetadata("souSuspendFun.kt")
public void testSouSuspendFun() throws Exception {
runTest("../testData/stepping/stepOut/souSuspendFun.kt");
}
@TestMetadata("stepOutFromInlineFunctionThenResume.kt")
public void testStepOutFromInlineFunctionThenResume() throws Exception {
runTest("../testData/stepping/stepOut/stepOutFromInlineFunctionThenResume.kt");
@@ -364,11 +364,6 @@ public abstract class K2IndyLambdaKotlinSteppingTestGenerated extends AbstractK2
runTest("../testData/stepping/stepOut/inapplicableFieldWatchpoints.kt");
}
@TestMetadata("souSuspendFun.kt")
public void testSouSuspendFun() throws Exception {
runTest("../testData/stepping/stepOut/souSuspendFun.kt");
}
@TestMetadata("stepOutFromInlineFunctionThenResume.kt")
public void testStepOutFromInlineFunctionThenResume() throws Exception {
runTest("../testData/stepping/stepOut/stepOutFromInlineFunctionThenResume.kt");
@@ -242,109 +242,158 @@ public abstract class IndyLambdaIrKotlinEvaluateExpressionTestGenerated extends
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractIndyLambdaIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractIndyLambdaIrKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractIndyLambdaIrKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractIndyLambdaIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractIndyLambdaIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractIndyLambdaIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -364,11 +364,6 @@ public abstract class IndyLambdaIrKotlinSteppingTestGenerated extends AbstractIn
runTest("testData/stepping/stepOut/inapplicableFieldWatchpoints.kt");
}
@TestMetadata("souSuspendFun.kt")
public void testSouSuspendFun() throws Exception {
runTest("testData/stepping/stepOut/souSuspendFun.kt");
}
@TestMetadata("stepOutFromInlineFunctionThenResume.kt")
public void testStepOutFromInlineFunctionThenResume() throws Exception {
runTest("testData/stepping/stepOut/stepOutFromInlineFunctionThenResume.kt");
@@ -242,109 +242,158 @@ public abstract class IrKotlinEvaluateExpressionInMppTestGenerated extends Abstr
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractIrKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractIrKotlinEvaluateExpressionInMppTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractIrKotlinEvaluateExpressionInMppTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractIrKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractIrKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractIrKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -242,109 +242,158 @@ public abstract class IrKotlinEvaluateExpressionTestGenerated extends AbstractIr
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_OLD_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractIrKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractIrKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_OLD_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_OLD_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractIrKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_OLD_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -242,109 +242,158 @@ public abstract class IrKotlinEvaluateExpressionWithIRFragmentCompilerTestGenera
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractIrKotlinEvaluateExpressionWithIRFragmentCompilerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractIrKotlinEvaluateExpressionWithIRFragmentCompilerTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractIrKotlinEvaluateExpressionWithIRFragmentCompilerTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractIrKotlinEvaluateExpressionWithIRFragmentCompilerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractIrKotlinEvaluateExpressionWithIRFragmentCompilerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractIrKotlinEvaluateExpressionWithIRFragmentCompilerTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -364,11 +364,6 @@ public abstract class IrKotlinSteppingTestGenerated extends AbstractIrKotlinStep
runTest("testData/stepping/stepOut/inapplicableFieldWatchpoints.kt");
}
@TestMetadata("souSuspendFun.kt")
public void testSouSuspendFun() throws Exception {
runTest("testData/stepping/stepOut/souSuspendFun.kt");
}
@TestMetadata("stepOutFromInlineFunctionThenResume.kt")
public void testStepOutFromInlineFunctionThenResume() throws Exception {
runTest("testData/stepping/stepOut/stepOutFromInlineFunctionThenResume.kt");
@@ -242,109 +242,158 @@ public abstract class K1IdeK2CodeKotlinEvaluateExpressionInMppTestGenerated exte
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractK1IdeK2CodeKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractK1IdeK2CodeKotlinEvaluateExpressionInMppTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractK1IdeK2CodeKotlinEvaluateExpressionInMppTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractK1IdeK2CodeKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractK1IdeK2CodeKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractK1IdeK2CodeKotlinEvaluateExpressionInMppTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -242,109 +242,158 @@ public abstract class K1IdeK2CodeKotlinEvaluateExpressionTestGenerated extends A
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Coroutines extends AbstractK1IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
public abstract static class Coroutines extends AbstractK1IdeK2CodeKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public abstract static class StepOut extends AbstractK1IdeK2CodeKotlinEvaluateExpressionTest {
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut")
public static class Uncategorized extends AbstractK1IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutOfSingleSuspendCall.kt")
public void testStepOutOfSingleSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutOfSingleSuspendCall.kt");
}
@TestMetadata("stepOutSeveralSuspendFrames.kt")
public void testStepOutSeveralSuspendFrames() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFrames.kt");
}
@TestMetadata("stepOutSeveralSuspendFramesSeveralCoroutines.kt")
public void testStepOutSeveralSuspendFramesSeveralCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutSeveralSuspendFramesSeveralCoroutines.kt");
}
@TestMetadata("stepOutWithException.kt")
public void testStepOutWithException() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/stepOutWithException.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported")
public static class Unsupported extends AbstractK1IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("stepOutTailCallOptimization.kt")
public void testStepOutTailCallOptimization() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stepOut/unsupported/stepOutTailCallOptimization.kt");
}
}
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("testData/evaluation/singleBreakpoint/coroutines")
public static class Uncategorized extends AbstractK1IdeK2CodeKotlinEvaluateExpressionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doSingleBreakpointTest, this, TargetBackend.JVM_IR_WITH_IR_EVALUATOR, testDataFilePath);
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("accessClassPropertyInSuspendFunction.kt")
public void testAccessClassPropertyInSuspendFunction() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/accessClassPropertyInSuspendFunction.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("anyUpdateInvokeStatic.kt")
public void testAnyUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateInvokeStatic.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("anyUpdateVariable.kt")
public void testAnyUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/anyUpdateVariable.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("capturedReceiverName.kt")
public void testCapturedReceiverName() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/capturedReceiverName.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("coroutineContextExists.kt")
public void testCoroutineContextExists() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineContextExists.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("coroutineScopeReceiver.kt")
public void testCoroutineScopeReceiver() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/coroutineScopeReceiver.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("functionCallWithSuspendFunctionInside.kt")
public void testFunctionCallWithSuspendFunctionInside() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/functionCallWithSuspendFunctionInside.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("infixSuspendCall.kt")
public void testInfixSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/infixSuspendCall.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("operatorSuspendCall.kt")
public void testOperatorSuspendCall() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/operatorSuspendCall.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("primitivesCoertion.kt")
public void testPrimitivesCoertion() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/primitivesCoertion.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateInvokeStatic.kt")
public void testStringUpdateInvokeStatic() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeStatic.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("stringUpdateInvokeVirtual.kt")
public void testStringUpdateInvokeVirtual() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateInvokeVirtual.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("stringUpdatePutField.kt")
public void testStringUpdatePutField() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdatePutField.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("stringUpdateVariable.kt")
public void testStringUpdateVariable() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/stringUpdateVariable.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionInClass.kt")
public void testSuspendFunctionInClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionInClass.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionWithInlineClass.kt")
public void testSuspendFunctionWithInlineClass() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionWithInlineClass.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("suspendFunctionsWithContext.kt")
public void testSuspendFunctionsWithContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithContext.kt");
}
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("suspendFunctionsWithoutContext.kt")
public void testSuspendFunctionsWithoutContext() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutContext.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
@TestMetadata("suspendFunctionsWithoutKotlinxCoroutines.kt")
public void testSuspendFunctionsWithoutKotlinxCoroutines() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/suspendFunctionsWithoutKotlinxCoroutines.kt");
}
@TestMetadata("uncapturedVariableInSuspendLambda.kt")
public void testUncapturedVariableInSuspendLambda() throws Exception {
runTest("testData/evaluation/singleBreakpoint/coroutines/uncapturedVariableInSuspendLambda.kt");
}
}
}
@@ -364,11 +364,6 @@ public abstract class K1IdeK2CodeKotlinSteppingTestGenerated extends AbstractK1I
runTest("testData/stepping/stepOut/inapplicableFieldWatchpoints.kt");
}
@TestMetadata("souSuspendFun.kt")
public void testSouSuspendFun() throws Exception {
runTest("testData/stepping/stepOut/souSuspendFun.kt");
}
@TestMetadata("stepOutFromInlineFunctionThenResume.kt")
public void testStepOutFromInlineFunctionThenResume() throws Exception {
runTest("testData/stepping/stepOut/stepOutFromInlineFunctionThenResume.kt");
@@ -0,0 +1,37 @@
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3)-javaagent
import kotlinx.coroutines.*
fun main() {
runBlocking {
for (i in 0..100) {
launch {
val x = funWithSuspendLast(i)
// EXPRESSION: i
// RESULT: 25: I
println("x = $x")
delay(1)
println("i = $i")
}
}
}
}
suspend fun funWithSuspendLast(i: Int): Int {
if (i == 25) {
//Breakpoint!
return someInt()
} else {
return 10
}
}
suspend fun someInt(): Int {
delay(1)
return 42
}
// STEP_OUT: 1
// STEP_OVER: 3
// REGISTRY: debugger.filter.breakpoints.by.coroutine.id=true
@@ -0,0 +1,12 @@
LineBreakpoint created at stepOutOfSingleSuspendCall.kt:23
Run Java
Connected to the target VM
stepOutOfSingleSuspendCall.kt:23
stepOutOfSingleSuspendCall.kt:9
stepOutOfSingleSuspendCall.kt:12
stepOutOfSingleSuspendCall.kt:13
stepOutOfSingleSuspendCall.kt:14
Compile bytecode for i
Disconnected from the target VM
Process finished with exit code 0
@@ -0,0 +1,46 @@
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3)-javaagent
package souSuspendFun
import kotlinx.coroutines.*
private fun foo(): Int {
//Breakpoint!
return 42
}
suspend fun fourth(): Int {
delay(1)
foo()
return 5
}
suspend fun third() : Int? {
delay(1)
val res = fourth()
println(res)
return res
}
suspend fun second(): Int {
delay(1)
return third()?.let { return it } ?: 0
}
suspend fun first(): Int {
delay(1)
second()
return 12
}
fun main() {
runBlocking {
launch {
first()
}
}
}
// STEP_OUT: 5
// REGISTRY: debugger.filter.breakpoints.by.coroutine.id=true
@@ -0,0 +1,12 @@
LineBreakpoint created at stepOutSeveralSuspendFrames.kt:9
Run Java
Connected to the target VM
stepOutSeveralSuspendFrames.kt:9
stepOutSeveralSuspendFrames.kt:14
stepOutSeveralSuspendFrames.kt:20
stepOutSeveralSuspendFrames.kt:27
stepOutSeveralSuspendFrames.kt:33
stepOutSeveralSuspendFrames.kt:40
Disconnected from the target VM
Process finished with exit code 0
@@ -0,0 +1,53 @@
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3)-javaagent
package souSuspendFun
import kotlinx.coroutines.*
private fun foo(i: Int): Int {
if (i == 25) {
//Breakpoint!
return 42
}
return -1
}
suspend fun fourth(i: Int): Int {
delay(1)
foo(i)
return 5
}
suspend fun third(i: Int) : Int? {
delay(1)
val res = fourth(i)
println(res)
return res
}
suspend fun second(i: Int): Int {
delay(1)
return third(i)?.let { return it } ?: 0
}
suspend fun first(i: Int): Int {
delay(1)
second(i)
// EXPRESSION: i
// RESULT: 25: I
return 12
}
fun main() {
runBlocking {
for (i in 0 .. 100) {
launch {
first(i)
}
}
}
}
// STEP_OUT: 5
// REGISTRY: debugger.filter.breakpoints.by.coroutine.id=true
@@ -0,0 +1,13 @@
LineBreakpoint created at stepOutSeveralSuspendFramesSeveralCoroutines.kt:10
Run Java
Connected to the target VM
stepOutSeveralSuspendFramesSeveralCoroutines.kt:10
stepOutSeveralSuspendFramesSeveralCoroutines.kt:17
stepOutSeveralSuspendFramesSeveralCoroutines.kt:23
stepOutSeveralSuspendFramesSeveralCoroutines.kt:30
stepOutSeveralSuspendFramesSeveralCoroutines.kt:38
stepOutSeveralSuspendFramesSeveralCoroutines.kt:46
Compile bytecode for i
Disconnected from the target VM
Process finished with exit code 0
@@ -0,0 +1,36 @@
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3)-javaagent
import kotlinx.coroutines.*
fun main() {
runBlocking {
for (i in 0..100) {
launch {
val x = funWithSuspendLast(i)
println("x = $x")
delay(1)
println("i = $i")
}
}
}
}
suspend fun funWithSuspendLast(i: Int): Int {
if (i == 25) {
//Breakpoint!
someInt()
error("This exception should be thrown")
} else {
return 10
}
}
suspend fun someInt(): Int {
delay(1)
return 42
}
// STEP_OUT: 1
// STEP_OVER: 3
// REGISTRY: debugger.filter.breakpoints.by.coroutine.id=true
@@ -0,0 +1,26 @@
LineBreakpoint created at stepOutWithException.kt:21
Run Java
Connected to the target VM
stepOutWithException.kt:21
Disconnected from the target VM
Process finished with exit code 1
Exception in thread "main" java.lang.IllegalStateException: This exception should be thrown
at StepOutWithExceptionKt.funWithSuspendLast(stepOutWithException.kt:22)
at StepOutWithExceptionKt$funWithSuspendLast$1.invokeSuspend(stepOutWithException.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:235)
at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:168)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:474)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:508)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:497)
at kotlinx.coroutines.CancellableContinuationImpl.resumeUndispatched(CancellableContinuationImpl.kt:595)
at kotlinx.coroutines.EventLoopImplBase$DelayedResumeTask.run(EventLoop.common.kt:493)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at StepOutWithExceptionKt.main(stepOutWithException.kt:6)
at StepOutWithExceptionKt.main(stepOutWithException.kt)
@@ -1,8 +1,8 @@
// ATTACH_LIBRARY: coroutines
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3)-javaagent
package souSuspendFun
import forTests.builder
import kotlinx.coroutines.*
private fun foo(): Int {
//Breakpoint!
@@ -26,10 +26,14 @@ suspend fun first(): Int {
return 12
}
fun main(args: Array<String>) {
builder {
first() // 6
fun main() {
runBlocking {
launch {
first()
}
}
}
// STEP_OUT: 5
// REGISTRY: debugger.filter.breakpoints.by.coroutine.id=true
@@ -0,0 +1,8 @@
LineBreakpoint created at stepOutTailCallOptimization.kt:9
Run Java
Connected to the target VM
stepOutTailCallOptimization.kt:9
stepOutTailCallOptimization.kt:13
Disconnected from the target VM
Process finished with exit code 0
@@ -1,12 +0,0 @@
LineBreakpoint created at souSuspendFun.kt:9
Run Java
Connected to the target VM
souSuspendFun.kt:9
souSuspendFun.kt:13
souSuspendFun.kt:17
souSuspendFun.kt:21
souSuspendFun.kt:25
souSuspendFun.kt:31
Disconnected from the target VM
Process finished with exit code 0