mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
overload resolution: don't reject first inapplicable vararg method
GitOrigin-RevId: 3e8246e5cbdab35327da0587aa62111b04f7dbed
This commit is contained in:
committed by
intellij-monorepo-bot
parent
97586f00b7
commit
e9fb32668e
@@ -92,19 +92,16 @@ public class PsiMethodReferenceExpressionImpl extends JavaStubPsiElement<Functio
|
||||
if (parametersCount == interfaceArity - offset) {
|
||||
return true;
|
||||
}
|
||||
if (((PsiMethod)element).isVarArgs()) {
|
||||
if (interfaceMethod.isVarArgs()) {
|
||||
return true;
|
||||
}
|
||||
return interfaceArity >= parametersCount + offset - 1;
|
||||
if (((PsiMethod)element).isVarArgs() && (interfaceMethod.isVarArgs() || interfaceArity >= parametersCount + offset - 1)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (!isStatic) {
|
||||
if (parametersCount == interfaceArity) {
|
||||
return true;
|
||||
}
|
||||
if (((PsiMethod)element).isVarArgs()) {
|
||||
return interfaceMethod.isVarArgs() || interfaceArity >= parametersCount - 1 ;
|
||||
if (((PsiMethod)element).isVarArgs() && (interfaceMethod.isVarArgs() || interfaceArity >= parametersCount - 1)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (element instanceof PsiClass) {
|
||||
|
||||
@@ -1,4 +1,23 @@
|
||||
import java.util.stream.Stream;
|
||||
|
||||
class Order {
|
||||
interface I { }
|
||||
interface I2 { }
|
||||
|
||||
class Holder {
|
||||
public void registerProblem(I i1,
|
||||
String s,
|
||||
I2 ... i2s) { }
|
||||
|
||||
public void registerProblem(Foo problemDescriptor) { }
|
||||
}
|
||||
class Foo {
|
||||
void f(Stream<Foo> stream, Holder holder) {
|
||||
stream.forEach(holder::registerProblem);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
interface I {
|
||||
void foo(String s, Object... params);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user