Skip to content

Commit 75b4138

Browse files
Extended support for in-line chained lambdas
Allow users to put a lambda entry breakpoint on a selected lambda if line contains multiple chained lambda expressions. Fixes : #732 Co-authored-by: Andrey Loskutov <[email protected]>
1 parent 64c7d18 commit 75b4138

File tree

11 files changed

+500
-139
lines changed

11 files changed

+500
-139
lines changed

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/BreakpointMarkerUpdater.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2006, 2021 IBM Corporation and others.
2+
* Copyright (c) 2006, 2025 IBM Corporation and others.
33
*
44
* This program and the accompanying materials
55
* are made available under the terms of the Eclipse Public License 2.0

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,33 +1775,35 @@ protected String getMethodBreakpointText(IJavaMethodBreakpoint methodBreakpoint)
17751775
appendSuspendPolicy(methodBreakpoint,label);
17761776
appendThreadFilter(methodBreakpoint, label);
17771777

1778-
1779-
boolean entry = methodBreakpoint.isEntry();
1780-
boolean exit = methodBreakpoint.isExit();
1781-
if (entry && exit) {
1782-
label.append(DebugUIMessages.JDIModelPresentation_entry_and_exit);
1783-
} else if (entry) {
1784-
label.append(DebugUIMessages.JDIModelPresentation_entry);
1785-
} else if (exit) {
1786-
label.append(DebugUIMessages.JDIModelPresentation_exit);
1787-
}
1788-
appendConditional(methodBreakpoint, label);
1789-
1790-
if (member != null) {
1791-
label.append(" - "); //$NON-NLS-1$
1792-
label.append(getJavaLabelProvider().getText(member));
1778+
if (methodBreakpoint.isLambdaBreakpoint()) {
1779+
processInLineLambdaLabel(methodBreakpoint, label, member);
17931780
} else {
1794-
String methodSig= methodBreakpoint.getMethodSignature();
1795-
String methodName= methodBreakpoint.getMethodName();
1796-
if (methodSig != null) {
1797-
label.append(" - "); //$NON-NLS-1$
1798-
label.append(Signature.toString(methodSig, methodName, null, false, false));
1799-
} else if (methodName != null) {
1781+
boolean entry = methodBreakpoint.isEntry();
1782+
boolean exit = methodBreakpoint.isExit();
1783+
if (entry && exit) {
1784+
label.append(DebugUIMessages.JDIModelPresentation_entry_and_exit);
1785+
} else if (entry) {
1786+
label.append(DebugUIMessages.JDIModelPresentation_entry);
1787+
} else if (exit) {
1788+
label.append(DebugUIMessages.JDIModelPresentation_exit);
1789+
}
1790+
appendConditional(methodBreakpoint, label);
1791+
1792+
if (member != null) {
18001793
label.append(" - "); //$NON-NLS-1$
1801-
label.append(methodName);
1794+
label.append(getJavaLabelProvider().getText(member));
1795+
} else {
1796+
String methodSig = methodBreakpoint.getMethodSignature();
1797+
String methodName = methodBreakpoint.getMethodName();
1798+
if (methodSig != null) {
1799+
label.append(" - "); //$NON-NLS-1$
1800+
label.append(Signature.toString(methodSig, methodName, null, false, false));
1801+
} else if (methodName != null) {
1802+
label.append(" - "); //$NON-NLS-1$
1803+
label.append(methodName);
1804+
}
18021805
}
18031806
}
1804-
18051807
return label.toString();
18061808
}
18071809

@@ -2199,4 +2201,29 @@ public Color getBackground(Object element) {
21992201
public synchronized boolean requiresUIThread(Object element) {
22002202
return !isInitialized();
22012203
}
2204+
2205+
/**
2206+
* Process custom label for inline lambda breakpoints
2207+
*/
2208+
private void processInLineLambdaLabel(IJavaMethodBreakpoint methodBreakpoint, StringBuilder label, IMember member) throws CoreException {
2209+
appendConditional(methodBreakpoint, label);
2210+
if (methodBreakpoint.getLambdaName() != null) {
2211+
label.append(" - [ " + methodBreakpoint.getLambdaName() + " ]"); //$NON-NLS-1$ //$NON-NLS-2$
2212+
} else {
2213+
if (member != null) {
2214+
label.append(" - "); //$NON-NLS-1$
2215+
label.append(getJavaLabelProvider().getText(member));
2216+
} else {
2217+
String methodSig = methodBreakpoint.getMethodSignature();
2218+
String methodName = methodBreakpoint.getMethodName();
2219+
if (methodSig != null) {
2220+
label.append(" - "); //$NON-NLS-1$
2221+
label.append(Signature.toString(methodSig, methodName, null, false, false));
2222+
} else if (methodName != null) {
2223+
label.append(" - "); //$NON-NLS-1$
2224+
label.append(methodName);
2225+
}
2226+
}
2227+
}
2228+
}
22022229
}

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ActionMessages.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ public class ActionMessages extends NLS {
176176
public static String Override_Dependencies_label1;
177177
public static String Override_Dependencies_label2;
178178

179+
public static String LambdaSelectionDialog_title;
180+
179181
static {
180182
// load message values from bundle file
181183
NLS.initializeMessages(BUNDLE_NAME, ActionMessages.class);

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ActionMessages.properties

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
###############################################################################
2-
# Copyright (c) 2000, 2022 IBM Corporation and others.
2+
# Copyright (c) 2000, 2025 IBM Corporation and others.
33
#
44
# This program and the accompanying materials
55
# are made available under the terms of the Eclipse Public License 2.0
@@ -154,4 +154,5 @@ Override_Dependencies_title=Override Dependencies
154154
Override_Dependencies_button=&Override
155155
Override_Dependencies_button1=&Override Dependencies...
156156
Override_Dependencies_label1=Dependencies derived from the Java Build Path:
157-
Override_Dependencies_label2=Dependencies for launching:
157+
Override_Dependencies_label2=Dependencies for launching:
158+
LambdaSelectionDialog_title=Select lambda

0 commit comments

Comments
 (0)