diff options
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java')
-rw-r--r-- | java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java index 08a071231410..0bf1c1cd7218 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java @@ -31,7 +31,10 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiShortNamesCache; import com.intellij.psi.search.searches.DeepestSuperMethodsSearch; import com.intellij.psi.tree.IElementType; -import com.intellij.psi.util.*; +import com.intellij.psi.util.PropertyUtil; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; +import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.NullableFunction; import com.intellij.util.Processor; @@ -126,10 +129,6 @@ public class ExpectedTypesProvider { final boolean voidable, boolean usedAfter) { if (expr == null) return ExpectedTypeInfo.EMPTY_ARRAY; PsiElement parent = expr.getParent(); - while (parent instanceof PsiParenthesizedExpression) { - expr = (PsiExpression)parent; - parent = parent.getParent(); - } MyParentVisitor visitor = new MyParentVisitor(expr, forCompletion, classProvider, voidable, usedAfter); if (parent != null) { parent.accept(visitor); @@ -243,6 +242,25 @@ public class ExpectedTypesProvider { } @Override + public void visitParenthesizedExpression(PsiParenthesizedExpression expression) { + PsiElement parent = expression.getParent(); + if (parent != null) { + final MyParentVisitor visitor = new MyParentVisitor(expression, myForCompletion, myClassProvider, myVoidable, myUsedAfter); + parent.accept(visitor); + for (final ExpectedTypeInfo info : visitor.myResult) { + myResult.add(createInfoImpl(info.getType(), info.getKind(), info.getDefaultType(), TailTypes.RPARENTH, info.getCalledMethod(), + new NullableComputable<String>() { + @Nullable + @Override + public String compute() { + return ((ExpectedTypeInfoImpl)info).getExpectedName(); + } + })); + } + } + } + + @Override public void visitAnnotationMethod(@NotNull final PsiAnnotationMethod method) { if (myExpr == method.getDefaultValue()) { final PsiType type = method.getReturnType(); |