completion: don't suggest true/false literals where boolean is not expected

This commit is contained in:
peter
2014-05-30 21:32:21 +02:00
parent d311a4ed09
commit 180df2c0af
3 changed files with 23 additions and 2 deletions
@@ -465,8 +465,10 @@ public class JavaCompletionData extends JavaAwareCompletionData {
result.addElement(TailTypeDecorator.withTail(createKeyword(position, PsiKeyword.NEW), TailType.INSERT_SPACE));
result.addElement(createKeyword(position, PsiKeyword.NULL));
}
result.addElement(createKeyword(position, PsiKeyword.TRUE));
result.addElement(createKeyword(position, PsiKeyword.FALSE));
if (mayExpectBoolean(parameters)) {
result.addElement(createKeyword(position, PsiKeyword.TRUE));
result.addElement(createKeyword(position, PsiKeyword.FALSE));
}
}
PsiFile file = position.getContainingFile();
@@ -527,6 +529,14 @@ public class JavaCompletionData extends JavaAwareCompletionData {
}
}
private static boolean mayExpectBoolean(CompletionParameters parameters) {
for (ExpectedTypeInfo info : JavaSmartCompletionContributor.getExpectedTypes(parameters)) {
PsiType type = info.getType();
if (type instanceof PsiClassType || type == PsiType.BOOLEAN) return true;
}
return false;
}
private static boolean isExpressionPosition(PsiElement position) {
return EXPR_KEYWORDS.accepts(position) ||
psiElement().insideStarting(psiElement(PsiClassObjectAccessExpression.class)).accepts(position);
@@ -0,0 +1,7 @@
public class Foo {
int foo(Object fact) {
return 42 * fa<caret>x
}
}
@@ -629,6 +629,10 @@ interface TxANotAnno {}
checkPreferredItems 0, 'value'
}
public void testNoBooleansInMultiplication() {
checkPreferredItems 0, 'fact'
}
public void testGlobalStaticMemberStats() {
configureNoCompletion(getTestName(false) + ".java")
myFixture.complete(CompletionType.BASIC, 2)