mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 04:51:24 +07:00
highlight method call: don't ignore args with applicable calls as they may still cause parent call incompatibility
IDEA-201175
This commit is contained in:
@@ -617,15 +617,6 @@ public class HighlightMethodUtil {
|
||||
int idx = -1;
|
||||
for (int i = 0; i < expressions.length; i++) {
|
||||
PsiExpression expression = expressions[i];
|
||||
if (expression instanceof PsiMethodCallExpression) {
|
||||
final JavaResolveResult result = ((PsiCallExpression)expression).resolveMethodGenerics();
|
||||
if (result instanceof MethodCandidateInfo &&
|
||||
PsiUtil.isLanguageLevel8OrHigher(list) &&
|
||||
((MethodCandidateInfo)result).isToInferApplicability() &&
|
||||
((MethodCandidateInfo)result).getInferenceErrorMessage() == null) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!TypeConversionUtil.areTypesAssignmentCompatible(substitutor.substitute(parameters[i].getType()), expression)) {
|
||||
if (idx != -1) {
|
||||
idx = -1;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
class Test2 {
|
||||
void foo(String s, Integer p) {}
|
||||
|
||||
@@ -10,3 +11,36 @@ class Test2 {
|
||||
foo (bar(String.class), <error descr="'foo(java.lang.String, java.lang.Integer)' in 'Test2' cannot be applied to '(java.lang.String, java.lang.String)'">""</error>);
|
||||
}
|
||||
}
|
||||
|
||||
class M1 {
|
||||
void foo(List<String> l) {
|
||||
m<error descr="'m(java.util.List<K>, K)' in 'M1' cannot be applied to '(java.util.List<java.lang.String>, java.util.Set<java.lang.Object>)'">(l, n())</error>;
|
||||
}
|
||||
<K> void m(List<K> list, K k) {}
|
||||
<N> Set<N> n() {return null;}
|
||||
}
|
||||
|
||||
class M2 {
|
||||
void foo(List<String> l) {
|
||||
m<error descr="'m(java.util.List<K>, java.util.List<K>)' in 'M2' cannot be applied to '(java.util.List<java.lang.String>, java.util.Set<java.lang.Object>)'">(l, n())</error>;
|
||||
}
|
||||
<K> void m(List<K> list, List<K> k) {}
|
||||
<N> Set<N> n() {return null;}
|
||||
}
|
||||
|
||||
class M3 {
|
||||
void foo(List<String> l) {
|
||||
m<error descr="'m(java.util.List<K>, java.util.List<K>)' in 'M3' cannot be applied to '(java.util.List<java.lang.String>, java.util.List<java.lang.Integer>)'">(l, n())</error>;
|
||||
}
|
||||
<K> void m(List<K> list, List<K> k) {}
|
||||
<N> List<Integer> n() {return null;}
|
||||
}
|
||||
|
||||
class M4 {
|
||||
void foo(List<String> l) {
|
||||
m<error descr="'m(java.util.List<java.lang.Integer>, java.util.List<K>)' in 'M4' cannot be applied to '(java.util.List<java.lang.String>, java.util.List<java.lang.Integer>)'">(l, n())</error>;
|
||||
}
|
||||
|
||||
<K> void m(List<Integer> list, List<K> k) {}
|
||||
List<Integer> n() {return null;}
|
||||
}
|
||||
Reference in New Issue
Block a user