Relaxed assignment conversions for sealed types
Remi Forax
forax at univ-mlv.fr
Thu Nov 19 21:13:07 UTC 2020
We have avoided in the past to mix the class restriction and the type system.
By example, even if a class A is declared final, List<? extends A> is not equivalent to List<A>.
For me, you want to steer the type system to work more like a close world type system,
so it's not very consistent with the existing semantics and the fact that we have chosen to add the keyword 'sealed' instead of introducing a special construct to define a sum type.
regards,
Rémi
> De: "Brian Goetz" <brian.goetz at oracle.com>
> À: "Tagir Valeev" <amaembo at gmail.com>
> Cc: "amber-spec-experts" <amber-spec-experts at openjdk.java.net>
> Envoyé: Jeudi 19 Novembre 2020 21:47:59
> Objet: Re: Relaxed assignment conversions for sealed types
> Bump -- hoping for feedback on this thought:
>> BarImpl bi = (__static BarImpl) b;
>> Pulling on this string some more — I think there’s a connection between this
>> feature and total statement switches. We’ve been looking for a way to make
>> statement switches total, and here, what we’re looking for is a way to make
>> _casts_ total. Which suggests this is one feature, not two. So perhaps:
>> switch-total (x) { … } // a switch, but with added bonus totality checking
>> BarImpl b = (total BarImpl) bar // a cast, but with added bonus totality
>> checking
>> Obviously we can use another word besides `total`, but it’s a pretty good straw
>> man.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20201119/31516ccf/attachment.htm>
More information about the amber-spec-experts
mailing list