diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java index 8a339bb62d49..4dd389fd6791 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java @@ -91,7 +91,7 @@ public class ReplaceLambdaWithAnonymousIntention extends Intention { final PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(element, PsiLambdaExpression.class); if (lambdaExpression != null && PsiTreeUtil.isAncestor(lambdaExpression.getParameterList(), element, false)) { final PsiType functionalInterfaceType = lambdaExpression.getFunctionalInterfaceType(); - return functionalInterfaceType != null && LambdaUtil.getFunctionalInterfaceMethod(functionalInterfaceType) != null; + return functionalInterfaceType != null && LambdaUtil.getFunctionalInterfaceMethod(functionalInterfaceType) != null && LambdaUtil.isLambdaFullyInferred(lambdaExpression, functionalInterfaceType); } return false; } diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/CyclicInference.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/CyclicInference.java new file mode 100644 index 000000000000..981d5e6b04cd --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/CyclicInference.java @@ -0,0 +1,13 @@ +class Test2 { + class Y{} + + interface I { + X foo(Y list); + } + + static I bar(I i){return i;} + + { + bar(x -> x); + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java index 191ae96fe5a7..7aa62f3fe353 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java @@ -27,6 +27,10 @@ public class ReplaceLambdaWithAnonymousIntentionTest extends IPPTestCase { doTest(); } + public void testCyclicInference() { + assertIntentionNotAvailable(); + } + public void testNoFunctionalInterfaceFound() { assertIntentionNotAvailable(); }