[pattern-switch] Summary of open issues

Brian Goetz brian.goetz at oracle.com
Fri Aug 14 17:19:34 UTC 2020


Here's a summary of the issues raised in the reviews of the 
patterns-in-switch document.  I'm going to (try to) start a new thread 
for each of them; let's not reply to this one with new topics (or with 
discussion on these topics.)  I'll update this thread as we add or 
remove things from the list.

  - Is totality too subtle? (Remi) There is some concern that the notion 
of using totality to subsume nullability (at least in nested contexts) 
is sound, he is concerned that the difference between total and 
non-total patterns may be too subtle, and this may lead to NPE issues.  
To evaluate this, we need to evaluate both the "is totality too subtle" 
and the "how much are we worried about NPE in this context" directions.

  - Guards.  (John, Tagir) There is acknowledgement that some sort of 
"whoops, not this case" support is needed in order to maintain switch as 
a useful construct in the face of richer case labels, but some 
disagreement about whether an imperative statement (e.g., continue) or a 
declarative guard (e.g., `when <predicate>`) is the right choice.

  - Exhaustiveness and null. (Tagir)  For sealed domains (enums and 
sealed types), we kind of cheated with expression switches because we 
could count on the switch filtering out the null. But Tagir raises an 
excellent point, which is that we do not yet have a sound definition of 
exhaustiveness that scales to nested patterns (do Box(Rect) and 
Box(Circle) cover Box(Shape)?)  This is an interaction between sealed 
types and patterns that needs to be ironed out.  (Thanks Tagir!)

  - Switch and null. (Tagir, Kevin)  Should we reconsider trying to 
rehabilitate switches null-acceptance?  There are several who are 
questioning whether this is trying to push things too far for too little 
benefit.

  - Rehabilitating default.  The current design leaves default to rot; 
it is possible it has a better role to play with respect to the 
rehabilitation of switch, such as signalling that the switch is total.

  - Restrictions on instanceof.  It has been proposed that we restrict 
total patterns from instanceof to avoid confusion; while no one has 
really objected, a few people have expressed mild discomfort.  Leaving 
it on the list for now until we resolve some of the other nullity questions.

  - Meta. (Brian)  Nearly all of this is about null.  Is it possible 
that everything else about the proposal is so perfect that there's 
nothing else to talk about?  Seems unlikely.  I recommend we turn up the 
attenuation knob on nullity issues to leave some oxygen for some of the 
other flowers.


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


More information about the amber-spec-experts mailing list