mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-30 02:09:59 +07:00
lambda -> method ref: ensure that capture is checked according to the param ref; avoid wildcards in method ref qualifiers (IDEA-139529)
This commit is contained in:
@@ -334,7 +334,7 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
if (qualifierExpression != null) {
|
||||
boolean isReceiverType = false;
|
||||
if (qualifierExpression instanceof PsiReferenceExpression && ArrayUtil.find(parameters, ((PsiReferenceExpression)qualifierExpression).resolve()) > -1) {
|
||||
isReceiverType = PsiMethodReferenceUtil.isReceiverType(PsiMethodReferenceUtil.getFirstParameterType(functionalInterfaceType, methodCall), containingClass, substitutor);
|
||||
isReceiverType = PsiMethodReferenceUtil.isReceiverType(PsiMethodReferenceUtil.getFirstParameterType(functionalInterfaceType, qualifierExpression), containingClass, substitutor);
|
||||
}
|
||||
return isReceiverType ? composeReceiverQualifierText(parameters, psiMethod, containingClass, qualifierExpression)
|
||||
: qualifierExpression.getText();
|
||||
@@ -390,7 +390,8 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
}
|
||||
|
||||
final PsiType qualifierExpressionType = qualifierExpression.getType();
|
||||
return qualifierExpressionType != null ? qualifierExpressionType.getCanonicalText() : getClassReferenceName(containingClass);
|
||||
return qualifierExpressionType != null && !TypeConversionUtil.containsWildcards(qualifierExpressionType)
|
||||
? qualifierExpressionType.getCanonicalText() : getClassReferenceName(containingClass);
|
||||
}
|
||||
|
||||
private static String getClassReferenceName(PsiClass containingClass) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
import java.util.function.Function;
|
||||
class Bar {
|
||||
Function<Class<?> , String> s = Class::getCanonicalName;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
import java.util.function.Function;
|
||||
class Bar {
|
||||
Function<Class<?> , String> s = (c) -> c.getCanonica<caret>lName();
|
||||
}
|
||||
Reference in New Issue
Block a user