From ab4660c7acaa380ed11f4b297c66811a1ca7ffe4 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 21 Feb 2011 20:36:57 +0100 Subject: [PATCH] IDEA-46653 Completion in parameter list should not insert a trailing comma if the following parameter is varargs --- .../com/intellij/codeInsight/ExpectedTypesProvider.java | 2 +- .../completion/smartType/NoCommaBeforeVarargs-out.java | 8 ++++++++ .../completion/smartType/NoCommaBeforeVarargs.java | 8 ++++++++ .../codeInsight/completion/SmartTypeCompletionTest.java | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs-out.java create mode 100644 java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs.java diff --git a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java index beaa799fa0fb..3f818584c3d4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java @@ -953,7 +953,7 @@ public class ExpectedTypesProvider { if (index >= params.length) { return TailType.NONE; } - if (index == params.length - 1) { + if (index == params.length - 1 || index == params.length - 2 && params[index + 1].isVarArgs()) { //myTailType = CompletionUtil.NONE_TAIL; final PsiElement call = argument.getParent().getParent(); if (call instanceof JspMethodCall) return TailType.NONE; diff --git a/java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs-out.java b/java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs-out.java new file mode 100644 index 000000000000..3d0404d5ba78 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs-out.java @@ -0,0 +1,8 @@ +class Foooo { + int bar(int a, Object... varargs) {} + + int foo() { + bar(hashCode()); + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs.java b/java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs.java new file mode 100644 index 000000000000..2d588132a9bf --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/NoCommaBeforeVarargs.java @@ -0,0 +1,8 @@ +class Foooo { + int bar(int a, Object... varargs) {} + + int foo() { + bar(ha); + } + +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java index 61086af10243..ad197fd77080 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java @@ -875,6 +875,8 @@ public class SmartTypeCompletionTest extends LightFixtureCompletionTestCase { doTest(); } + public void testNoCommaBeforeVarargs() throws Throwable { doTest(); } + public void testEnumField() throws Throwable { doItemTest(); }