Variants/case classes/algebraic data types/sums/oh my!

Brian Goetz brian.goetz at
Sun Jun 12 15:46:26 UTC 2016

> I think the bulk of it was being able to specify in class metadata that
> a class/interface is sealed (perhaps just ACC_SEALED) and that it has a
> given list of immediate child classes (we don't need to talk about the
> entire set of descendants of a class, as implementing matching seems
> to only require going one inheritance step deep at a time). This
> seems to be covered in a more general form in the nestmates proposal, so
> maybe I won't actually need to implement much!

The nestmate proposal doesn't (yet) discuss sealing in detail, but the 
concept is pretty simple: sealing is a generalization of finality which 
says "may only be extended by members of the same nest."  Since nests 
will probably map 1:1 to compilation units, this covers most ADT 
situations pretty cleanly.  Extending sealing to interfaces is an 
additional step, but works the same way -- we have to insert the word 
"direct" into the rule ("may only be *directly* implemented by members 
of the same nest".)  There are some more details to work out, of course, 
but this is just to say that nestmates enable sealing in a fairly 
straightforward way.

More information about the valhalla-dev mailing list