From 435b14a0ada643c1ab3a2401b29244e7de99ef24 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 8 Mar 2011 16:58:48 +0100 Subject: [PATCH] finishing completion with [ (IDEA-40461) --- .../completion/DefaultInsertHandler.java | 1 - .../codeInsight/completion/JavaCharFilter.java | 1 + .../completion/normal/ClassSquareBracket.java | 6 ++++++ .../completion/normal/ClassSquareBracket_after.java | 6 ++++++ .../completion/normal/MethodSquareBracket.java | 9 +++++++++ .../normal/MethodSquareBracket_after.java | 9 +++++++++ .../completion/normal/PrimitiveSquareBracket.java | 5 +++++ .../normal/PrimitiveSquareBracket_after.java | 5 +++++ .../completion/normal/VariableSquareBracket.java | 7 +++++++ .../normal/VariableSquareBracket_after.java | 7 +++++++ .../completion/NormalCompletionTest.groovy | 13 ++++++------- 11 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/ClassSquareBracket_after.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/MethodSquareBracket_after.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/PrimitiveSquareBracket_after.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/VariableSquareBracket_after.java 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 {