From aded26aa0ac36d10e49d6ee82bfe3cc803999a97 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 20 Nov 2015 16:25:19 +0100 Subject: [PATCH] diamonds: resolve possible 'vararg' conflict by normal resolver --- .../com/intellij/psi/PsiDiamondTypeImpl.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java index 881d373d20e7..4b16c7183de8 100644 --- a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java @@ -235,19 +235,15 @@ public class PsiDiamondTypeImpl extends PsiDiamondType { } final MethodCandidateInfo staticFactoryCandidateInfo = createMethodCandidate(staticFactory, context, false, argumentList); - if (staticFactory.isVarArgs()) { - final Computable computable = new Computable() { - @Override - public Integer compute() { - return staticFactoryCandidateInfo.getPertinentApplicabilityLevel(); - } - }; - final Integer applicability = MethodCandidateInfo.ourOverloadGuard.doPreventingRecursion(newExpression, true, computable); - if ((applicability != null ? applicability : staticFactoryCandidateInfo.getApplicabilityLevel()) < MethodCandidateInfo.ApplicabilityLevel.FIXED_ARITY) { - return createMethodCandidate(staticFactory, context, true, argumentList); - } + if (!staticFactory.isVarArgs()) { + return staticFactoryCandidateInfo; } - return staticFactoryCandidateInfo; + + final JavaMethodsConflictResolver resolver = new JavaMethodsConflictResolver(argumentList, PsiUtil.getLanguageLevel(argumentList)); + final ArrayList conflicts = new ArrayList(); + conflicts.add(staticFactoryCandidateInfo); + conflicts.add(createMethodCandidate(staticFactory, context, true, argumentList)); + return resolver.resolveConflict(conflicts); } @Nullable