<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">On Oct 1, 2018, at 9:48 PM, Tagir Valeev <<a href="mailto:amaembo@gmail.com" class="">amaembo@gmail.com</a>> wrote:<br class=""><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I tried to think how to break this. Some interesting cases could arise</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">if nullable type patterns are allowed for instanceof (which could be</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">useful sometimes):</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote></div><br class=""><div class="">Yes, the trailing structure of the pattern gets tangled up with the</div><div class="">right-context of a typical expression.</div><div class=""><br class=""></div><div class="">One way to fix that is to make "x instanceof P" have a much lower</div><div class="">precedence than "x instanceof C", where C is a name and P is a</div><div class="">pattern which is not a name.</div><div class=""><br class=""></div><div class="">We don't have a precedent grammar, but we can demand that the</div><div class="">right-context of "x instanceof P" is comma, close paren, or the like.</div><div class="">Like this:</div><div class=""><br class=""></div><div class="">AssignmentExpression:<br class="">  ConditionalExpression</div><div class="">  PatternMatchExpression</div><div class="">  Assignment</div><div class=""><br class=""></div><div class="">Or this:</div><div class=""><br class=""></div><div class="">Expression:<br class="">  LambdaExpression <br class=""><div class="">  PatternMatchExpression</div>  AssignmentExpression</div><div class=""><br class=""></div><div class="">The practical effect of this will be to force people to put parentheses</div><div class="">around "x instanceof P" when there is ambiguity.<br class=""><br class=""></div><div class="">— John</div></body></html>