コード例 #1
0
 private static String compoundLambdaOrMethodReference(
     PsiParameter parameter,
     PsiExpression expression,
     String samQualifiedName,
     PsiType[] samParamTypes) {
   String result = "";
   final Project project = parameter.getProject();
   final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project);
   final PsiClass functionClass =
       psiFacade.findClass(samQualifiedName, GlobalSearchScope.allScope(project));
   for (int i = 0; i < samParamTypes.length; i++) {
     if (samParamTypes[i] instanceof PsiPrimitiveType) {
       samParamTypes[i] = ((PsiPrimitiveType) samParamTypes[i]).getBoxedType(expression);
     }
   }
   final PsiClassType functionalInterfaceType =
       functionClass != null
           ? psiFacade.getElementFactory().createType(functionClass, samParamTypes)
           : null;
   final PsiParameter[] parameters = {parameter};
   final String methodReferenceText =
       LambdaCanBeMethodReferenceInspection.convertToMethodReference(
           expression, parameters, functionalInterfaceType, null);
   if (methodReferenceText != null) {
     LOG.assertTrue(functionalInterfaceType != null);
     result += "(" + functionalInterfaceType.getCanonicalText() + ")" + methodReferenceText;
   } else {
     result += parameter.getName() + " -> " + expression.getText();
   }
   return result;
 }
コード例 #2
0
 private static boolean isTrivial(PsiStatement body, PsiParameter parameter) {
   final PsiIfStatement ifStatement = extractIfStatement(body);
   // filter
   if (ifStatement != null) {
     return false;
   }
   // method reference
   final PsiCallExpression callExpression =
       LambdaCanBeMethodReferenceInspection.canBeMethodReferenceProblem(
           body instanceof PsiBlockStatement ? ((PsiBlockStatement) body).getCodeBlock() : body,
           new PsiParameter[] {parameter},
           createDefaultConsumerType(parameter.getProject(), parameter));
   if (callExpression == null) {
     return true;
   }
   final PsiMethod method = callExpression.resolveMethod();
   return method != null && isThrowsCompatible(method);
 }