From ec63efec3c0051f92c8fd4e4fe981f65b4a3ef0d Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Tue, 24 Apr 2018 13:56:14 +0300 Subject: [PATCH] Debugger: refactor list of breakpoints for the line with lambdas. ^KT-24136 Fixed Rename main line breakpoint to "Line" Change icon for lambda-breakpoint Move "all breakpoint" to the end of the breakpoints list --- .../breakpoints/KotlinLineBreakpointType.java | 30 ------------------- .../breakpoints/breakpointTypeUtils.kt | 20 ++++++++----- 2 files changed, 12 insertions(+), 38 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java index 90866b1f84f..e0f9d97649e 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinLineBreakpointType.java @@ -30,17 +30,14 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.xdebugger.XSourcePosition; import com.intellij.xdebugger.breakpoints.XBreakpoint; import com.intellij.xdebugger.breakpoints.XLineBreakpoint; -import kotlin.text.StringsKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.java.debugger.breakpoints.properties.JavaBreakpointProperties; import org.jetbrains.java.debugger.breakpoints.properties.JavaLineBreakpointProperties; -import org.jetbrains.kotlin.idea.KotlinIcons; import org.jetbrains.kotlin.idea.debugger.KotlinPositionManager; import org.jetbrains.kotlin.psi.KtClassInitializer; import org.jetbrains.kotlin.psi.KtFunction; -import javax.swing.*; import java.util.List; public class KotlinLineBreakpointType extends JavaLineBreakpointType { @@ -144,31 +141,4 @@ public class KotlinLineBreakpointType extends JavaLineBreakpointType { } return null; } - - public class KotlinLambdaBreakpointVariant extends ExactJavaBreakpointVariant { - public KotlinLambdaBreakpointVariant(@NotNull XSourcePosition position, @Nullable KtFunction function, Integer lambdaOrdinal) { - super(position, function, lambdaOrdinal); - } - - @Override - public Icon getIcon() { - return KotlinIcons.LAMBDA; - } - } - - public class KotlinLineBreakpointVariant extends ExactJavaBreakpointVariant { - public KotlinLineBreakpointVariant(XSourcePosition position, PsiElement element) { - super(position, element, -1); - } - - @Override - public String getText() { - return StringsKt.replace(super.getText(), " ", "", true); - } - - @Override - public Icon getIcon() { - return KotlinIcons.FUNCTION; - } - } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt index 84c5e73da2c..20f83c667c3 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/breakpoints/breakpointTypeUtils.kt @@ -86,8 +86,9 @@ fun canPutAt(file: VirtualFile, line: Int, project: Project, breakpointTypeClass } fun computeVariants( - project: Project, position: XSourcePosition, - kotlinBreakpointType: KotlinLineBreakpointType + project: Project, + position: XSourcePosition, + kotlinBreakpointType: KotlinLineBreakpointType ): List { val file = PsiManager.getInstance(project).findFile(position.file) as? KtFile ?: return emptyList() @@ -100,21 +101,24 @@ fun computeVariants( val elementAt = pos.elementAt.parentsWithSelf.firstIsInstance() val mainMethod = KotlinLineBreakpointType.getContainingMethod(elementAt) if (mainMethod != null) { - result.add(kotlinBreakpointType.KotlinLineBreakpointVariant( - XSourcePositionImpl.createByElement(mainMethod), - CodeInsightUtils.getTopmostElementAtOffset(elementAt, pos.offset))) + result.add( + kotlinBreakpointType.LineJavaBreakpointVariant( + position, + CodeInsightUtils.getTopmostElementAtOffset(elementAt, pos.offset), + -1 + ) + ) } lambdas.forEachIndexed { ordinal, lambda -> val positionImpl = XSourcePositionImpl.createByElement(lambda.bodyExpression) if (positionImpl != null) { - result.add(kotlinBreakpointType.KotlinLambdaBreakpointVariant(positionImpl, lambda, ordinal)) + result.add(kotlinBreakpointType.LambdaJavaBreakpointVariant(positionImpl, lambda, ordinal)) } } - val allBreakpoint = (kotlinBreakpointType as JavaLineBreakpointType).JavaBreakpointVariant(position) - result.addFirst(allBreakpoint) + result.add(kotlinBreakpointType.JavaBreakpointVariant(position)) return result }