generate constructor: place varargs from base constructor as last parameter (IDEA-142811)

This commit is contained in:
Anna Kozlova
2015-07-21 08:51:12 +02:00
parent 2955a8cac7
commit a94e79baff
4 changed files with 29 additions and 2 deletions
@@ -270,8 +270,15 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
parm.getModifierList().addAfter(notNull, null);
}
constructor.getParameterList().add(parm);
dummyConstructor.getParameterList().add(parm.copy());
if (constructor.isVarArgs()) {
final PsiParameterList parameterList = constructor.getParameterList();
parameterList.addBefore(parm, parameterList.getParameters()[parameterList.getParametersCount() - 1]);
final PsiParameterList dummyParameterlist = dummyConstructor.getParameterList();
dummyParameterlist.addBefore(parm.copy(), dummyParameterlist.getParameters()[dummyParameterlist.getParametersCount() - 1]);
} else {
constructor.getParameterList().add(parm);
dummyConstructor.getParameterList().add(parm.copy());
}
fieldParams.add(parm);
}
@@ -0,0 +1,11 @@
class Base {
public Base(String... ignored) { }
}
class Derived extends Base {
int i;
public Derived(int i, String... ignored) {
super(ignored);
this.i = i;
}
}
@@ -0,0 +1,8 @@
class Base {
public Base(String... ignored) { }
}
class Derived extends Base {
int i;
<caret>
}
@@ -37,6 +37,7 @@ public class GenerateConstructorTest extends LightCodeInsightTestCase {
public void testSameNamedFields() throws Exception { doTest(); }
public void testEnumWithAbstractMethod() throws Exception { doTest(); }
public void testNoMoreConstructorsCanBeGenerated() throws Exception { doTest(); }
public void testBaseVarargs() throws Exception { doTest(); }
public void testImmediatelyAfterRBrace() throws Exception { // IDEADEV-28811
CodeStyleSettingsManager.getInstance(getProject()).getCurrentSettings().CLASS_BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;