From 1986b5aa34cd77718184e82179fc34e17a9a8560 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 4 Mar 2013 15:26:25 +0100 Subject: [PATCH] accept array types as receivers without subst checks --- .../src/com/intellij/psi/PsiMethodReferenceUtil.java | 4 +++- .../siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java b/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java index 1d0b2d750304..8a15b1f50a9b 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java @@ -191,6 +191,7 @@ public class PsiMethodReferenceUtil { } public static boolean isReceiverType(PsiType receiverType, @Nullable PsiClass containingClass, PsiSubstitutor psiSubstitutor) { + boolean arrayType = receiverType instanceof PsiArrayType; if (containingClass != null) { receiverType = getExpandedType(receiverType, containingClass); } @@ -198,7 +199,8 @@ public class PsiMethodReferenceUtil { final PsiClass receiverClass = resolveResult.getElement(); if (receiverClass != null && isReceiverType(receiverClass, containingClass)) { LOG.assertTrue(containingClass != null); - return resolveResult.getSubstitutor().equals(psiSubstitutor) || + return arrayType || + resolveResult.getSubstitutor().equals(psiSubstitutor) || emptyOrRaw(containingClass, psiSubstitutor) || emptyOrRaw(receiverClass, resolveResult.getSubstitutor()); } diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java index 647b49f65d2f..543404119b92 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java @@ -92,8 +92,7 @@ public class ReplaceMethodRefWithLambdaIntention extends Intention { final boolean onArrayRef = JavaPsiFacade.getElementFactory(element.getProject()).getArrayClass(PsiUtil.getLanguageLevel(element)) == containingClass; - boolean isReceiver = onArrayRef && resolveElement instanceof PsiMethod || - PsiMethodReferenceUtil.isReceiverType(functionalInterfaceType, containingClass, resolveElement instanceof PsiMethod ? (PsiMethod)resolveElement : null); + boolean isReceiver = PsiMethodReferenceUtil.isReceiverType(functionalInterfaceType, containingClass, resolveElement instanceof PsiMethod ? (PsiMethod)resolveElement : null); final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); if (isReceiver){