On May 16, 2019, at 1:34 PM, Maurizio Cimadamore <maurizio.cimadam...@oracle.com> wrote: > > On the other hand is a trivial one to resolve, given what we're discussing > now is something like > > "yields" EXPRESSION > > so, as soon as the compiler sees a "(" it will say: "ok, that's not a new > yield statement".
The tricky bit with that is the user experience. What if the user needs a parenthesized expression: yield ("answer is "+x).trim(); There are some sharp edges here. Oh, look, it's a workaround bikeshed: yield false? 0: ("answer is "+x).trim(); yield (String)("answer is "+x); yield new String[]{ "answer is "+x }[0]; yield Arrays.asList("answer is "+x).get(0); yield Objects.id("answer is "+x); And my own little favorite, a bespoke use of arrow: yield -> ("answer is "+x); Maybe then also: `yield -> { block of stuff to do before I go; YepDone: yield s; };` — John