diff --git a/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java b/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java index a0632e65281f..bb6f54641480 100644 --- a/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java +++ b/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java @@ -80,6 +80,11 @@ public class MethodCandidateInfo extends CandidateInfo{ myLanguageLevel = languageLevel; } + /** + * To use during overload resolution to choose if method can be applicable by strong/loose invocation. + * + * @return true only for java 8+ varargs methods. + */ public boolean isVarargs() { return false; } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpectedTypeUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpectedTypeUtils.java index 25c99c6387eb..1c8e6fadbdc7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpectedTypeUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpectedTypeUtils.java @@ -18,6 +18,7 @@ package com.siyeh.ig.psiutils; import com.intellij.codeInsight.ExceptionUtil; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.infos.MethodCandidateInfo; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTypesUtil; import com.intellij.psi.util.TypeConversionUtil; @@ -620,7 +621,8 @@ public class ExpectedTypeUtils { if (parameters.length == 0) { return null; } - final boolean isVarargs = method.isVarArgs(); + final boolean isVarargs = result instanceof MethodCandidateInfo && + ((MethodCandidateInfo)result).getApplicabilityLevel() == MethodCandidateInfo.ApplicabilityLevel.VARARGS; final PsiType parameterType = PsiTypesUtil.getParameterType(parameters, parameterPosition, isVarargs); final PsiSubstitutor substitutor = result.getSubstitutor(); final PsiType type = GenericsUtil.getVariableTypeByExpressionType(substitutor.substitute(parameterType));