mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
[java] disable lambda -> method references for casts in qualifiers (IDEA-277905)
GitOrigin-RevId: 7904b8a59aa8c8f1f95deba5b14872624ff68ff7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0d9655f2ba
commit
1cd8782c82
@@ -1,6 +0,0 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
class Bar extends Random {
|
||||
public void test(Object obj) {
|
||||
Runnable r = ((String) obj)::trim;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
// "Replace lambda with method reference" "false"
|
||||
class Bar extends Random {
|
||||
public void test(Object obj) {
|
||||
Runnable r = () -> <caret>((String)obj).trim();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature;
|
||||
@@ -20,6 +20,7 @@ import com.intellij.psi.util.*;
|
||||
import com.intellij.refactoring.util.RefactoringChangeUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
@@ -29,7 +30,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class LambdaCanBeMethodReferenceInspection extends AbstractBaseJavaLocalInspectionTool {
|
||||
private static final Logger LOG = Logger.getInstance(LambdaCanBeMethodReferenceInspection.class);
|
||||
@@ -110,7 +110,7 @@ public class LambdaCanBeMethodReferenceInspection extends AbstractBaseJavaLocalI
|
||||
final PsiExpression methodRefCandidate) {
|
||||
if (functionalInterfaceType == null) return null;
|
||||
// Do not suggest for annotated lambda, as annotation will be lost during the conversion
|
||||
if (Stream.of(parameters).anyMatch(LambdaCanBeMethodReferenceInspection::hasAnnotation)) return null;
|
||||
if (ContainerUtil.or(parameters, LambdaCanBeMethodReferenceInspection::hasAnnotation)) return null;
|
||||
if (methodRefCandidate instanceof PsiNewExpression) {
|
||||
final PsiNewExpression newExpression = (PsiNewExpression)methodRefCandidate;
|
||||
if (newExpression.getAnonymousClass() != null || newExpression.getArrayInitializer() != null) {
|
||||
@@ -315,7 +315,7 @@ public class LambdaCanBeMethodReferenceInspection extends AbstractBaseJavaLocalI
|
||||
if (qualifier == null) {
|
||||
return true;
|
||||
}
|
||||
final Condition<PsiElement> callExpressionCondition = Conditions.instanceOf(PsiCallExpression.class, PsiArrayAccessExpression.class);
|
||||
final Condition<PsiElement> callExpressionCondition = Conditions.instanceOf(PsiCallExpression.class, PsiArrayAccessExpression.class, PsiTypeCastExpression.class);
|
||||
final Condition<PsiElement> nonFinalFieldRefCondition = expression -> {
|
||||
if (expression instanceof PsiReferenceExpression && !(expression.getParent() instanceof PsiCallExpression)) {
|
||||
PsiElement element = ((PsiReferenceExpression)expression).resolve();
|
||||
|
||||
Reference in New Issue
Block a user