diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java index 8ea42cb61ea2..cc7a64dc7d96 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java @@ -127,7 +127,10 @@ public class PsiPolyExpressionUtil { private static boolean isInAssignmentOrInvocationContext(PsiExpression expr) { final PsiElement context = PsiUtil.skipParenthesizedExprUp(expr.getParent()); - return context instanceof PsiExpressionList || context instanceof PsiConditionalExpression || isAssignmentContext(expr, context); + return context instanceof PsiExpressionList || + context instanceof PsiArrayInitializerExpression || + context instanceof PsiConditionalExpression || + isAssignmentContext(expr, context); } private static boolean isAssignmentContext(PsiExpression expr, PsiElement context) { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/PsiPolyExpressionUtilTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/PsiPolyExpressionUtilTest.java index 71259d632ce2..8012ee51a960 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/PsiPolyExpressionUtilTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/PsiPolyExpressionUtilTest.java @@ -69,6 +69,21 @@ public class PsiPolyExpressionUtilTest extends LightCodeInsightFixtureTestCase { assertFalse(PsiPolyExpressionUtil.isPolyExpression(psiExpression)); } + public void testMethodCallInsideArrayCreation() throws Exception { + myFixture.configureByText("Foo.java", "import java.util.*;" + + "class Foo {" + + " T bar() {return null;}" + + " void foo() {" + + " String[] a = new String[] {bar()};" + + " }" + + "}"); + final PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); + assertNotNull(elementAtCaret); + final PsiExpression psiExpression = PsiTreeUtil.getParentOfType(elementAtCaret, PsiMethodCallExpression.class); + assertInstanceOf(psiExpression, PsiMethodCallExpression.class); + assertTrue(PsiPolyExpressionUtil.isPolyExpression(psiExpression)); + } + public void testConditional() throws Exception { myFixture.configureByText("Foo.java", "import java.util.function.Supplier;" + "class Foo {" +