mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
lambda -> meth ref: fix this qualifier in case of inheritance
(cherry picked from commit 5273314961f0fbf32c18ea3d602410c635caf03f)
This commit is contained in:
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
@@ -287,8 +288,12 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
if (psiMethod.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
methodRefText = getClassReferenceName(containingClass);
|
||||
} else {
|
||||
PsiClass treeContainingClass = PsiTreeUtil.getParentOfType(element, PsiClass.class);
|
||||
while (!InheritanceUtil.isInheritorOrSelf(treeContainingClass, containingClass, true)) {
|
||||
treeContainingClass = PsiTreeUtil.getParentOfType(treeContainingClass, PsiClass.class, true);
|
||||
}
|
||||
if (containingClass != PsiTreeUtil.getParentOfType(element, PsiClass.class) ) {
|
||||
methodRefText = containingClass.getName() + ".this";
|
||||
methodRefText = treeContainingClass.getName() + ".this";
|
||||
} else {
|
||||
methodRefText = "this";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
class Example extends O {
|
||||
|
||||
void m(Runnable r) {}
|
||||
|
||||
class A {
|
||||
class B {
|
||||
{
|
||||
m(Example.this::p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class O {
|
||||
void p() {}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// "Replace lambda with method reference" "true"
|
||||
class Example extends O {
|
||||
|
||||
void m(Runnable r) {}
|
||||
|
||||
class A {
|
||||
class B {
|
||||
{
|
||||
m(() -> p<caret>());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class O {
|
||||
void p() {}
|
||||
}
|
||||
Reference in New Issue
Block a user