diff --git a/java/java-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java b/java/java-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java index fe2884b6d912..9b40f1f37fa9 100644 --- a/java/java-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java @@ -145,6 +145,14 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaLocalInspectionTool buf.append("->"); final PsiCodeBlock body = method.getBody(); LOG.assertTrue(body != null); + final PsiStatement[] statements = body.getStatements(); + if (statements.length == 1 && statements[0] instanceof PsiReturnStatement) { + PsiExpression value = ((PsiReturnStatement)statements[0]).getReturnValue(); + if (value != null) { + buf.append(value.getText()); + return buf.toString(); + } + } buf.append(body.getText()); return buf.toString(); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparable.java index c4186c9efb5e..f787f50af2f3 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparable.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparable.java @@ -1,8 +1,6 @@ // "Replace with lambda" "true" class Test { { - Comparable c = o -> { - return 0; - }; + Comparable c = o -> 0; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterFormalTypes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterFormalTypes.java index d6372aa4b089..b39fca9cb111 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterFormalTypes.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterFormalTypes.java @@ -9,8 +9,6 @@ class Test2 { static I bar(I i){return i;} { - bar((List list) -> { - return null; //To change body of implemented methods use File | Settings | File Templates. - }); + bar((List list) -> null); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterMultilineComparable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterMultilineComparable.java new file mode 100644 index 000000000000..4feda0438041 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterMultilineComparable.java @@ -0,0 +1,9 @@ +// "Replace with lambda" "true" +class Test { + { + Comparable c = o -> { + System.out.println(); + return 0; + }; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeMultilineComparable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeMultilineComparable.java new file mode 100644 index 000000000000..8a2ed032f70a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeMultilineComparable.java @@ -0,0 +1,12 @@ +// "Replace with lambda" "true" +class Test { + { + Comparable c = new Comparable() { + @Override + public int compareTo(String o) { + System.out.println(); + return 0; + } + }; + } +} \ No newline at end of file