mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new inference: treat array initializer expr as "poly" context
This commit is contained in:
+4
-1
@@ -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) {
|
||||
|
||||
+15
@@ -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> T bar() {return null;}" +
|
||||
" void foo() {" +
|
||||
" String[] a = new String[] {ba<caret>r()};" +
|
||||
" }" +
|
||||
"}");
|
||||
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 {" +
|
||||
|
||||
Reference in New Issue
Block a user