From c08578a8b829db944e82ed168ecf8472c0253861 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 6 Jul 2018 16:28:17 +0700 Subject: [PATCH] AnonymousCanBeLambdaInspection: support parenthesized anonymous class --- .../codeInspection/AnonymousCanBeLambdaInspection.java | 2 +- .../quickFix/anonymous2lambda/afterParenthesized.java | 6 ++++++ .../quickFix/anonymous2lambda/beforeParenthesized.java | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterParenthesized.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeParenthesized.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java index 3024b0f5e5c0..8d42b126eba1 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java @@ -199,7 +199,7 @@ public class AnonymousCanBeLambdaInspection extends AbstractBaseJavaLocalInspect boolean reportNotAnnotatedInterfaces, @NotNull Set ignoredRuntimeAnnotations) { PsiElement parent = aClass.getParent(); - final PsiElement lambdaContext = parent != null ? parent.getParent() : null; + final PsiElement lambdaContext = parent != null ? PsiUtil.skipParenthesizedExprUp(parent.getParent()) : null; if (lambdaContext == null || !LambdaUtil.isValidLambdaContext(lambdaContext) && !(lambdaContext instanceof PsiReferenceExpression)) return false; return isLambdaForm(aClass, acceptParameterizedFunctionTypes, reportNotAnnotatedInterfaces, ignoredRuntimeAnnotations); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterParenthesized.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterParenthesized.java new file mode 100644 index 000000000000..2e18599df5a6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterParenthesized.java @@ -0,0 +1,6 @@ +// "Replace with lambda" "true" +class Test { + private void doSomething() { + ((Runnable) () -> System.out.println()).run(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeParenthesized.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeParenthesized.java new file mode 100644 index 000000000000..28635137f4da --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeParenthesized.java @@ -0,0 +1,10 @@ +// "Replace with lambda" "true" +class Test { + private void doSomething() { + (new Runnable() { + public void run() { + System.out.println(); + } + }).run(); + } +} \ No newline at end of file