mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
anonym -> lambda: expression lambda should be used with care due to void/value ambiguity (IDEA-125951)
This commit is contained in:
+5
-2
@@ -211,8 +211,11 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection
|
||||
if (element instanceof PsiNewExpression) {
|
||||
if (!FileModificationService.getInstance().preparePsiElementForWrite(element)) return;
|
||||
final PsiAnonymousClass anonymousClass = ((PsiNewExpression)element).getAnonymousClass();
|
||||
|
||||
|
||||
LOG.assertTrue(anonymousClass != null);
|
||||
|
||||
final boolean voidCompatible = PsiType.VOID.equals(LambdaUtil.getFunctionalInterfaceReturnType(anonymousClass.getBaseClassType()));
|
||||
|
||||
ChangeContextUtil.encodeContextInfo(anonymousClass, true);
|
||||
final PsiElement lambdaContext = anonymousClass.getParent().getParent();
|
||||
boolean validContext = LambdaUtil.isValidLambdaContext(lambdaContext);
|
||||
@@ -254,7 +257,7 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection
|
||||
if (value != null) {
|
||||
copy = value.copy();
|
||||
}
|
||||
} else if (statements[0] instanceof PsiExpressionStatement) {
|
||||
} else if (statements[0] instanceof PsiExpressionStatement && !(voidCompatible && lambdaContext instanceof PsiExpressionList)) {
|
||||
copy = ((PsiExpressionStatement)statements[0]).getExpression().copy();
|
||||
}
|
||||
}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// "Replace with lambda" "true"
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class Test {
|
||||
public static void main(String[] args) {
|
||||
Set<String> strings = new HashSet<>();
|
||||
new Test().query((ResultSet var1) -> strings.add("Col1"));
|
||||
}
|
||||
|
||||
public void query(RowCallbackHandler rch){
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public Object query( final ResultSetExtractor rse) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
interface RowCallbackHandler {
|
||||
void processRow(ResultSet var1);
|
||||
}
|
||||
|
||||
interface ResultSetExtractor {
|
||||
Object extractData(ResultSet var1);
|
||||
}
|
||||
class ResultSet {}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
// "Replace with lambda" "true"
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class Test {
|
||||
public static void main(String[] args) {
|
||||
Set<String> strings = new HashSet<>();
|
||||
new Test().query(pResultSet -> {
|
||||
strings.add("Col1");
|
||||
});
|
||||
}
|
||||
|
||||
public void query(RowCallbackHandler rch){
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public Object query( final ResultSetExtractor rse) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
interface RowCallbackHandler {
|
||||
void processRow(ResultSet var1);
|
||||
}
|
||||
|
||||
interface ResultSetExtractor {
|
||||
Object extractData(ResultSet var1);
|
||||
}
|
||||
class ResultSet {}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
// "Replace with lambda" "true"
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class Test {
|
||||
public static void main(String[] args) {
|
||||
Set<String> strings = new HashSet<>();
|
||||
new Test().query(new Res<caret>ultSetExtractor() {
|
||||
@Override
|
||||
public Object extractData(ResultSet var1) {
|
||||
return strings.add("Col1");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void query(RowCallbackHandler rch){
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public Object query( final ResultSetExtractor rse) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
interface RowCallbackHandler {
|
||||
void processRow(ResultSet var1);
|
||||
}
|
||||
|
||||
interface ResultSetExtractor {
|
||||
Object extractData(ResultSet var1);
|
||||
}
|
||||
class ResultSet {}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
// "Replace with lambda" "true"
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class Test {
|
||||
public static void main(String[] args) {
|
||||
Set<String> strings = new HashSet<>();
|
||||
new Test().query(new RowCa<caret>llbackHandler() {
|
||||
@Override
|
||||
public void processRow(ResultSet pResultSet) {
|
||||
strings.add("Col1");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void query(RowCallbackHandler rch){
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public Object query( final ResultSetExtractor rse) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
interface RowCallbackHandler {
|
||||
void processRow(ResultSet var1);
|
||||
}
|
||||
|
||||
interface ResultSetExtractor {
|
||||
Object extractData(ResultSet var1);
|
||||
}
|
||||
class ResultSet {}
|
||||
Reference in New Issue
Block a user