java sealed types: ensure sealed class inheritors are sealed/non-sealed/final (IDEA-243536)

GitOrigin-RevId: 768635cd8a1b237893429ac1882296de8477536d
This commit is contained in:
Anna Kozlova
2020-06-16 00:04:16 +03:00
committed by intellij-monorepo-bot
parent 7c64f7f035
commit 1b944210ef
4 changed files with 19 additions and 2 deletions
@@ -3,7 +3,7 @@ sealed class A permits B {}
sealed class B extends A permits C, D {}
final class C extends B {}
non-sealed class D extends B {}
class E extends A {}
class <error descr="sealed, non-sealed or final modifiers expected">E</error> extends A {}
<error descr="Illegal combination of modifiers: 'sealed' and 'sealed'">sealed</error> <error descr="Illegal combination of modifiers: 'sealed' and 'sealed'">sealed</error> class SealedSealed {}
<error descr="Illegal combination of modifiers: 'sealed' and 'non-sealed'">sealed</error> <error descr="Illegal combination of modifiers: 'non-sealed' and 'sealed'">non-sealed</error> class SealedNonSealed {}
<error descr="Illegal combination of modifiers: 'sealed' and 'final'">sealed</error> <error descr="Illegal combination of modifiers: 'final' and 'sealed'">final</error> class SealedFinal {}
@@ -12,7 +12,7 @@ class E extends A {}
sealed interface IA permits IB, IC {}
final class IB implements IA {}
sealed interface IC extends IA {}
class ICSameFile implements IC {}
class <error descr="sealed, non-sealed or final modifiers expected">ICSameFile</error> implements IC {}
sealed interface ID0 {}
non-sealed interface ID1 extends ID0 {}