diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index 7804e23aedd4..c1931273df80 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -142,8 +142,9 @@ public class ExtractMethodProcessor implements MatchProvider { String helpId) { myProject = project; myEditor = editor; - if (elements.length != 1 || elements.length == 1 && !(elements[0] instanceof PsiBlockStatement)) { - myElements = elements; + if (elements.length != 1 || !(elements[0] instanceof PsiBlockStatement)) { + myElements = elements.length == 1 && elements[0] instanceof PsiParenthesizedExpression + ? new PsiElement[] {PsiUtil.skipParenthesizedExprDown((PsiExpression)elements[0])} : elements; myEnclosingBlockStatement = null; } else { diff --git a/java/java-tests/testData/refactoring/extractMethod/TheOnlyParenthesisExpressionWhichIsSkippedInControlFlow.java b/java/java-tests/testData/refactoring/extractMethod/TheOnlyParenthesisExpressionWhichIsSkippedInControlFlow.java new file mode 100644 index 000000000000..c85bc6be35f4 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/TheOnlyParenthesisExpressionWhichIsSkippedInControlFlow.java @@ -0,0 +1,7 @@ +class Test { + { + int i = 2; + int n = 5; + boolean b = !(i < n); + } +} diff --git a/java/java-tests/testData/refactoring/extractMethod/TheOnlyParenthesisExpressionWhichIsSkippedInControlFlow_after.java b/java/java-tests/testData/refactoring/extractMethod/TheOnlyParenthesisExpressionWhichIsSkippedInControlFlow_after.java new file mode 100644 index 000000000000..f4133240b547 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/TheOnlyParenthesisExpressionWhichIsSkippedInControlFlow_after.java @@ -0,0 +1,11 @@ +class Test { + { + int i = 2; + int n = 5; + boolean b = !newMethod(i, n); + } + + private boolean newMethod(int i, int n) { + return i < n; + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java index 327ab42363f3..b4ea5f056928 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java @@ -657,6 +657,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase { doTest(); } + public void testTheOnlyParenthesisExpressionWhichIsSkippedInControlFlow() throws Exception { + doTest(); + } + public void testExpression() throws Exception { doTest(); }