From 15369d718e73c55af7ce7ae3f6b6e16ccd0f872a Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 29 Sep 2015 11:05:10 +0200 Subject: [PATCH] IDEA-145680 Basic completion doesn't work inside method call after "<" in if condition --- .../completion/JavaCompletionContributor.java | 3 ++- .../codeInsight/completion/normal/IfConditionLt.java | 9 +++++++++ .../completion/HeavyNormalCompletionTest.groovy | 2 +- .../codeInsight/completion/NormalCompletionTest.groovy | 5 +++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/completion/normal/IfConditionLt.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 1939ef31d060..a196cf93eec4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -768,7 +768,8 @@ public class JavaCompletionContributor extends CompletionContributor { iterator.advance(); } - if (!iterator.atEnd() && (iterator.getTokenType() == JavaTokenType.LPARENTH)) { + if (!iterator.atEnd() && iterator.getTokenType() == JavaTokenType.LPARENTH && PsiTreeUtil.getParentOfType(ref, PsiExpression.class, PsiClass.class) == null) { + // looks like a method declaration, e.g. StringBuimethodName() inside a class return true; } diff --git a/java/java-tests/testData/codeInsight/completion/normal/IfConditionLt.java b/java/java-tests/testData/codeInsight/completion/normal/IfConditionLt.java new file mode 100644 index 000000000000..580a2eedb323 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/IfConditionLt.java @@ -0,0 +1,9 @@ +class Zoo { + + void foo(int x) { + if (x < getAnnotationsAreaOffset()); + + } + + int getAnnotationsAreaOffset() {} +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy index 2117c9e877f2..3852327e36e9 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy @@ -117,7 +117,7 @@ public class HeavyNormalCompletionTest extends JavaCodeInsightFixtureTestCase { myFixture.completeBasic(); assertOrderedEquals(myFixture.getLookupElementStrings(), "getAaa", "getBbb"); myFixture.getEditor().getCaretModel().moveToOffset(myFixture.getEditor().getCaretModel().getOffset() + 2); - assertNull(myFixture.completeBasic()); + assert myFixture.completeBasic() == null } public void testQualifyInaccessibleClassName() throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index df9087e84238..22a692ec25b4 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -512,6 +512,11 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { public void testBreakInIfCondition() throws Throwable { doTest(); } public void testAccessStaticViaInstance() throws Throwable { doTest(); } + public void testIfConditionLt() { + configure() + myFixture.assertPreferredCompletionItems 0, 'getAnnotationsAreaOffset' + } + public void testAccessStaticViaInstanceSecond() throws Throwable { configure() myFixture.complete(CompletionType.BASIC, 2)