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 ef697e9e10f9..d206ec4632a2 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 @@ -135,7 +135,7 @@ public class PsiPolyExpressionUtil { private static boolean isAssignmentContext(PsiExpression expr, PsiElement context) { return PsiUtil.isCondition(expr, context) || context instanceof PsiReturnStatement || - context instanceof PsiAssignmentExpression || + context instanceof PsiAssignmentExpression && ((PsiAssignmentExpression)context).getOperationTokenType() == JavaTokenType.EQ || context instanceof PsiVariable || context instanceof PsiLambdaExpression; } 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 e1d315e8f999..c4ff30f58fc2 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 @@ -100,6 +100,23 @@ public class PsiPolyExpressionUtilTest extends LightCodeInsightFixtureTestCase { assertTrue(PsiPolyExpressionUtil.isPolyExpression(psiExpression)); } + public void testConditionalInAssignment() throws Exception { + myFixture.configureByText("Foo.java", "class Foo {" + + " public static void main(String[] args) {\n" + + " Object obj = new Object();\n" + + " String str = \"\";\n" + + " str += args.length == 0 ? obj : args[0];\n" + + " }" + + "}"); + final PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); + assertNotNull(elementAtCaret); + final PsiExpression psiExpression = PsiTreeUtil.getParentOfType(elementAtCaret, PsiExpression.class); + assertInstanceOf(psiExpression, PsiConditionalExpression.class); + assertFalse(PsiPolyExpressionUtil.isPolyExpression(psiExpression)); + } + + + private PsiExpression findExpression(String textWithExpression) { myFixture.configureByText("Foo.java", "import java.util.*;" + "class Foo {" +