diff options
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java')
-rw-r--r-- | java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java b/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java index 3d9ea08125a8..6bb33be05ea5 100644 --- a/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java +++ b/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java @@ -158,7 +158,8 @@ public class JavaMethodsConflictResolver implements PsiConflictResolver{ // A lambda expression or a method reference expression is potentially compatible with a type variable if the type variable is a type parameter of the candidate method. final PsiClass paramClass = PsiUtil.resolveClassInType(paramType); if (paramClass instanceof PsiTypeParameter && ((PsiTypeParameter)paramClass).getOwner() == method) continue; - if (!lambdaExpression.isAcceptable(((MethodCandidateInfo)conflict).getSubstitutor(false).substitute(paramType), lambdaExpression.hasFormalParameterTypes())) { + if (!lambdaExpression.isAcceptable(((MethodCandidateInfo)conflict).getSubstitutor(false).substitute(paramType), + InferenceSession.isPertinentToApplicability(lambdaExpression, method))) { iterator.remove(); } } @@ -397,7 +398,7 @@ public class JavaMethodsConflictResolver implements PsiConflictResolver{ } @MethodCandidateInfo.ApplicabilityLevelConstant - protected int checkApplicability(@NotNull List<CandidateInfo> conflicts) { + public int checkApplicability(@NotNull List<CandidateInfo> conflicts) { @MethodCandidateInfo.ApplicabilityLevelConstant int maxApplicabilityLevel = 0; boolean toFilter = false; for (CandidateInfo conflict : conflicts) { |