IDEA-141620 Duplicating entries in the Expression Type popup

This commit is contained in:
Gregory.Shrago
2016-05-13 02:48:49 +03:00
parent 597c21329f
commit 6d068a8ea2
@@ -17,10 +17,7 @@ package com.intellij.codeInsight.hint;
import com.intellij.lang.ExpressionTypeProvider;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiType;
import com.intellij.psi.SyntaxTraverser;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -46,6 +43,15 @@ public class JavaTypeProvider extends ExpressionTypeProvider<PsiExpression> {
@NotNull
@Override
public List<PsiExpression> getExpressionsAt(@NotNull PsiElement elementAt) {
return SyntaxTraverser.psiApi().parents(elementAt).filter(PsiExpression.class).toList();
return SyntaxTraverser.psiApi().parents(elementAt)
.filter(PsiExpression.class)
.filter(JavaTypeProvider::notAMethodReferenceInCall)
.toList();
}
private static boolean notAMethodReferenceInCall(PsiExpression expression) {
boolean b = expression instanceof PsiReferenceExpression;
PsiElement p = b ? expression.getParent() : null;
return !(p instanceof PsiMethodCallExpression && ((PsiMethodCallExpression)p).getMethodExpression() == expression);
}
}