Opting into totality

Brian Goetz brian.goetz at oracle.com
Wed Aug 26 13:42:22 UTC 2020

Note that this:

On 8/25/2020 7:53 PM, Brian Goetz wrote:
> 	`default <deconstruction pattern>` means the same thing as `case <deconstruction pattern>`
> 		but it is a static error if the <deconstruction pattern> is not_weakly_  total on the type of the selector

when combined with

> I’ll add that in the last case, it is as if there is an implicit `case null: throw`.

comports nicely with the planned semantics for pattern assignment:

     P = e

requires that P be (weakly) total on the static type of e, and is 
permitted to NPE when e is null.  When P is a total type pattern or an 
any pattern, this degenerates to normal variable declaration + 
initialization.  So:

     Box<String> b = ...

     String s = b  // type error
     Box bb = b  // fine, total
     Box(Object o) bb = b  // fine, weakly total, throws NPE when b = null

I will consolidate all of this today into a new message.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20200826/8ea2f6f9/attachment.htm>

More information about the amber-spec-experts mailing list