Skip to content

Commit 707f8cb

Browse files
mickaelistriarobstryker
authored andcommitted
Use baseSymbol to better resolve JavacMethodBinding.getJavaElement()
This better matches varargs methods
1 parent 58d58a3 commit 707f8cb

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/javac/dom/JavacMethodBinding.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@ private IMethod computeUnresolvedJavaElement() {
239239
}
240240

241241
String[] parametersResolved = new String[0];
242-
if( this.methodSymbol != null ) {
243-
parametersResolved = this.methodSymbol.params().stream()
242+
if( this.methodSymbol != null && this.methodSymbol.baseSymbol() instanceof MethodSymbol base) {
243+
parametersResolved = base.params().stream()
244244
.map(varSymbol -> varSymbol.type)
245245
.map(t ->
246246
t instanceof TypeVar typeVar ? Signature.C_TYPE_VARIABLE + typeVar.tsym.name.toString() + ";" : // check whether a better constructor exists for it
@@ -254,7 +254,11 @@ private IMethod computeUnresolvedJavaElement() {
254254
.toArray(String[]::new);
255255
}
256256
parametersResolved = maybeTrimEnumConstructorArgs(parametersResolved);
257-
IMethod[] methods = currentType.findMethods(currentType.getMethod(getName(), parametersResolved));
257+
IMethod m = currentType.getMethod(getName(), parametersResolved);
258+
if (m != null && m.exists()) {
259+
return m;
260+
}
261+
IMethod[] methods = currentType.findMethods(m);
258262
if (methods != null && methods.length > 0) {
259263
return methods[0];
260264
}
@@ -268,7 +272,11 @@ private IMethod computeUnresolvedJavaElement() {
268272
.toArray(String[]::new);
269273
}
270274
parametersNotResolved = maybeTrimEnumConstructorArgs(parametersNotResolved);
271-
methods = currentType.findMethods(currentType.getMethod(getName(), parametersNotResolved));
275+
m = currentType.getMethod(getName(), parametersNotResolved);
276+
if (m != null && m.exists()) {
277+
return m;
278+
}
279+
methods = currentType.findMethods(m);
272280
if (methods != null && methods.length > 0) {
273281
return methods[0];
274282
}

0 commit comments

Comments
 (0)