replace lambda with anonymous: hide for cyclic inference cases

This commit is contained in:
Anna Kozlova
2012-08-21 11:42:37 +04:00
parent d3111ef2ca
commit 523d59d6d0
3 changed files with 18 additions and 1 deletions
@@ -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;
}
@@ -0,0 +1,13 @@
class Test2 {
class Y<T>{}
interface I<X> {
X foo(Y<X> list);
}
static <T> I<T> bar(I<T> i){return i;}
{
bar(<caret>x -> x);
}
}
@@ -27,6 +27,10 @@ public class ReplaceLambdaWithAnonymousIntentionTest extends IPPTestCase {
doTest();
}
public void testCyclicInference() {
assertIntentionNotAvailable();
}
public void testNoFunctionalInterfaceFound() {
assertIntentionNotAvailable();
}