Skip to content

Commit 162e99f

Browse files
mickaelistriadatho7561
authored andcommitted
[Search] Improve super type reference
Do not rely on flavors (that are set by the ECJ parser, not being used here)
1 parent e326c3f commit 162e99f

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,17 @@
1010
*******************************************************************************/
1111
package org.eclipse.jdt.internal.core.search.matching;
1212

13+
import java.util.Set;
14+
15+
import org.eclipse.jdt.core.dom.ClassInstanceCreation;
1316
import org.eclipse.jdt.core.dom.IBinding;
1417
import org.eclipse.jdt.core.dom.ITypeBinding;
1518
import org.eclipse.jdt.core.dom.QualifiedName;
1619
import org.eclipse.jdt.core.dom.QualifiedType;
1720
import org.eclipse.jdt.core.dom.SimpleName;
1821
import org.eclipse.jdt.core.dom.SimpleType;
1922
import org.eclipse.jdt.core.dom.Type;
23+
import org.eclipse.jdt.core.dom.TypeDeclaration;
2024
import org.eclipse.jdt.internal.core.search.LocatorResponse;
2125

2226
public class DOMSuperTypeReferenceLocator extends DOMPatternLocator {
@@ -39,8 +43,12 @@ public LocatorResponse match(org.eclipse.jdt.core.dom.LambdaExpression node, Nod
3943

4044
@Override
4145
public LocatorResponse match(Type node, NodeSetWrapper nodeSet, MatchLocator locator) {
42-
if (this.locator.flavors != PatternLocator.SUPERTYPE_REF_FLAVOR)
46+
if (Set.of(TypeDeclaration.SUPERCLASS_TYPE_PROPERTY, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY, ClassInstanceCreation.TYPE_PROPERTY).contains(node)) {
47+
return toResponse(IMPOSSIBLE_MATCH);
48+
}
49+
if (node.getLocationInParent() == ClassInstanceCreation.TYPE_PROPERTY && node.getParent() instanceof ClassInstanceCreation newInst && newInst.getAnonymousClassDeclaration() == null) {
4350
return toResponse(IMPOSSIBLE_MATCH);
51+
}
4452
if (this.locator.pattern.superSimpleName == null) {
4553
int level = nodeSet.addMatch(node, this.locator.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
4654
return toResponse(level, true);

0 commit comments

Comments
 (0)