mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
lambda -> anonym: additionally process method calls as they may clash with resulted class methods (IDEA-120469)
This commit is contained in:
+7
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+17
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+4
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user