diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java index 4b88ecc0eddf..ebc8f5d368da 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java @@ -565,6 +565,9 @@ public class ExtractMethodObjectProcessor extends BaseRefactoringProcessor { private void adjustTargetClassReferences(final PsiElement body) throws IncorrectOperationException { PsiManager manager = PsiManager.getInstance(myProject); PsiClass targetClass = getMethod().getContainingClass(); + //Actually we should go into lambdas as this/super expressions inside them still refer to the outer class instance. + //Visiting returns inside lambdas is safe as they never have GENERATED_RETURN inside + //noinspection UnsafeReturnStatementVisitor body.accept(new JavaRecursiveElementVisitor() { @Override public void visitReturnStatement(PsiReturnStatement statement) { @@ -587,11 +590,6 @@ public class ExtractMethodObjectProcessor extends BaseRefactoringProcessor { } } - @Override - public void visitLambdaExpression(PsiLambdaExpression expression) { - // do not visit lambdas - } - @Override public void visitClass(PsiClass aClass) { // do not visit sub classes