introduce parameter: ensure varargs are not substituted twice (IDEA-161779)

This commit is contained in:
Anna.Kozlova
2016-09-28 09:16:48 +02:00
parent 347ee7481d
commit 946991683d
4 changed files with 58 additions and 28 deletions
@@ -0,0 +1,17 @@
class Test {
void f(String strings) {
final String[] strings1 = new String[]{"c", "d"};
final String foo = foo(strings1);
extract("a", "b", foo);
}
private static void extract(final String from, final String to, String anObject) {
}
public String foo(String[] extensions) {
return null
}
}
@@ -0,0 +1,16 @@
class Test {
void f(String strings) {
extract("a", "b", "c", "d");
}
private static void extract(final String from, final String to, final String... extensions) {
<selection>foo(extensions)</selection>;
}
public String foo(String[] extensions) {
return null
}
}
@@ -158,6 +158,10 @@ public class IntroduceParameterTest extends LightRefactoringTestCase {
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, true, false, false, false);
}
public void testMethodCallRefToVararg() throws Exception {
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, true, false, false, false);
}
public void testSuperWithSideEffect() {
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, false, false, false, false,
"Parameter initializer contains <b><code>super</code></b>, but not all calls to method are in its class");