lambda -> anonym: additionally process method calls as they may clash with resulted class methods (IDEA-120469)

This commit is contained in:
Anna Kozlova
2014-02-25 10:15:18 +01:00
parent b178187a93
commit f4e209c47e
4 changed files with 40 additions and 0 deletions
@@ -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));
@@ -0,0 +1,12 @@
import java.util.function.Consumer;
import java.util.function.Function;
public interface Observable<T> {
void subscribe(Consumer<T> consumer);
default <R> Observable<R> map(Function<T, R> f) {
return cons<caret>umer -> subscribe(null);
}
}
@@ -0,0 +1,17 @@
import java.util.function.Consumer;
import java.util.function.Function;
public interface Observable<T> {
void subscribe(Consumer<T> consumer);
default <R> Observable<R> map(Function<T, R> f) {
return new Observable<R>() {
@Override
public void subscribe(Consumer<T> consumer) {
Observable.this.subscribe(null);
}
};
}
}
@@ -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");