disable method reference replacement with qualifier (IDEA-164723)

This commit is contained in:
Anna.Kozlova
2016-11-30 15:31:10 +01:00
parent a17be30b79
commit 1732f58088
4 changed files with 37 additions and 1 deletions

View File

@@ -31,7 +31,7 @@ public class TrivialMethodReferenceInspection extends BaseJavaBatchLocalInspecti
public void visitMethodReferenceExpression(PsiMethodReferenceExpression expression) {
final PsiExpression qualifierExpression = expression.getQualifierExpression();
final PsiElement referenceNameElement = expression.getReferenceNameElement();
if (qualifierExpression != null && referenceNameElement != null) {
if (qualifierExpression != null && referenceNameElement != null && !(qualifierExpression instanceof PsiSuperExpression)) {
final PsiType qualifierType = qualifierExpression.getType();
if (qualifierType != null) {
final PsiType functionalInterfaceType = expression.getFunctionalInterfaceType();

View File

@@ -0,0 +1,12 @@
// "Replace with qualifier" "true"
class A implements Runnable {
public void run() {}
}
class B extends A {
void f(Runnable r) {}
{
f(this);
}
}

View File

@@ -0,0 +1,12 @@
// "Replace with qualifier" "false"
class A implements Runnable {
public void run() {}
}
class B extends A {
void f(Runnable r) {}
{
f(super::ru<caret>n);
}
}

View File

@@ -0,0 +1,12 @@
// "Replace with qualifier" "true"
class A implements Runnable {
public void run() {}
}
class B extends A {
void f(Runnable r) {}
{
f(this::ru<caret>n);
}
}