mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-387535 [java]: don't remove modifiers from members when removing final modifier from class
GitOrigin-RevId: 38b04d3e19bfcc6aa6f9a94dd3ca0138176a5138
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f829dcca8e
commit
873ef84318
@@ -206,37 +206,37 @@ public class ModifierFix extends PsiBasedModCommandAction<PsiModifierListOwner>
|
||||
modifierList = owner.getModifierList();
|
||||
}
|
||||
if (modifierList == null) return;
|
||||
if (myShouldHave && owner instanceof PsiMethod method) {
|
||||
if (PsiModifier.ABSTRACT.equals(myModifier)) {
|
||||
final PsiClass aClass = method.getContainingClass();
|
||||
if (aClass != null && !aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
PsiModifierList classModifierList = aClass.getModifierList();
|
||||
if (classModifierList != null) {
|
||||
changeModifierList(classModifierList);
|
||||
if (myShouldHave) {
|
||||
if (owner instanceof PsiMethod method) {
|
||||
if (PsiModifier.ABSTRACT.equals(myModifier)) {
|
||||
final PsiClass aClass = method.getContainingClass();
|
||||
if (aClass != null && !aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
PsiModifierList classModifierList = aClass.getModifierList();
|
||||
if (classModifierList != null) {
|
||||
changeModifierList(classModifierList);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (PsiModifier.PUBLIC.equals(myModifier) && method.getBody() != null && !method.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
PsiClass containingClass = method.getContainingClass();
|
||||
if (containingClass != null && containingClass.isInterface()) {
|
||||
modifierList.setModifierProperty(PsiModifier.DEFAULT, true);
|
||||
}
|
||||
}
|
||||
else if (PsiModifier.STATIC.equals(myModifier)) {
|
||||
if (method.hasModifierProperty(PsiModifier.DEFAULT)) {
|
||||
modifierList.setModifierProperty(PsiModifier.DEFAULT, false);
|
||||
}
|
||||
else if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
PsiUtil.setModifierProperty(method, PsiModifier.ABSTRACT, false);
|
||||
if (method.getBody() == null) CreateFromUsageUtils.setupMethodBody(method);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (PsiModifier.PUBLIC.equals(myModifier) &&
|
||||
method.getBody() != null &&
|
||||
!method.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
PsiClass containingClass = method.getContainingClass();
|
||||
if (containingClass != null && containingClass.isInterface()) {
|
||||
modifierList.setModifierProperty(PsiModifier.DEFAULT, true);
|
||||
}
|
||||
else if (PsiModifier.FINAL.equals(myModifier) && owner instanceof PsiClass aClass) {
|
||||
adjustVisibilityOfProtectedMembers(aClass);
|
||||
removeFinalModifierFromMethods(aClass);
|
||||
}
|
||||
else if (PsiModifier.STATIC.equals(myModifier)) {
|
||||
if (method.hasModifierProperty(PsiModifier.DEFAULT)) {
|
||||
modifierList.setModifierProperty(PsiModifier.DEFAULT, false);
|
||||
}
|
||||
else if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
PsiUtil.setModifierProperty(method, PsiModifier.ABSTRACT, false);
|
||||
if (method.getBody() == null) CreateFromUsageUtils.setupMethodBody(method);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (PsiModifier.FINAL.equals(myModifier) && owner instanceof PsiClass aClass) {
|
||||
adjustVisibilityOfProtectedMembers(aClass);
|
||||
removeFinalModifierFromMethods(aClass);
|
||||
}
|
||||
changeModifierList(modifierList);
|
||||
}
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// "Make 'Magnanimous' not final" "true-preview"
|
||||
class Magnanimous {
|
||||
|
||||
protected Magnanimous() {
|
||||
}
|
||||
|
||||
final void f() {}
|
||||
}
|
||||
class Steadfast extends Magnanimous {}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// "Make 'Magnanimous' not final" "true-preview"
|
||||
final class Magnanimous {
|
||||
|
||||
protected Magnanimous() {
|
||||
}
|
||||
|
||||
final void f() {}
|
||||
}
|
||||
class Steadfast extends Magnanimous<caret> {}
|
||||
Reference in New Issue
Block a user