From 1f8864bfa9dc408f93bcf9294cf09ec542188f4b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 2 Jul 2014 11:17:50 +0200 Subject: [PATCH] anonym -> lambda: forbid when result in illegal self reference (IDEA-126763) --- .../codeInspection/AnonymousCanBeLambdaInspection.java | 1 + .../quickFix/anonymous2lambda/beforeSelfReference.java | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeSelfReference.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 87ad7d9f6756..96066c34eefe 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java @@ -433,6 +433,7 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection if (resolved instanceof PsiField && ((PsiField)resolved).getContainingClass() == field.getContainingClass()) { final PsiExpression initializer = ((PsiField)resolved).getInitializer(); if (initializer == null || + resolved == field || initializer.getTextOffset() > myAnonymClass.getTextOffset() && !((PsiField)resolved).hasModifierProperty(PsiModifier.STATIC)) { myBodyContainsForbiddenRefs = true; return; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeSelfReference.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeSelfReference.java new file mode 100644 index 000000000000..7160a62ffbc3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeSelfReference.java @@ -0,0 +1,9 @@ +// "Replace with lambda" "false" +class Test { + Runnable runnable = new Runnable() { + @Override + public void run() { + System.out.println(runnable); + } + }; +} \ No newline at end of file