mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 22:09:38 +07:00
IDEA-188880 Make interface method 'default' fix: suppress for methods overriding Object methods
This commit is contained in:
@@ -40,6 +40,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class HighlightMethodUtil {
|
||||
private static final QuickFixFactory QUICK_FIX_FACTORY = QuickFixFactory.getInstance();
|
||||
@@ -1282,7 +1283,10 @@ public class HighlightMethodUtil {
|
||||
if (!isExtension && !isStatic && !isPrivate) {
|
||||
description = JavaErrorMessages.message("interface.methods.cannot.have.body");
|
||||
if (languageLevel.isAtLeast(LanguageLevel.JDK_1_8)) {
|
||||
additionalFixes.add(QUICK_FIX_FACTORY.createModifierListFix(method, PsiModifier.DEFAULT, true, false));
|
||||
if (Stream.of(method.findDeepestSuperMethods()).map(PsiMethod::getContainingClass)
|
||||
.filter(Objects::nonNull).map(PsiClass::getQualifiedName).noneMatch(CommonClassNames.JAVA_LANG_OBJECT::equals)) {
|
||||
additionalFixes.add(QUICK_FIX_FACTORY.createModifierListFix(method, PsiModifier.DEFAULT, true, false));
|
||||
}
|
||||
additionalFixes.add(QUICK_FIX_FACTORY.createModifierListFix(method, PsiModifier.STATIC, true, false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// "Make 'toString' default" "false"
|
||||
interface I {
|
||||
String toS<caret>tring() {return "foo";}
|
||||
}
|
||||
Reference in New Issue
Block a user