mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 06:39:38 +07:00
provide quick fix to qualify super call to default interface method from class (IDEA-172325)
This commit is contained in:
@@ -826,6 +826,9 @@ public class HighlightMethodUtil {
|
||||
QUICK_FIX_FACTORY.createModifierListFix((PsiClass)resolve, PsiModifier.STATIC, true, false));
|
||||
}
|
||||
}
|
||||
else if (qualifierExpression instanceof PsiSuperExpression && ((PsiSuperExpression)qualifierExpression).getQualifier() == null) {
|
||||
QualifySuperArgumentFix.registerQuickFixAction((PsiSuperExpression)qualifierExpression, highlightInfo);
|
||||
}
|
||||
|
||||
QuickFixAction.registerQuickFixAction(highlightInfo, fixRange, QUICK_FIX_FACTORY.createCreateMethodFromUsageFix(methodCall));
|
||||
QuickFixAction.registerQuickFixAction(highlightInfo, fixRange, QUICK_FIX_FACTORY.createCreateAbstractMethodFromUsageFix(methodCall));
|
||||
|
||||
@@ -40,7 +40,7 @@ public class QualifySuperArgumentFix extends QualifyThisOrSuperArgumentFix {
|
||||
public static void registerQuickFixAction(@NotNull PsiSuperExpression expr, HighlightInfo highlightInfo) {
|
||||
LOG.assertTrue(expr.getQualifier() == null);
|
||||
final PsiClass containingClass = PsiTreeUtil.getParentOfType(expr, PsiClass.class);
|
||||
if (containingClass != null && containingClass.isInterface()) {
|
||||
if (containingClass != null) {
|
||||
final PsiMethodCallExpression callExpression = PsiTreeUtil.getParentOfType(expr, PsiMethodCallExpression.class);
|
||||
if (callExpression != null) {
|
||||
final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(callExpression.getProject());
|
||||
@@ -50,7 +50,8 @@ public class QualifySuperArgumentFix extends QualifyThisOrSuperArgumentFix {
|
||||
final PsiExpression superQualifierCopy = copy.getMethodExpression().getQualifierExpression();
|
||||
LOG.assertTrue(superQualifierCopy != null);
|
||||
superQualifierCopy.delete();
|
||||
if (((PsiMethodCallExpression)elementFactory.createExpressionFromText(copy.getText(), superClass)).resolveMethod() != null) {
|
||||
PsiMethod method = ((PsiMethodCallExpression)elementFactory.createExpressionFromText(copy.getText(), superClass)).resolveMethod();
|
||||
if (method != null && !method.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
QuickFixAction.registerQuickFixAction(highlightInfo, new QualifySuperArgumentFix(expr, superClass));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
// "Qualify super expression with 'Super'" "true"
|
||||
interface Super
|
||||
{
|
||||
default void method()
|
||||
{
|
||||
System.out.println("Super.method()");
|
||||
}
|
||||
}
|
||||
|
||||
class Sub implements Super {
|
||||
void foo() {
|
||||
Super.super.method();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// "Qualify super expression with 'Super'" "false"
|
||||
interface Super
|
||||
{
|
||||
void method();
|
||||
}
|
||||
|
||||
interface Sub extends Super {
|
||||
default void foo() {
|
||||
<caret>super.method();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// "Qualify super expression with 'Super'" "true"
|
||||
interface Super
|
||||
{
|
||||
default void method()
|
||||
{
|
||||
System.out.println("Super.method()");
|
||||
}
|
||||
}
|
||||
|
||||
class Sub implements Super {
|
||||
void foo() {
|
||||
super.me<caret>thod();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user