@@ -36,21 +36,28 @@ class OverwriteModifiersInspection : OverwriteInspection() {
3636 val nameIdentifier = method.nameIdentifier ? : return
3737 val modifierList = method.modifierList
3838
39+ // Check access modifiers
40+ val targetAccessLevel = PsiUtil .getAccessLevel(target)
41+ val currentAccessLevel = PsiUtil .getAccessLevel(modifierList)
42+ if (currentAccessLevel < targetAccessLevel) {
43+ val targetModifier = PsiUtil .getAccessModifier(targetAccessLevel)
44+ val currentModifier = PsiUtil .getAccessModifier(currentAccessLevel)
45+ holder.registerProblem(modifierList.findKeyword(currentModifier) ? : nameIdentifier,
46+ " $currentModifier @Overwrite cannot reduce visibility of ${PsiUtil .getAccessModifier(targetAccessLevel)} target method" ,
47+ QuickFixFactory .getInstance().createModifierListFix(modifierList, targetModifier, true , false ))
48+ }
49+
3950 for (modifier in PsiModifier .MODIFIERS ) {
51+ if (isAccessModifier(modifier)) {
52+ // Access modifiers are already checked above
53+ continue
54+ }
55+
4056 val targetModifier = target.hasModifierProperty(modifier)
4157 val overwriteModifier = modifierList.hasModifierProperty(modifier)
4258 if (targetModifier != overwriteModifier) {
4359 val marker: PsiElement
44- val message = if (isAccessModifier(modifier)) {
45- if (! targetModifier) {
46- // Don't attempt to remove access modifiers
47- continue
48- }
49-
50- val currentModifier = PsiUtil .getAccessModifier(PsiUtil .getAccessLevel(modifierList))
51- marker = modifierList.findKeyword(currentModifier) ? : nameIdentifier
52- " Invalid access modifiers, has: $currentModifier , but target has: $overwriteModifier "
53- } else if (targetModifier) {
60+ val message = if (targetModifier) {
5461 marker = nameIdentifier
5562 " Method must be '$modifier '"
5663 } else {
0 commit comments