diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/DefaultInsertHandler.java b/java/java-impl/src/com/intellij/codeInsight/completion/DefaultInsertHandler.java index 6949e1cc1bb1..f8d6812dde2a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/DefaultInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/DefaultInsertHandler.java @@ -210,7 +210,6 @@ public class DefaultInsertHandler extends TemplateInsertHandler implements Clone case '<': case '>': case '\"': - case '[': return TailType.createSimpleTailType(completionChar); } final TailType attr = item.getTailType(); return attr == TailType.UNKNOWN ? TailType.NONE : attr; diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java index 6f6d83d35ced..d4005d636361 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java @@ -59,6 +59,7 @@ public class JavaCharFilter extends CharFilter { } } if (c == '.' && isWithinLiteral(lookup)) return Result.ADD_TO_PREFIX; + if (c == '[') return CharFilter.Result.SELECT_ITEM_AND_FINISH_LOOKUP; if (c == '#' && PsiTreeUtil.getParentOfType(lookup.getPsiElement(), PsiDocComment.class) != null) { final LookupElement item = lookup.getCurrentItem(); diff --git a/java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket.java b/java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket.java new file mode 100644 index 000000000000..89fff3a6c574 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket.java @@ -0,0 +1,6 @@ +class AbcdClass {} +class AbcdeClass {} + +class Foo { + Abcd +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket_after.java b/java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket_after.java new file mode 100644 index 000000000000..03944aa60a36 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket_after.java @@ -0,0 +1,6 @@ +class AbcdClass {} +class AbcdeClass {} + +class Foo { + AbcdClass[] +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket.java b/java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket.java new file mode 100644 index 000000000000..810337061123 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket.java @@ -0,0 +1,9 @@ +class Foo { + int[] aaaa(int x){} + int[] aaab(){} + + + { + aaa + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket_after.java b/java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket_after.java new file mode 100644 index 000000000000..e563262eb2a6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket_after.java @@ -0,0 +1,9 @@ +class Foo { + int[] aaaa(int x){} + int[] aaab(){} + + + { + aaaa()[] + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket.java new file mode 100644 index 000000000000..31513c1ce7b9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket.java @@ -0,0 +1,5 @@ +class Foo { + d + + class doz {} +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket_after.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket_after.java new file mode 100644 index 000000000000..0be62feb89b1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket_after.java @@ -0,0 +1,5 @@ +class Foo { + double[] + + class doz {} +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket.java b/java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket.java new file mode 100644 index 000000000000..ebff9d951901 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket.java @@ -0,0 +1,7 @@ +class Foo { + { + int[] aaaa; + int[] aaab; + aa + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket_after.java b/java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket_after.java new file mode 100644 index 000000000000..84538649bbe4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket_after.java @@ -0,0 +1,7 @@ +class Foo { + { + int[] aaaa; + int[] aaab; + aaaa[] + } +} \ No newline at end of file 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 753a551e8ec0..4f317556dafa 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -569,13 +569,7 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { configureByFile(getTestName(false) + ".java"); final int parametersCount = ((PsiMethod)getLookup().getCurrentItem().getObject()).getParameterList().getParametersCount(); assertEquals(0, parametersCount); - new WriteCommandAction.Simple(getProject(), new PsiFile[0]) { - @Override - protected void run() throws Throwable { - getLookup().finishLookup(Lookup.NORMAL_SELECT_CHAR); - } - }.execute().throwException(); - + type '\n' checkResult() } @@ -834,6 +828,11 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { public void testCommaAfterVariable() throws Throwable { doTest(',') } + public void testClassSquareBracket() throws Throwable { doTest('[') } + public void testPrimitiveSquareBracket() throws Throwable { doTest('[') } + public void testVariableSquareBracket() throws Throwable { doTest('[') } + public void testMethodSquareBracket() throws Throwable { doTest('[') } + public void testSuperProtectedMethod() throws Throwable { myFixture.addClass """package foo; public class Bar {