mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java sealed types: forbid non-sealed classes without sealed supers (IDEA-243536)
GitOrigin-RevId: ce7b48fc5df80edf0a4efc987a23850aff993f6c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2dcab690d5
commit
7c64f7f035
+5
@@ -988,6 +988,11 @@ public class HighlightUtil {
|
||||
isAllowed &= !privateOrProtected;
|
||||
}
|
||||
}
|
||||
if (PsiModifier.NON_SEALED.equals(modifier) && !aClass.hasModifierProperty(PsiModifier.SEALED)) {
|
||||
isAllowed = Arrays.stream(aClass.getSuperTypes())
|
||||
.map(PsiClassType::resolve)
|
||||
.anyMatch(superClass -> superClass != null && superClass.hasModifierProperty(PsiModifier.SEALED));
|
||||
}
|
||||
}
|
||||
else if (modifierOwner instanceof PsiMethod) {
|
||||
PsiMethod method = (PsiMethod)modifierOwner;
|
||||
|
||||
+4
@@ -13,3 +13,7 @@ sealed interface IA permits IB, IC {}
|
||||
final class IB implements IA {}
|
||||
sealed interface IC extends IA {}
|
||||
class ICSameFile implements IC {}
|
||||
|
||||
sealed interface ID0 {}
|
||||
non-sealed interface ID1 extends ID0 {}
|
||||
<error descr="Modifier 'non-sealed' not allowed here">non-sealed</error> interface ID extends ID1 {}
|
||||
|
||||
Reference in New Issue
Block a user