diff options
author | Andrey Loskutov | 2020-10-29 16:09:24 +0000 |
---|---|---|
committer | Andrey Loskutov | 2020-10-31 10:07:29 +0000 |
commit | 519cf752fec01fa27513dd25b9c02a002ea0b8da (patch) | |
tree | 34dd376518dde1b11aeda454dfe0ec34e6285293 | |
parent | 21b48b0cc5a5605f420ab5cbe16149823d55cfd4 (diff) | |
download | eclipse.platform.debug-519cf752fec01fa27513dd25b9c02a002ea0b8da.tar.gz eclipse.platform.debug-519cf752fec01fa27513dd25b9c02a002ea0b8da.tar.xz eclipse.platform.debug-519cf752fec01fa27513dd25b9c02a002ea0b8da.zip |
Bug 565462 - SourceLookup + Java 11 + Find Duplicates brokenY20201102-1200Y20201101-1200Y20201031-1200I20201103-0030I20201102-1910I20201101-1800I20201031-1800
Added new ISourceLookupDirector.equalSourceElements() API to allow
Java debugger distinguish between different Java model elements that
represent same Java class files.
The new interface method has default implementation that delegates to
Objects.equals() to keep the previous behavior unchanged for existing
clients.
Change-Id: Ib9a514366e8b613b31fd5143a54fbf2186c4788b
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
3 files changed, 27 insertions, 1 deletions
diff --git a/org.eclipse.debug.core/.settings/.api_filters b/org.eclipse.debug.core/.settings/.api_filters index d039d6c92..c3e0e24e6 100644 --- a/org.eclipse.debug.core/.settings/.api_filters +++ b/org.eclipse.debug.core/.settings/.api_filters @@ -1,5 +1,13 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <component id="org.eclipse.debug.core" version="2"> + <resource path="core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java" type="org.eclipse.debug.core.sourcelookup.ISourceLookupDirector"> + <filter comment="565462#c15" id="404000815"> + <message_arguments> + <message_argument value="org.eclipse.debug.core.sourcelookup.ISourceLookupDirector"/> + <message_argument value="equalSourceElements(Object, Object)"/> + </message_arguments> + </filter> + </resource> <resource path="core/org/eclipse/debug/internal/core/groups/GroupLaunch.java" type="org.eclipse.debug.internal.core.groups.GroupLaunch"> <filter comment="Bug 548841 - Mark internal package as x-internal in manifest" id="305365105"> <message_arguments> diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java index a3d1cac8f..153a7e980 100644 --- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java +++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java @@ -534,7 +534,7 @@ public abstract class AbstractSourceLookupDirector implements ISourceLookupDirec return false; } for (Object obj : sources) { - if (obj.equals(sourceToAdd)) { + if (equalSourceElements(obj, sourceToAdd)) { return true; } } diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java index 0f97d1e5c..dd247c2a6 100644 --- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java +++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java @@ -13,6 +13,8 @@ *******************************************************************************/ package org.eclipse.debug.core.sourcelookup; +import java.util.Objects; + import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; @@ -182,4 +184,20 @@ public interface ISourceLookupDirector extends IPersistableSourceLocator2 { */ Object getSourceElement(Object element); + /** + * Answers if the objects should be considered as same source elements (e.g. + * resulting in the physically same storage element), independently if in + * the modelled world they may be different views on same data. + * + * @param element1 first source element + * @param element2 second source element + * @return Returns {@code true} if two source elements represent physically + * same data. Default implementation just delegates to + * {@link Objects#equals(Object, Object)}. + * @since 3.17 + */ + default boolean equalSourceElements(Object element1, Object element2) { + return Objects.equals(element1, element2); + } + } |