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 97179505664a..1344e4e253af 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -259,6 +259,9 @@ public class ExtractMethodProcessor implements MatchProvider { } else { expressionType = RefactoringUtil.getTypeByExpressionWithExpectedType(myExpression); + if (expressionType == null && !(myExpression.getParent() instanceof PsiExpressionStatement)) { + expressionType = PsiType.getJavaLangObject(myExpression.getManager(), GlobalSearchScope.allScope(myProject)); + } } } if (expressionType == null) { diff --git a/java/java-tests/testData/refactoring/extractMethod/IncompleteExpression.java b/java/java-tests/testData/refactoring/extractMethod/IncompleteExpression.java new file mode 100644 index 000000000000..dce6c4b7d49c --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/IncompleteExpression.java @@ -0,0 +1,7 @@ +class Test { + + public static void main(String[] args) { + final Test s = new Test(); + System.out.println(s.callAbsentMethod().toString()); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethod/IncompleteExpression_after.java b/java/java-tests/testData/refactoring/extractMethod/IncompleteExpression_after.java new file mode 100644 index 000000000000..a1a007ae7884 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/IncompleteExpression_after.java @@ -0,0 +1,11 @@ +class Test { + + public static void main(String[] args) { + final Test s = new Test(); + System.out.println(newMethod(s)); + } + + private static Object newMethod(Test s) { + return s.callAbsentMethod().toString(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java index ead8a5318ef2..0760bb5dda9a 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java @@ -591,6 +591,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase { doTest(); } + public void testIncompleteExpression() throws Exception { + doTest(); + } + public void testTwoFromThreeEqStatements() throws Exception { doDuplicatesTest(); }