Debugger: Fix breakpoints and stepping on a first line (KT-33304)
This commit fixes the 'SmartStepIntoTestGenerated#testFunWithExpressionBody' test.
This commit is contained in:
@@ -319,9 +319,14 @@ public class CodeInsightUtils {
|
||||
public static PsiElement getTopmostElementAtOffset(@NotNull PsiElement element, int offset) {
|
||||
do {
|
||||
PsiElement parent = element.getParent();
|
||||
if (parent == null || (parent.getTextOffset() < offset) || parent instanceof KtBlockExpression) {
|
||||
if (parent == null
|
||||
|| (parent.getTextOffset() < offset)
|
||||
|| parent instanceof KtBlockExpression
|
||||
|| parent instanceof PsiFile
|
||||
) {
|
||||
break;
|
||||
}
|
||||
|
||||
element = parent;
|
||||
}
|
||||
while(true);
|
||||
|
||||
+8
@@ -95,6 +95,14 @@ class LineBreakpointExpressionVisitor private constructor(
|
||||
return ApplicabilityResult.UNKNOWN
|
||||
}
|
||||
|
||||
override fun visitPackageDirective(directive: KtPackageDirective, data: Unit?): ApplicabilityResult {
|
||||
return ApplicabilityResult.UNKNOWN
|
||||
}
|
||||
|
||||
override fun visitImportDirective(importDirective: KtImportDirective, data: Unit?): ApplicabilityResult {
|
||||
return ApplicabilityResult.UNKNOWN
|
||||
}
|
||||
|
||||
override fun visitProperty(property: KtProperty, data: Unit?): ApplicabilityResult {
|
||||
if (property.hasModifier(KtTokens.CONST_KEYWORD)) {
|
||||
return ApplicabilityResult.UNKNOWN
|
||||
|
||||
+2
-5
@@ -23,10 +23,7 @@ import com.intellij.openapi.editor.Document
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.PsiComment
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.xdebugger.XDebuggerUtil
|
||||
import com.intellij.xdebugger.XSourcePosition
|
||||
@@ -114,7 +111,7 @@ fun isBreakpointApplicable(file: VirtualFile, line: Int, project: Project, check
|
||||
private fun getTopmostParentOnLineOrSelf(element: PsiElement, document: Document, line: Int): PsiElement {
|
||||
var current = element
|
||||
var parent = current.parent
|
||||
while (parent != null) {
|
||||
while (parent != null && parent !is PsiFile) {
|
||||
val offset = parent.textOffset
|
||||
if (offset > document.textLength) {
|
||||
val containingFile = element.containingFile
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
fun foo() {
|
||||
fun foo() { /// M
|
||||
require(true) { "foo" } /// *, L, λ
|
||||
|
||||
require(true) { val a = 5 } /// *, L, λ
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
fun foo1() {
|
||||
fun foo1() { /// M
|
||||
// We don't support function breakpoints for local functions yet
|
||||
fun local() { /// L
|
||||
println() /// L
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
class Foo1 {
|
||||
class Foo1 { /// M
|
||||
val x: String /// F, L
|
||||
get() = "foo" /// M
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user