Skip to content

Commit 4272558

Browse files
committed
Set raw on matches
1 parent dfb6fad commit 4272558

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/core/search/DOMJavaSearchDelegate.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -303,33 +303,40 @@ private SearchMatch toCoreMatch(MatchLocator locator, org.eclipse.jdt.core.dom.A
303303
var res = new MethodReferenceMatch(enclosing, accuracy, method.getName().getStartPosition(),
304304
method.getStartPosition() + method.getLength() - method.getName().getStartPosition(), false,
305305
isSynthetic, (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node), getParticipant(locator), resource);
306+
res.setRaw(mb != null && mb.isRawMethod());
306307
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
307308
return res;
308309
}
309310
if (node instanceof SuperMethodInvocation method) {
311+
IMethodBinding mb = method.resolveMethodBinding();
310312
var res = new MethodReferenceMatch(DOMASTNodeUtils.getEnclosingJavaElement(node.getParent()), accuracy,
311313
method.getName().getStartPosition(),
312314
method.getStartPosition() + method.getLength() - method.getName().getStartPosition(), false,
313-
method.resolveMethodBinding().isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node), getParticipant(locator),
315+
mb.isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node), getParticipant(locator),
314316
resource);
317+
res.setRaw(mb != null && mb.isRawMethod());
315318
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
316319
return res;
317320
}
318321
if (node instanceof ClassInstanceCreation newInstance) {
322+
IMethodBinding mb = newInstance.resolveConstructorBinding();
319323
var res = new MethodReferenceMatch(
320324
DOMASTNodeUtils.getEnclosingJavaElement(
321325
node.getParent().getParent()) /* we don't want the variable decl */,
322326
accuracy, newInstance.getStartPosition(), newInstance.getLength(), true,
323-
newInstance.resolveConstructorBinding().isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node),
327+
mb.isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node),
324328
getParticipant(locator), resource);
329+
res.setRaw(mb != null && mb.isRawMethod());
325330
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
326331
return res;
327332
}
328333
if (node instanceof ConstructorInvocation newInstance) {
334+
IMethodBinding mb = newInstance.resolveConstructorBinding();
329335
var res = new MethodReferenceMatch(DOMASTNodeUtils.getEnclosingJavaElement(node), accuracy,
330336
newInstance.getStartPosition(), newInstance.getLength(), true,
331-
newInstance.resolveConstructorBinding().isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node),
337+
mb.isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node),
332338
getParticipant(locator), resource);
339+
res.setRaw(mb != null && mb.isRawMethod());
333340
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
334341
return res;
335342
}
@@ -339,22 +346,27 @@ private SearchMatch toCoreMatch(MatchLocator locator, org.eclipse.jdt.core.dom.A
339346
var res = new MethodReferenceMatch(enclosing, accuracy, method.getName().getStartPosition(),
340347
method.getStartPosition() + method.getLength() - method.getName().getStartPosition(), false,
341348
isSynthetic, (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node), getParticipant(locator), resource);
349+
res.setRaw(mb != null && mb.isRawMethod());
342350
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
343351
return res;
344352
}
345353
if (node instanceof SuperConstructorInvocation newInstance) {
354+
IMethodBinding mb = newInstance.resolveConstructorBinding();
346355
var res = new MethodReferenceMatch(DOMASTNodeUtils.getEnclosingJavaElement(node), accuracy,
347356
newInstance.getStartPosition(), newInstance.getLength(), true,
348-
newInstance.resolveConstructorBinding().isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node),
357+
mb.isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node),
349358
getParticipant(locator), resource);
359+
res.setRaw(mb != null && mb.isRawMethod());
350360
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
351361
return res;
352362
}
353363
if (node instanceof CreationReference constructorRef) {
364+
IMethodBinding mb = constructorRef.resolveMethodBinding();
354365
var res = new MethodReferenceMatch(DOMASTNodeUtils.getEnclosingJavaElement(node), accuracy,
355366
constructorRef.getStartPosition(), constructorRef.getLength(), true,
356-
constructorRef.resolveMethodBinding().isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node), getParticipant(locator),
367+
mb.isSynthetic(), (accuracy & PatternLocator.SUPER_INVOCATION_FLAVOR) != 0, insideDocComment(node), getParticipant(locator),
357368
resource);
369+
res.setRaw(mb != null && mb.isRawMethod());
358370
res.setLocalElement(DOMASTNodeUtils.getLocalJavaElement(node));
359371
return res;
360372
}

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -376,13 +376,15 @@ private int validateReceiverTypeArguments(ASTNode node, IMethodBinding method, i
376376
return DOMTypeReferenceLocator.TYPE_PARAMS_MATCH;
377377
}
378378

379-
private IBinding findPossiblyUnresolvedBindingForType(ASTNode node, String patternSig) {
380-
IBinding patternBinding = JdtCoreDomPackagePrivateUtility.findBindingForType(node, patternSig);
379+
private ITypeBinding findPossiblyUnresolvedBindingForType(ASTNode node, String patternSig) {
380+
ITypeBinding patternBinding = JdtCoreDomPackagePrivateUtility.findBindingForType(node, patternSig) instanceof ITypeBinding ptb
381+
? ptb : null;
381382
if( patternBinding == null ) {
382383
boolean plusOrMinus = patternSig.startsWith("+") || patternSig.startsWith("-");
383384
String safePatternString = plusOrMinus ? patternSig.substring(1) : patternSig;
384385
if( safePatternString.startsWith("Q")) {
385-
patternBinding = JdtCoreDomPackagePrivateUtility.findUnresolvedBindingForType(node, safePatternString);
386+
patternBinding = JdtCoreDomPackagePrivateUtility.findBindingForType(node, patternSig) instanceof ITypeBinding ptb
387+
? ptb : null;
386388
}
387389
}
388390
return patternBinding;
@@ -809,14 +811,16 @@ public LocatorResponse resolveLevel(org.eclipse.jdt.core.dom.ASTNode node, IBind
809811
return toResponse(level);
810812
}
811813
private int findWeakerLevel(int i, int j) {
814+
int levelI = i & PatternLocator.MATCH_LEVEL_MASK;
815+
int levelJ = j & PatternLocator.MATCH_LEVEL_MASK;
812816
int[] ints = {DOMPatternLocator.IMPOSSIBLE_MATCH,
813817
DOMPatternLocator.POSSIBLE_MATCH,
814818
DOMPatternLocator.INACCURATE_MATCH,
815819
DOMPatternLocator.ERASURE_MATCH,
816820
DOMPatternLocator.ACCURATE_MATCH};
817821
List<Integer> list = Arrays.stream(ints).boxed().collect(Collectors.toList());
818-
int iIndex = list.indexOf(i);
819-
int jIndex = list.indexOf(j);
822+
int iIndex = list.indexOf(levelI);
823+
int jIndex = list.indexOf(levelJ);
820824
return iIndex > jIndex ? j : i;
821825
}
822826

0 commit comments

Comments
 (0)