inline method: don't repeat field initializer (IDEA-158832)

This commit is contained in:
Anna.Kozlova
2016-07-21 19:03:45 +02:00
parent 0e70992658
commit 5fc02f38a4
4 changed files with 36 additions and 0 deletions
@@ -1357,6 +1357,9 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor {
inlineEnumConstantParameter(refsVector, ref);
continue;
}
if (myAddedClassInitializers.containsKey(field)) {
continue;
}
field.normalizeDeclaration();
final PsiExpression initializer = field.getInitializer();
LOG.assertTrue(initializer != null);
@@ -0,0 +1,16 @@
class Foo {
public static final Bar[] bars= new Bar[] {Bar.callMe("a", 0, "A", "B", "C"), Bar.callMe("b", 1, "A", "B")};
}
class Bar {
public Bar(String a, int nr, String... args) {
}
public static Bar call<caret>Me(String a, int nr, String ... args) {
return new Bar(a, nr, args);
}
}
@@ -0,0 +1,13 @@
class Foo {
public static final Bar[] bars= new Bar[] {new Bar("a", 0, "A", "B", "C"), new Bar("b", 1, "A", "B")};
}
class Bar {
public Bar(String a, int nr, String... args) {
}
}
@@ -326,6 +326,10 @@ public class InlineMethodTest extends LightRefactoringTestCase {
doTest();
}
public void testInlineMultipleOccurrencesInFieldInitializer() throws Exception {
doTest();
}
private void doTestInlineThisOnly() {
@NonNls String fileName = "/refactoring/inlineMethod/" + getTestName(false) + ".java";
configureByFile(fileName);