diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java b/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java index a549c928659c..fa4ec428ed86 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java @@ -72,7 +72,8 @@ class ConstructorInsertHandler implements InsertHandler 0 && - ((PsiTypeLookupItem)delegate).calcGenerics(position).isEmpty(); + ((PsiTypeLookupItem)delegate).calcGenerics(position).isEmpty() && + context.getCompletionChar() != '('; delegate.handleInsert(context); PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting(context.getFile().getViewProvider()); } @@ -99,7 +100,7 @@ class ConstructorInsertHandler implements InsertHandler"); - context.getEditor().getCaretModel().moveToOffset(offset + 1); - return true; - } - public static boolean insertParentheses(InsertionContext context, LookupItem delegate, final PsiClass psiClass, diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java index e93f0c426919..12f1ec79ad7b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java @@ -125,8 +125,8 @@ class JavaClassNameInsertHandler implements InsertHandler"); + context.getEditor().getCaretModel().moveToOffset(offset + 1); + return true; + } } diff --git a/java/java-tests/testData/codeInsight/completion/normal/NoGenericsWhenChoosingWithParen.java b/java/java-tests/testData/codeInsight/completion/normal/NoGenericsWhenChoosingWithParen.java new file mode 100644 index 000000000000..221d42854115 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/NoGenericsWhenChoosingWithParen.java @@ -0,0 +1,5 @@ +class Foo { + { + new Hash + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/NoGenericsWhenChoosingWithParen_after.java b/java/java-tests/testData/codeInsight/completion/normal/NoGenericsWhenChoosingWithParen_after.java new file mode 100644 index 000000000000..0bb51b1d4489 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/NoGenericsWhenChoosingWithParen_after.java @@ -0,0 +1,7 @@ +import java.util.HashMap; + +class Foo { + { + new HashMap() + } +} \ 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 dc148649b4f3..34f9775862df 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -1258,4 +1258,10 @@ public class ListUtils { } } + public void testNoGenericsWhenChoosingWithParen() { + configure() + myFixture.type 'Ma(' + checkResult() + } + } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyClassNameInsertHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyClassNameInsertHandler.java index e73b13cb07a8..bb8ee2be533a 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyClassNameInsertHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyClassNameInsertHandler.java @@ -88,10 +88,9 @@ public class GroovyClassNameInsertHandler implements InsertHandler"); + if (context.getCompletionChar() == '<' || psiClass.hasTypeParameters() && context.getCompletionChar() != '(') { context.setAddCompletionChar(false); - context.getEditor().getCaretModel().moveToOffset(identifierEnd + 1); + JavaCompletionUtil.promptTypeArgs(context, identifierEnd); } }