diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java index 8f1751d448bb..f7b4c2b63480 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java @@ -293,6 +293,11 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor factory.createVariableDeclarationStatement(myParameter.getName(), myParameter.getType(), myInitializer); final PsiLocalVariable declaredVar = (PsiLocalVariable)localDeclaration.getDeclaredElements()[0]; PsiUtil.setModifierProperty(declaredVar, PsiModifier.FINAL, myParameter.hasModifierProperty(PsiModifier.FINAL)); + final PsiExpression localVarInitializer = + InlineUtil.inlineVariable(myParameter, myInitializer, (PsiReferenceExpression)factory.createExpressionFromText(myParameter.getName(), myMethod)); + final PsiExpression initializer = declaredVar.getInitializer(); + LOG.assertTrue(initializer != null); + initializer.replace(localVarInitializer); final PsiCodeBlock body = myMethod.getBody(); if (body != null) { body.addAfter(localDeclaration, body.getLBrace()); diff --git a/java/java-tests/testData/refactoring/inlineParameter/RefStaticMethod.java b/java/java-tests/testData/refactoring/inlineParameter/RefStaticMethod.java new file mode 100644 index 000000000000..429fa3b56972 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineParameter/RefStaticMethod.java @@ -0,0 +1,16 @@ +public class StaticRefMove { + public static int init() { + return 1; + } + + public void context() { + StaticRefMoveSubject v = new StaticRefMoveSubject(); + v.subject(init()); + } +} + +class StaticRefMoveSubject { + public void subject(int subj) { + System.out.println(subj); + } +} diff --git a/java/java-tests/testData/refactoring/inlineParameter/RefStaticMethod.java.after b/java/java-tests/testData/refactoring/inlineParameter/RefStaticMethod.java.after new file mode 100644 index 000000000000..6f076e7e75fb --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineParameter/RefStaticMethod.java.after @@ -0,0 +1,17 @@ +public class StaticRefMove { + public static int init() { + return 1; + } + + public void context() { + StaticRefMoveSubject v = new StaticRefMoveSubject(); + v.subject(); + } +} + +class StaticRefMoveSubject { + public void subject() { + int subj = StaticRefMove.init(); + System.out.println(subj); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineParameterTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineParameterTest.java index 5b4f48a46a33..3cebbb97f2f6 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineParameterTest.java @@ -80,6 +80,10 @@ public class InlineParameterTest extends LightCodeInsightTestCase { doTest(false); } + public void testRefStaticMethod() throws Exception { + doTest(true); + } + public void testRefOuterThis() throws Exception { try { doTest(false);