From 1891247f9a50417786510adb79f62bfbade2b2a0 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 29 Jul 2018 22:17:16 -0700 Subject: [PATCH] IDEA-195936 "true"/"false" keywords should have priority in completion for boolean parameters inside "if" condition --- .../codeInsight/completion/PreferByKindWeigher.java | 2 +- .../PreferBooleanKeywordsWhenExpectedBoolean2.java | 7 +++++++ .../completion/NormalCompletionOrderingTest.groovy | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean2.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/PreferByKindWeigher.java b/java/java-impl/src/com/intellij/codeInsight/completion/PreferByKindWeigher.java index e0bd10bd8f86..55c1d1c37b4d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/PreferByKindWeigher.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/PreferByKindWeigher.java @@ -327,7 +327,7 @@ public class PreferByKindWeigher extends LookupElementWeigher { boolean inReturn = psiElement().withParents(PsiReferenceExpression.class, PsiReturnStatement.class).accepts(myPosition); return inReturn ? ThreeState.YES : ThreeState.UNSURE; } else if (Arrays.stream(myExpectedTypes).anyMatch(info -> PsiType.BOOLEAN.isAssignableFrom(info.getDefaultType())) && - PsiTreeUtil.getParentOfType(myPosition, PsiIfStatement.class, true, PsiStatement.class, PsiMember.class) == null) { + !(myPosition.getParent() instanceof PsiIfStatement)) { return ThreeState.YES; } } diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean2.java b/java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean2.java new file mode 100644 index 000000000000..a1684ce2d467 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/PreferBooleanKeywordsWhenExpectedBoolean2.java @@ -0,0 +1,7 @@ +class Test { + { + String factory = null; + if (bar(fa)) + } + boolean bar(boolean b) {} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy index cbd701823147..257378f1846e 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -677,6 +677,10 @@ interface TxANotAnno {} checkPreferredItems 0, 'false', 'factory' } + void testPreferBooleanKeywordsWhenExpectedBoolean2() { + checkPreferredItems 0, 'false', 'factory' + } + void testPreferExplicitlyImportedStaticMembers() { myFixture.addClass(""" class ContainerUtilRt {