<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">You know, if s2 is short (say, less than 30 or 40 characters), there are worse things than writing</div><div class=""><br class=""></div><div class=""><font face="Courier" class="">         case A -> s1;</font></div><div class=""><font face="Courier" class="">         case null -> s2;</font></div><div class=""><span style="font-family: Courier;" class="">         default   -> s2;</span></div><div class=""><br class=""></div><div class="">especially if you use spaces (as I just did) to line up the two occurrences of s2 to make it easy to see they are identical.</div><div class=""><br class=""></div><div class="">And if s2 is long, there are worse things than making a little sub method to handle it:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier" class="">         case A -> s1;</font></div><div class=""><font face="Courier" class="">         case null -> frobboz(a, b);</font></div><div class=""><font face="Courier" class="">         default   -> frobboz(a, b);</font></div></div><div class=""><font face="Courier" class=""><br class=""></font></div><div class=""><font face="Courier" class="">    int frobboz(int a, String b) { … }</font></div><div class=""><br class=""></div><div class="">And if even THAT is not satisfactory, well, there are worse things than giving up on the arrows and just using colons (and break, if needed).</div><div class=""><br class=""></div><div class="">Yeah, null makes things uglier, but at least you have your choice of three different kinds of ugly.</div><div class="">_____________________________________________________________________________________________________</div><div class=""><br class=""></div><div class="">BUT, on the other hand, if we wanted to: instead of, or in addition to,</div><div class=""><br class=""></div><div class=""><font face="Courier" class="">        case pat1, pat2, pat3 -> s;</font></div><div class=""><br class=""></div><div class="">we could allow the form</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier" class="">        case pat1 -> case pat2 -> case pat3 -> s;</font></div></div><div class=""><br class=""></div><div class="">which of course could be stacked vertically for visual graciousness and perspicuity:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier" class="">        case pat1 -></font></div><div class=""><font face="Courier" class="">        case pat2 -></font></div><div class=""><font face="Courier" class="">        case pat3 -> s;</font></div></div><div class=""><br class=""></div><div class="">and such a format would clearly accommodate</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier" class="">        case A -> s1;</font></div></div><div class=""><font face="Courier" class="">        case null -></font></div><div class=""><font face="Courier" class="">        default -> s2;</font></div><div class=""><br class=""></div><div class="">Con: Could look like a programming error (unintentionally omitted statement), but that’s also true for the colon forms already permitted.</div><div class="">Con: More verbose than the comma-separated form `case pat1, pat2, pat3 ->`, which may matter for smallish switch expressions.</div>Pro: Doesn’t stick `default` in a weird place, or otherwise make a special rule just to handle “default and null”.<div class="">Pro: The keyword `case` appears in front of EVERY individual pattern, making them easier to see.</div><div class="">Pro: Avoids possible confusion between `case a,b,c ->` and `case (a,b,c) ->`.</div><div class=""><div class=""><div class=""><br class=""></div><div class="">Motto: “It’s not fallthrough, it’s just a SwitchBlockStatementGroup.”</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Apr 20, 2018, at 2:40 PM, Brian Goetz <<a href="mailto:brian.goetz@oracle.com" class="">brian.goetz@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
  
  <div text="#000000" bgcolor="#FFFFFF" class="">
    <tt class="">One thing that is relevant to the short term is that now that we
      killed mixed labels, we'd have to have a way to say "case null or
      default" in arrow world.  The least stupid thing seems to be to
      allow default to be tacked on to a comma-separated case list as if
      it were a pattern: <br class="">
      <br class="">
          case A -> s1;<br class="">
          case null, default -> s2;<br class="">
      <br class="">
      since you can no longer say:<br class="">
      <br class="">
          case A -> s1;<br class="">
          case null:<br class="">
          default:<br class="">
              s2;<br class=""></tt></div></div></blockquote></div><br class=""></div></div></div></body></html>