From 498faaa7fccaa239235b1ab8a02b3badc4180c26 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 26 Jul 2012 12:28:40 +0200 Subject: [PATCH] inline: do not remove anything during inline --- .../refactoring/inline/InlineMethodProcessor.java | 8 +++++--- .../com/intellij/refactoring/inline/InlineMethodTest.java | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) 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 5ab60d23295d..15a8d9fd56a4 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -199,7 +199,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { if (reference != null) { InlineUtil.TailCallType type = InlineUtil.getTailCallType(reference); if (type == InlineUtil.TailCallType.Simple) { - conflicts.putValue(statement, "Inlined result won't be a valid statement"); + conflicts.putValue(statement, "Inlined result would contain parse errors"); break; } } @@ -747,12 +747,14 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { if (returnValue == null) continue; PsiStatement statement; if (tailCallType == InlineUtil.TailCallType.Simple) { - if (returnValue instanceof PsiExpression) { + if (returnValue instanceof PsiExpression && returnStatement.getNextSibling() == myMethodCopy.getBody().getLastBodyElement()) { PsiExpressionStatement exprStatement = (PsiExpressionStatement) myFactory.createStatementFromText("a;", null); exprStatement.getExpression().replace(returnValue); returnStatement.getParent().addBefore(exprStatement, returnStatement); + statement = myFactory.createStatementFromText("return;", null); + } else { + statement = (PsiStatement)returnStatement.copy(); } - statement = myFactory.createStatementFromText("return;", null); } else { statement = myFactory.createStatementFromText(resultName + "=0;", null); 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 8bf1cad4768b..0b4a346eda55 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java @@ -193,7 +193,7 @@ public class InlineMethodTest extends LightRefactoringTestCase { } public void testNotAStatement() throws Exception { - doTestConflict("Inlined result won't be a valid statement"); + doTestConflict("Inlined result would contain parse errors"); } private void doTestConflict(final String conflict) throws Exception {