<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 Sep 30, 2019, at 9:05 AM, Maurizio Cimadamore <<a href="mailto:maurizio.cimadamore@oracle.com" class="">maurizio.cimadamore@oracle.com</a>> wrote:<br class=""><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><p style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; 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; background-color: rgb(255, 255, 255); text-decoration: none;" class="">```<br class="">Add<span class="Apple-converted-space"> </span><em class="">text blocks</em><span class="Apple-converted-space"> </span>to the Java language. A text block is a multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired. This is a<span class="Apple-converted-space"> </span><a href="https://openjdk.java.net/jeps/12" class="">preview language feature</a><span class="Apple-converted-space"> </span>in JDK 13.<br class="">```</p><p style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; 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; background-color: rgb(255, 255, 255); text-decoration: none;" class="">Now, I get the subtle distinction between multi-line in the source and multi-line in the result value - but it's subtle, and I think the JEP should at least be made clearer in that respect.</p></div></blockquote></div><div>I like this suggestion.  Looking closely at the phrase "<span style="background-color: rgb(255, 255, 255);" class="">multi-line string literal”, I think it is</span></div><div><span style="background-color: rgb(255, 255, 255);" class="">ambiguous to parse.  So, “(multi-line string) literal” would be “a literal for a string with newlines in it”,</span></div><div><span style="background-color: rgb(255, 255, 255);" class="">which we have today.  And “multi-line (string literal)” would be “a string literal whose syntax contains</span></div><div><span style="background-color: rgb(255, 255, 255);" class="">line breaks”.  The latter is the new thing.  The JEP should probably explain the difference between</span></div><div><span style="background-color: rgb(255, 255, 255);" class="">the former and the latter, one way or another, and either use less ambiguous language or disambiguate</span></div><div><span style="background-color: rgb(255, 255, 255);" class="">some other way (via an explanation).</span></div><div><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div>The benefit of an updated *string literal* that has *line breaks* is that the source form of the</div><div>string can be arranged for better readability.  It’s not like we can express new sequences of</div><div>characters; it’s about prettier literals.</div><div><br class=""></div><div>And that, in turn, amply motivates the latest proposals (IMO), since supporting \s and \<LT></div><div>gives users some very useful control over the esthetics of their literals.  The rules for stripping</div><div>leading blanks are very good for controlling the horizontal position of a literal’s contents, but</div><div>they don’t help (and sometimes hurt) working with very long lines.  For that, you need a</div><div>directive to paste two source lines together in one payload line, just as \n splits one source</div><div>line into two payload lines.</div><div><br class=""></div><div>In the end, most source newlines will (and should) correspond to payload newlines, but there</div><div>will always be cases where one source line should be broken (with \n) into two payload lines</div><div>and vice versa (with \<LT>).  These two cases are roughly symmetrical with each other.</div><div><br class=""></div><div>— John</div></body></html>