unused declaration: add refs on functional interface from functional expressions (IDEA-132138)

This commit is contained in:
Anna Kozlova
2014-11-14 15:54:45 +01:00
parent 00ecf0d2a7
commit cda6c424d0
4 changed files with 42 additions and 0 deletions

View File

@@ -92,6 +92,29 @@ public class RefJavaUtilImpl extends RefJavaUtil{
}
}
@Override
public void visitLambdaExpression(PsiLambdaExpression expression) {
super.visitLambdaExpression(expression);
processFunctionalExpression(expression);
}
@Override
public void visitMethodReferenceExpression(PsiMethodReferenceExpression expression) {
super.visitMethodReferenceExpression(expression);
processFunctionalExpression(expression);
}
private void processFunctionalExpression(PsiFunctionalExpression expression) {
final PsiClass aClass = PsiUtil.resolveClassInType(expression.getFunctionalInterfaceType());
if (aClass != null) {
refFrom.addReference(refFrom.getRefManager().getReference(aClass), aClass, psiFrom, false, true, null);
final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(aClass);
if (interfaceMethod != null) {
refFrom.addReference(refFrom.getRefManager().getReference(interfaceMethod), interfaceMethod, psiFrom, false, true, null);
}
}
}
@Nullable
private RefMethod processNewLikeConstruct(final PsiMethod psiConstructor, final PsiExpressionList argumentList) {
if (psiConstructor != null) {