diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java index 2ac01c3cbad9..b9dbcd8836a0 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -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); diff --git a/java/java-tests/testData/refactoring/inlineMethod/InlineMultipleOccurrencesInFieldInitializer.java b/java/java-tests/testData/refactoring/inlineMethod/InlineMultipleOccurrencesInFieldInitializer.java new file mode 100644 index 000000000000..11e7acd467f1 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/InlineMultipleOccurrencesInFieldInitializer.java @@ -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 callMe(String a, int nr, String ... args) { + return new Bar(a, nr, args); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineMethod/InlineMultipleOccurrencesInFieldInitializer.java.after b/java/java-tests/testData/refactoring/inlineMethod/InlineMultipleOccurrencesInFieldInitializer.java.after new file mode 100644 index 000000000000..6a5a757b7430 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/InlineMultipleOccurrencesInFieldInitializer.java.after @@ -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) { + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java index 30c32410e834..459dcfd60bb2 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java @@ -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);