ExtractToMethodReferenceIntention: fix for anonymous class argument

This commit is contained in:
Tagir Valeev
2018-07-06 13:58:50 +07:00
parent 18cf75762b
commit 5777239b52
4 changed files with 19 additions and 1 deletions
@@ -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();
@@ -0,0 +1,5 @@
class AnonymousClassArgument {
{
Thread t = new Thread(() <caret>-> {}) {} ;
}
}
@@ -0,0 +1,8 @@
class AnonymousClassArgument {
{
Thread t = new Thread(AnonymousClassArgument::<caret>run) {} ;
}
private static void run() {
}
}
@@ -58,6 +58,10 @@ public class ExtractToMethodReferenceTest extends IPPTestCase {
doTest();
}
public void testAnonymousClassArgument() {
doTest();
}
public void testUsedLocalVariables() {
assertIntentionNotAvailable();
}