diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java index 65b5e61b28a7..fd45fdfc8b5a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java @@ -57,7 +57,11 @@ public class DfaVariableValue extends DfaValue { } public DfaVariableValue createVariableValue(PsiVariable myVariable, boolean isNegated) { - return createVariableValue(myVariable, myVariable.getType(), isNegated, null); + PsiType varType = myVariable.getType(); + if (varType instanceof PsiEllipsisType) { + varType = new PsiArrayType(((PsiEllipsisType)varType).getComponentType()); + } + return createVariableValue(myVariable, varType, isNegated, null); } @NotNull public DfaVariableValue createVariableValue(@NotNull PsiModifierListOwner myVariable, diff --git a/java/java-tests/testData/inspection/dataFlow/contractCheck/VarargInferred.java b/java/java-tests/testData/inspection/dataFlow/contractCheck/VarargInferred.java new file mode 100644 index 000000000000..7f38129033be --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/contractCheck/VarargInferred.java @@ -0,0 +1,6 @@ +class X { + public static String compute(String... s) { + if (s == null) return null; + return ""; + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/ContractCheckTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/ContractCheckTest.java index c2cddc127835..50355f3c9ced 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/ContractCheckTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/ContractCheckTest.java @@ -40,4 +40,5 @@ public class ContractCheckTest extends LightCodeInsightFixtureTestCase { public void testNestedCallsMayThrow() { doTest(); } public void testSignatureIssues() { doTest(); } + public void testVarargInferred() { doTest(); } }