diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 85ab1e10cbdb..144ff2ad14fd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -815,6 +815,9 @@ public final class JavaCompletionUtil { private static boolean insertTail(InsertionContext context, LookupElement item, TailType tailType, boolean hasTail) { TailType toInsert = tailType; LookupItem lookupItem = item.as(LookupItem.CLASS_CONDITION_KEY); + if (toInsert == EqTailType.INSTANCE) { + toInsert = TailType.UNKNOWN; + } if (lookupItem == null || lookupItem.getAttribute(LookupItem.TAIL_TYPE_ATTR) != TailType.UNKNOWN) { if (!hasTail && item.getObject() instanceof PsiMethod && PsiType.VOID.equals(((PsiMethod)item.getObject()).getReturnType())) { PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments(); diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index a3068815927b..c2df711dd9c4 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -218,6 +218,7 @@ class NormalCompletionTest extends NormalCompletionTestCase { protected void tearDown() throws Exception { CodeInsightSettings.instance.AUTOCOMPLETE_ON_CODE_COMPLETION = true CodeInsightSettings.instance.setCompletionCaseSensitive(CodeInsightSettings.FIRST_LETTER) + CodeInsightSettings.instance.setSelectAutopopupSuggestionsByChars(false) CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET = true super.tearDown() } @@ -2443,4 +2444,70 @@ class Abc { myFixture.completeBasic() assert myFixture.getLookupElementStrings() == ["demoEntity", "demo", "entity"] } + + @NeedsIndex.Full + void testCompleteByEqualsAssignment() { + CodeInsightSettings.instance.setSelectAutopopupSuggestionsByChars(true) + myFixture.configureByText("Test.java", "public class Test {\n" + + " public static void main(final String[] args) {\n" + + " Test test = new Test();\n" + + " Test test2 = new Test();\n" + + " tes\n" + + " }\n" + + "}") + myFixture.completeBasic() + myFixture.type('=') + myFixture.checkResult("public class Test {\n" + + " public static void main(final String[] args) {\n" + + " Test test = new Test();\n" + + " Test test2 = new Test();\n" + + " test = \n" + + " }\n" + + "}") + } + + @NeedsIndex.Full + void testCompleteByEqualsDeclaration() { + CodeInsightSettings.instance.setSelectAutopopupSuggestionsByChars(true) + CodeInsightSettings.instance.AUTOCOMPLETE_ON_CODE_COMPLETION = false + myFixture.configureByText("Test.java", "public class Test {\n" + + " public static void main(final String[] args) {\n" + + " String str\n" + + " }\n" + + "}") + myFixture.completeBasic() + myFixture.type('=') + myFixture.checkResult("public class Test {\n" + + " public static void main(final String[] args) {\n" + + " String string = \n" + + " }\n" + + "}") + } + + @NeedsIndex.Full + void testCompleteByEquals() { + CodeInsightSettings.instance.setSelectAutopopupSuggestionsByChars(true) + myFixture.configureByText("Test.java", "public class Test {\n" + + " public static void main(final String[] args) {\n" + + " final Test test = new Test();\n" + + " if (test.get)\n" + + " }\n" + + "\n" + + " public String getFoo() {\n" + + " return \"\";\n" + + " }\n" + + "}") + myFixture.completeBasic() + myFixture.type('=') + myFixture.checkResult("public class Test {\n" + + " public static void main(final String[] args) {\n" + + " final Test test = new Test();\n" + + " if (test.getFoo()=)\n" + + " }\n" + + "\n" + + " public String getFoo() {\n" + + " return \"\";\n" + + " }\n" + + "}") + } }