java sealed types: permits list highlighting (IDEA-243471)

GitOrigin-RevId: ca4b23403d6926d1c093eb0e2774020a98d83773
This commit is contained in:
Anna Kozlova
2020-06-16 17:13:12 +03:00
committed by intellij-monorepo-bot
parent a4146e3008
commit f1d7de98ed
5 changed files with 146 additions and 16 deletions
@@ -0,0 +1,20 @@
package p;
interface I0 <error descr="Invalid permits clause: 'I0' must be sealed">permits</error> I {}
sealed interface I extends I0 permits <error descr="Cannot resolve symbol 'Unresolved'">Unresolved</error>, <error descr="Duplicate class: 'p.I1'">I1</error>, <error descr="Duplicate class: 'p.I1'">I1</error>{}
non-sealed interface I1 extends I {}
sealed interface <error descr="Sealed class must have subclasses">A</error> {}
class Usage {
{
class Local implements <error descr="Local classes must not extend sealed classes">A</error> {}
A a = new <error descr="Anonymous classes must not extend sealed classes">A</error>() {};
}
}
sealed interface Indirect permits <error descr="Invalid permits clause: 'IndirectInheritor' must directly implement 'Indirect'">IndirectInheritor</error>, MiddleMan {}
non-sealed interface MiddleMan extends Indirect {}
final class IndirectInheritor implements MiddleMan {}
sealed class AnotherPackage permits <error descr="Class is not allowed to extend sealed class from another package">p1.P1</error> {}