From f912602ddcff37e1f7339fc354948839e173f0d3 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 21 Nov 2019 01:33:29 +0900 Subject: [PATCH] Debugger, minor: Move KotlinSourcePosition to top level --- .../stepping/DebuggerSteppingHelper.java | 2 +- .../debugger/stepping/KotlinSourcePosition.kt | 39 +++++++++++++++++++ .../stepping/KotlinSteppingCommandProvider.kt | 30 +------------- 3 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSourcePosition.kt diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java index c6e0d390bbd..d9bd43f36e3 100644 --- a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/DebuggerSteppingHelper.java @@ -49,7 +49,7 @@ public class DebuggerSteppingHelper { public static DebugProcessImpl.ResumeCommand createStepOverCommand( SuspendContextImpl suspendContext, boolean ignoreBreakpoints, - KotlinSteppingCommandProvider.KotlinSourcePosition kotlinSourcePosition + KotlinSourcePosition kotlinSourcePosition ) { DebugProcessImpl debugProcess = suspendContext.getDebugProcess(); diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSourcePosition.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSourcePosition.kt new file mode 100644 index 00000000000..608a85ba431 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSourcePosition.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.debugger.stepping + +import com.intellij.debugger.SourcePosition +import org.jetbrains.kotlin.idea.core.util.getLineNumber +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.parents + +data class KotlinSourcePosition( + val file: KtFile, val declaration: KtDeclaration, + val linesRange: IntRange, val sourcePosition: SourcePosition +) { + companion object { + fun create(sourcePosition: SourcePosition): KotlinSourcePosition? { + val file = sourcePosition.file as? KtFile ?: return null + if (sourcePosition.line < 0) return null + + val elementAt = sourcePosition.elementAt ?: return null + + val containingDeclaration = elementAt.parents + .filterIsInstance() + .filter { it is KtFunction || it is KtProperty || it is KtClassInitializer } + .firstOrNull { !KtPsiUtil.isLocal(it) } + ?: return null + + val startLineNumber = containingDeclaration.getLineNumber(true) + 1 + val endLineNumber = containingDeclaration.getLineNumber(false) + 1 + if (startLineNumber > endLineNumber) return null + + val linesRange = startLineNumber..endLineNumber + + return KotlinSourcePosition(file, containingDeclaration, linesRange, sourcePosition) + } + } +} diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt index aa8fd80e08a..2c19901a197 100644 --- a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt @@ -98,34 +98,6 @@ class KotlinSteppingCommandProvider : JvmSteppingCommandProvider() { return null } - data class KotlinSourcePosition( - val file: KtFile, val declaration: KtDeclaration, - val linesRange: IntRange, val sourcePosition: SourcePosition - ) { - companion object { - fun create(sourcePosition: SourcePosition): KotlinSourcePosition? { - val file = sourcePosition.file as? KtFile ?: return null - if (sourcePosition.line < 0) return null - - val elementAt = sourcePosition.elementAt ?: return null - - val containingDeclaration = elementAt.parents - .filterIsInstance() - .filter { it is KtFunction || it is KtProperty || it is KtClassInitializer } - .firstOrNull { !KtPsiUtil.isLocal(it) } - ?: return null - - val startLineNumber = containingDeclaration.getLineNumber(true) + 1 - val endLineNumber = containingDeclaration.getLineNumber(false) + 1 - if (startLineNumber > endLineNumber) return null - - val linesRange = startLineNumber..endLineNumber - - return KotlinSourcePosition(file, containingDeclaration, linesRange, sourcePosition) - } - } - } - private fun isSpecialStepOverNeeded(kotlinSourcePosition: KotlinSourcePosition): Boolean { val sourcePosition = kotlinSourcePosition.sourcePosition @@ -311,7 +283,7 @@ interface KotlinMethodFilter : MethodFilter { fun getStepOverAction( location: Location, - kotlinSourcePosition: KotlinSteppingCommandProvider.KotlinSourcePosition, + kotlinSourcePosition: KotlinSourcePosition, frameProxy: StackFrameProxyImpl, isDexDebug: Boolean ): Action {