Skip to content

Commit ff907c1

Browse files
committed
Fix test case related to using IJavaElement to find package references
Fixes 1 test Signed-off-by: David Thompson <[email protected]>
1 parent 9f411bc commit ff907c1

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/core/search/matching/DOMPackageReferenceLocator.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
package org.eclipse.jdt.internal.core.search.matching;
1212

1313
import org.eclipse.jdt.core.IJavaElement;
14+
import org.eclipse.jdt.core.IJavaProject;
1415
import org.eclipse.jdt.core.dom.ASTNode;
1516
import org.eclipse.jdt.core.dom.IBinding;
1617
import org.eclipse.jdt.core.dom.IPackageBinding;
1718
import org.eclipse.jdt.core.dom.Name;
1819
import org.eclipse.jdt.core.dom.PackageDeclaration;
1920
import org.eclipse.jdt.internal.core.search.LocatorResponse;
20-
import org.eclipse.jdt.internal.javac.dom.JavacPackageBinding;
2121

2222
public class DOMPackageReferenceLocator extends DOMPatternLocator {
2323

@@ -61,10 +61,17 @@ public LocatorResponse resolveLevel(org.eclipse.jdt.core.dom.ASTNode node, IBind
6161
working = working.getParent();
6262
}
6363
if( fullName != null ) {
64-
String typeName = fullName.toString();
65-
IJavaElement je = binding instanceof JavacPackageBinding jpb ? jpb.findJavaElementForClass(typeName) : ipb.getJavaElement();
66-
if( je != null && !this.locator.pattern.focus.equals(je)) {
67-
return toResponse(IMPOSSIBLE_MATCH);
64+
65+
IJavaElement je = fullName.resolveBinding().getJavaElement();
66+
je = je.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
67+
if( je != null) {
68+
IJavaProject otherProject = (IJavaProject)je.getAncestor(IJavaElement.JAVA_PROJECT);
69+
if (otherProject == null || !otherProject.equals(this.locator.pattern.focus.getAncestor(IJavaElement.JAVA_PROJECT))) {
70+
return toResponse(IMPOSSIBLE_MATCH);
71+
}
72+
if (!this.locator.pattern.focus.getElementName().equals(je.getElementName())) {
73+
return toResponse(IMPOSSIBLE_MATCH);
74+
}
6875
}
6976
// If we can't find a java element, let's give some leeway
7077
return toResponse(ACCURATE_MATCH);

0 commit comments

Comments
 (0)