diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java index 3a26722b9702..ccab3ea87a05 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/functional/ExtractToMethodReferenceIntention.java @@ -28,6 +28,7 @@ import com.intellij.refactoring.util.duplicates.MethodDuplicatesHandler; import com.intellij.util.ObjectUtils; import com.intellij.util.text.UniqueNameGenerator; import com.siyeh.IntentionPowerPackBundle; +import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.CommentTracker; import org.jetbrains.annotations.NotNull; @@ -93,7 +94,7 @@ public class ExtractToMethodReferenceIntention extends BaseElementAtCaretIntenti if (lambdaExpression != null) { PsiCodeBlock body = RefactoringUtil.expandExpressionLambdaToCodeBlock(lambdaExpression); - PsiClass targetClass = PsiTreeUtil.getParentOfType(lambdaExpression, PsiClass.class); + PsiClass targetClass = ClassUtils.getContainingClass(lambdaExpression); if (targetClass == null) return; PsiElement[] elements = body.getStatements(); diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/AnonymousClassArgument.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/AnonymousClassArgument.java new file mode 100644 index 000000000000..cdfdbbcb93cd --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/AnonymousClassArgument.java @@ -0,0 +1,5 @@ +class AnonymousClassArgument { + { + Thread t = new Thread(() -> {}) {} ; + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/AnonymousClassArgument_after.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/AnonymousClassArgument_after.java new file mode 100644 index 000000000000..54c85fe46a42 --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/functional/extractToMethodReference/AnonymousClassArgument_after.java @@ -0,0 +1,8 @@ +class AnonymousClassArgument { + { + Thread t = new Thread(AnonymousClassArgument::run) {} ; + } + + private static void run() { + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java index 397a338fcae2..3213bfbdb959 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/functional/ExtractToMethodReferenceTest.java @@ -58,6 +58,10 @@ public class ExtractToMethodReferenceTest extends IPPTestCase { doTest(); } + public void testAnonymousClassArgument() { + doTest(); + } + public void testUsedLocalVariables() { assertIntentionNotAvailable(); }