diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index 036ddcbded22..5ac14956fe4c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -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); diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/NoBooleansInMultiplication.java b/java/java-tests/testData/codeInsight/completion/normalSorting/NoBooleansInMultiplication.java new file mode 100644 index 000000000000..befcf40a26ab --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/NoBooleansInMultiplication.java @@ -0,0 +1,7 @@ +public class Foo { + + int foo(Object fact) { + return 42 * fax + } +} + diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy index 7824a64596ef..c1e6d4182aa5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -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)