mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new inference: distinguish assignment expressions with eq sign (IDEA-141157)
This commit is contained in:
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
+17
@@ -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 <caret>? 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 {" +
|
||||
|
||||
Reference in New Issue
Block a user