diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java index 45543e436c4c..13f7f8b4c814 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java @@ -83,6 +83,13 @@ public class ReplaceLambdaWithAnonymousIntention extends Intention { } } + @Override + public void visitMethodCallExpression(PsiMethodCallExpression expression) { + super.visitMethodCallExpression(expression); + if (thisAccessExpr != null && expression.getMethodExpression().getQualifierExpression() == null) { + replacements.put(expression, psiElementFactory.createExpressionFromText(thisAccessExpr.getText() + "." + expression.getText(), expression)); + } + } }); for (PsiElement psiElement : replacements.keySet()) { psiElement.replace(replacements.get(psiElement)); diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/QualifyThis1.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/QualifyThis1.java new file mode 100644 index 000000000000..7d3a4885a80b --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/QualifyThis1.java @@ -0,0 +1,12 @@ +import java.util.function.Consumer; +import java.util.function.Function; + +public interface Observable { + void subscribe(Consumer consumer); + + default Observable map(Function f) { + return consumer -> subscribe(null); + } + + +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/QualifyThis1_after.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/QualifyThis1_after.java new file mode 100644 index 000000000000..a0d6a21bf69c --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/lambda2anonymous/QualifyThis1_after.java @@ -0,0 +1,17 @@ +import java.util.function.Consumer; +import java.util.function.Function; + +public interface Observable { + void subscribe(Consumer consumer); + + default Observable map(Function f) { + return new Observable() { + @Override + public void subscribe(Consumer consumer) { + Observable.this.subscribe(null); + } + }; + } + + +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java index dfcdca5b5a3d..a6076422ffd5 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntentionTest.java @@ -71,6 +71,10 @@ public class ReplaceLambdaWithAnonymousIntentionTest extends IPPTestCase { doTest(); } + public void testQualifyThis1() { + doTest(); + } + @Override protected String getIntentionName() { return IntentionPowerPackBundle.message("replace.lambda.with.anonymous.intention.name");