From 3e198a4c4cf993ea96531bd13b72f0b402200513 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 16 Oct 2012 17:44:28 +0200 Subject: [PATCH] replace method reference with lambda: default constructor processing (IDEA-93025) --- .../ipp/types/ReplaceMethodRefWithLambdaIntention.java | 2 ++ .../types/methodRefs2lambda/NewDefaultConstructor.java | 10 ++++++++++ .../methodRefs2lambda/NewDefaultConstructor_after.java | 10 ++++++++++ .../ReplaceMethodReferenceWithLambdaIntentionTest.java | 4 ++++ 4 files changed, 26 insertions(+) create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor.java create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor_after.java diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java index d54828570e2c..923146ee532d 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java @@ -87,6 +87,8 @@ public class ReplaceMethodRefWithLambdaIntention extends Intention { final PsiClass containingClass = ((PsiMember)resolveElement).getContainingClass(); LOG.assertTrue(containingClass != null); isReceiver = LambdaUtil.isReceiverType(functionalInterfaceType, containingClass, (PsiMethod)resolveElement); + } else if (resolveElement instanceof PsiClass) { + isReceiver = LambdaUtil.isReceiverType(functionalInterfaceType, (PsiClass)resolveElement, (PsiMethod)null); } final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor.java new file mode 100644 index 000000000000..3dc2facab3c4 --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor.java @@ -0,0 +1,10 @@ +class Test1 { + class Inner {} + void test() { + BlahBlah6 blahBlah62 = Inner::new; + } +} + +interface BlahBlah6 { + Test1.Inner foo6(Test1 p); +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor_after.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor_after.java new file mode 100644 index 000000000000..f346d7d7a18c --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/methodRefs2lambda/NewDefaultConstructor_after.java @@ -0,0 +1,10 @@ +class Test1 { + class Inner {} + void test() { + BlahBlah6 blahBlah62 = (p) -> p.new Inner(); + } +} + +interface BlahBlah6 { + Test1.Inner foo6(Test1 p); +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceMethodReferenceWithLambdaIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceMethodReferenceWithLambdaIntentionTest.java index bbc28d89732d..0a4dc30371f2 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceMethodReferenceWithLambdaIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceMethodReferenceWithLambdaIntentionTest.java @@ -85,4 +85,8 @@ public class ReplaceMethodReferenceWithLambdaIntentionTest extends IPPTestCase { public void testTypeElementOnTheLeft() throws Exception { doTest(); } + + public void testNewDefaultConstructor() throws Exception { + doTest(); + } }