In your other email I guess you are referring to anonymous classes implementing a sealed interface, right? E.g.

sealed interface Foo {
    void m();

    /* static final */ Foo f1 = new Foo() { ... }
    /* static final */ Foo f2 = () -> {};

}

Right.  We already restrict anon and lambda instances of the sealed type.  Not only can't we stably write down their types in the PS attribute, but even if we could, it's so easy to accidentally lose exhaustiveness.

(*) there's also a technical reason as to why inferring permitted types based on things inside field initializers and method bodies is not sound: again it has to do with annotation processing. Presumably you want all your inference completed before annotation processors are run. But, by design, annotation processor only requires declarations to be processed, not entire method bodies. So it would not be possible, under the current regime at least, to gather up all permitted types inside all method bodies _before_ annotation processing.

Yep.

Reply via email to