Minor: Extract a const for continuation variable name
This commit is contained in:
+1
-1
@@ -322,7 +322,7 @@ class CoroutineTransformerMethodVisitor(
|
||||
methodNode.instructions.insert(methodNode.instructions.last, endLabel)
|
||||
methodNode.localVariables.add(
|
||||
LocalVariableNode(
|
||||
"\$continuation",
|
||||
CONTINUATION_VARIABLE_NAME,
|
||||
languageVersionSettings.continuationAsmType().descriptor,
|
||||
null,
|
||||
startLabel,
|
||||
|
||||
@@ -124,6 +124,8 @@ val INITIAL_SUSPEND_DESCRIPTOR_FOR_DO_RESUME = object : CallableDescriptor.UserD
|
||||
|
||||
val CONTINUATION_PARAMETER_NAME = Name.identifier("continuation")
|
||||
|
||||
const val CONTINUATION_VARIABLE_NAME = "\$continuation"
|
||||
|
||||
// Resolved calls to suspension function contain descriptors as they visible within coroutines:
|
||||
// E.g. `fun <V> await(f: CompletableFuture<V>): V` instead of `fun <V> await(f: CompletableFuture<V>, machine: Continuation<V>): Unit`
|
||||
// See `createJvmSuspendFunctionView` and it's usages for clarification
|
||||
|
||||
+2
-1
@@ -18,6 +18,7 @@ import com.intellij.debugger.memory.utils.StackFrameItem
|
||||
import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl
|
||||
import com.intellij.xdebugger.frame.XNamedValue
|
||||
import com.sun.jdi.*
|
||||
import org.jetbrains.kotlin.codegen.coroutines.CONTINUATION_VARIABLE_NAME
|
||||
import org.jetbrains.kotlin.idea.debugger.evaluate.LOG
|
||||
import org.jetbrains.kotlin.idea.debugger.evaluate.VariableFinder.Companion.SUSPEND_LAMBDA_CLASSES
|
||||
import org.jetbrains.kotlin.idea.debugger.evaluate.getInvokePolicy
|
||||
@@ -91,7 +92,7 @@ class KotlinCoroutinesAsyncStackTraceProvider : AsyncStackTraceProvider {
|
||||
return null
|
||||
}
|
||||
|
||||
val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null
|
||||
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
|
||||
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
||||
|
||||
return collectFrames(continuation)
|
||||
|
||||
@@ -293,7 +293,7 @@ class VariableFinder private constructor(private val context: EvaluationContextI
|
||||
return null
|
||||
}
|
||||
|
||||
val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null
|
||||
val continuationVariable = frameProxy.safeVisibleVariableByName(CONTINUATION_VARIABLE_NAME) ?: return null
|
||||
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
||||
return findCoroutineContextForContinuation(continuation)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user