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 c9649a026fbb..1225fe6cbe2a 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -48,7 +48,6 @@ import com.intellij.refactoring.BaseRefactoringProcessor; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.introduceParameter.Util; import com.intellij.refactoring.listeners.RefactoringEventData; -import com.intellij.refactoring.listeners.RefactoringEventListener; import com.intellij.refactoring.rename.NonCodeUsageInfoFactory; import com.intellij.refactoring.rename.RenameJavaVariableProcessor; import com.intellij.refactoring.util.*; @@ -1265,7 +1264,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { if (parentStatement != null) { PsiElement parent = ref.getParent(); while (!parent.equals(parentStatement)) { - if (parent instanceof PsiStatement && !(parent instanceof PsiDeclarationStatement)) { + if (parent instanceof PsiExpressionStatement) { String text = "{\n}"; PsiBlockStatement blockStatement = (PsiBlockStatement)myFactory.createStatementFromText(text, null); blockStatement = (PsiBlockStatement)myCodeStyleManager.reformat(blockStatement); diff --git a/java/java-tests/testData/refactoring/inlineMethod/MethodInsideChangeIfStatement.java b/java/java-tests/testData/refactoring/inlineMethod/MethodInsideChangeIfStatement.java new file mode 100644 index 000000000000..1df5d47a74ab --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/MethodInsideChangeIfStatement.java @@ -0,0 +1,26 @@ +import java.util.ArrayList; +import java.util.List; + +class Test { + List foo(String[] strs) + { + final List result = new ArrayList(); + int start = -1; + for (int i = 0; i < strs.length; i++) + { + if (idx(i) == 42 && start == -1) + { + start = i; + } else if (idx(i) != 24 && start != -1) + { + result.add("".substring(idx(start))); + } + } + return result; + } + + private static int idx(int i) { + return i; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineMethod/MethodInsideChangeIfStatement.java.after b/java/java-tests/testData/refactoring/inlineMethod/MethodInsideChangeIfStatement.java.after new file mode 100644 index 000000000000..e43e7e849a44 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/MethodInsideChangeIfStatement.java.after @@ -0,0 +1,22 @@ +import java.util.ArrayList; +import java.util.List; + +class Test { + List foo(String[] strs) + { + final List result = new ArrayList(); + int start = -1; + for (int i = 0; i < strs.length; i++) + { + if (i == 42 && start == -1) + { + start = i; + } else if (i != 24 && start != -1) + { + result.add("".substring(start)); + } + } + return result; + } + +} \ 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 ec5ab9e53e96..c77b344f6722 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java @@ -260,6 +260,10 @@ public class InlineMethodTest extends LightRefactoringTestCase { doTest(true); } + public void testMethodInsideChangeIfStatement() throws Exception { + doTest(); + } + private void doTestInlineThisOnly() { @NonNls String fileName = "/refactoring/inlineMethod/" + getTestName(false) + ".java"; configureByFile(fileName);