<html><head><style>
body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        padding:1em;
        margin:auto;
        background:#fefefe;
}
h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
}
h1 {
        color: #000000;
        font-size: 28pt;
}
h2 {
        border-bottom: 1px solid #CCCCCC;
        color: #000000;
        font-size: 24px;
}
h3 {
        font-size: 18px;
}
h4 {
        font-size: 16px;
}
h5 {
        font-size: 14px;
}
h6 {
        color: #777777;
        background-color: inherit;
        font-size: 14px;
}
hr {
        height: 0.2em;
        border: 0;
        color: #CCCCCC;
        background-color: #CCCCCC;
display: inherit;
}
p, blockquote, ul, ol, dl, li, table, pre {
        margin: 15px 0;
}
a, a:visited {
        color: #4183C4;
        background-color: inherit;
        text-decoration: none;
}
#message {
        border-radius: 6px;
        border: 1px solid #ccc;
        display:block;
        width:100%;
        height:60px;
        margin:6px 0px;
}
button, #ws {
        font-size: 12 pt;
        padding: 4px 6px;
        border-radius: 5px;
        border: 1px solid #bbb;
        background-color: #eee;
}
code, pre, #ws, #message {
        font-family: Monaco;
        font-size: 10pt;
        border-radius: 3px;
        background-color: #F8F8F8;
        color: inherit;
}
code {
        border: 1px solid #EAEAEA;
        margin: 0 2px;
        padding: 0 5px;
}
pre {
        border: 1px solid #CCCCCC;
        overflow: auto;
        padding: 4px 8px;
}
pre > code {
        border: 0;
        margin: 0;
        padding: 0;
}
#ws { background-color: #f8f8f8; }
.bloop_markdown table {
border-collapse: collapse;
font-family: Helvetica, arial, freesans, clean, sans-serif;
color: rgb(51, 51, 51);
font-size: 15px; line-height: 25px;
padding: 0; }
.bloop_markdown table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
.bloop_markdown table tr:nth-child(2n) {
background-color: #f8f8f8; }
.bloop_markdown table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
.bloop_markdown table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
.bloop_markdown table tr th :first-child, table tr td :first-child {
margin-top: 0; }
.bloop_markdown table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }
.bloop_markdown blockquote{
border-left: 4px solid #dddddd;
padding: 0 15px;
color: #777777; }
blockquote > :first-child {
margin-top: 0; }
blockquote > :last-child {
margin-bottom: 0; }
code, pre, #ws, #message {
word-break: normal;
word-wrap: normal;
}
hr {
display: inherit;
}
.bloop_markdown :first-child {
-webkit-margin-before: 0;
}
code, pre, #ws, #message {
font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
}
.send { color:#77bb77; }
.server { color:#7799bb; }
.error { color:#AA0000; }</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="bloop_markdown"><p>Btw. shouldn’t we let the core return the current proposal officially for revision, or otherwise it will need to stay ‘long enough’ in it’s revisioned pitch state before we can kick off a second review process!</p>
<p>Just saying. </p>
<p></p></div><div class="bloop_original_html"><style>body{font-family:Helvetica,Arial;font-size:13px}</style><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <br> <div id="bloop_sign_1492100691700412160" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">-- <br>Adrian Zubarev<br>Sent with Airmail</div></div> <br><p class="airmail_on">Am 13. April 2017 um 18:21:29, Adrian Zubarev (<a href="mailto:adrian.zubarev@devandartist.com">adrian.zubarev@devandartist.com</a>) schrieb:</p> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div></div><div>
<title></title>
<div class="bloop_markdown">
<p>I’ve update my gist to reflect that now: <a href="https://gist.github.com/DevAndArtist/dae76d4e3d4e49b1fab22ef7e86a87a9">
https://gist.github.com/DevAndArtist/dae76d4e3d4e49b1fab22ef7e86a87a9</a></p>
<hr>
<h3 id="simplemulti-linestringliteralmodel">Simple ‘multi-line
string literal’ model</h3>
<h4 id="corefeatures:">Core features:</h4>
<ol>
<li>Omitting of (most) backslashes for <code>"</code>.</li>
<li>Altering the string with implicit new line injection at the end
of the line.</li>
<li>Sting interpolation (trivial in terms of consistency and
functionality).</li>
</ol>
<h4 id="consequencesof1:">Consequences of #1:</h4>
<ul>
<li>
<p>To omit escaping the quote character, the delimiter characters
for the <strong>multi-line string literal</strong> will be
<em>tripled quotes</em> <code>"""</code>, also similar to other
programming languages.</p>
</li>
<li>
<p>When a standard string literal contains at least 5 quotes, then
the usage of a <strong>multi-line string literal</strong> can be
shorter.</p>
</li>
</ul>
<pre><code class="swift">"<a href=\"\(url)\" id=\"link\(i)\" class=\"link\">" // With escapes
"""<a href="\(url)" id="link\(i)" class="link">""" // With tripled literals
</code></pre>
<h4 id="consequencesof2:">Consequences of #2:</h4>
<ul>
<li>
<p>To fully support this feature, we need to compromise the design
for simplicity and intuitivity.</p>
<ul>
<li>
<p>This feature needs precision for leading and trailing
whitespaces.</p>
</li>
<li>
<p>Alternatively one would need a way to disable new line injection
to also support code formatting.</p>
</li>
</ul>
</li>
</ul>
<h4 id="twowaysofwritingamulti-linestringliteral:">Two ways of
writing a multi-line string literal:</h4>
<ul>
<li>
<p>Single line version <code>"""abc"""</code> is trivial and
already was shown above.</p>
</li>
<li>
<p>The multi-line version comes with a few compromises for
simplicity of rules:</p>
</li>
</ul>
<pre><code class="swift">""" // DS (delimiter start)
foo // s0
foo // s1
foo // s2
""" // DE (delimiter end)
</code></pre>
<ul>
<li>The string content is always written between the lines
<code>DS</code> and <code>DE</code> (delimiter lines).</li>
</ul>
<p>That means that the following snippets are not allowed:</p>
<pre><code class="swift">// Banned option 1:
"""foo
foo
"""
// Banned option 2:
"""foo
foo"""
// Banned option 3:
"""
foo
foo"""
</code></pre>
<ul>
<li>
<p>To not to go the <strong>continuation quotes</strong> path, the
left (or leading) precision is handled by the <em>closing
delimiter</em> (<strong>1. compromise</strong>). The closing
delimiter is also responsible for the indent algorithm, which will
calculate the stripping prefix in line <code>DE</code> and apply
stripping to lines <code>s0</code> to <code>sn</code>.</p>
</li>
<li>
<p>Right (or trailing) precision of each line from <code>s0</code>
to <code>sn</code> (notice n equals 2 in the example above) is
handled by a backslash character (<strong>2.
compromise</strong>).</p>
</li>
<li>
<p>The right precision comes at a price of losing the implicit new
line injection, however this was also a requested feature
(<strong>3. compromise</strong>). That means that the backslash can
serve two jobs simultaneously.</p>
</li>
<li>
<p>New line injection happens only on lines <code>s0</code> to
<code>s(n - 1)</code> (<strong>4. and last compromise</strong> of
the design). The last line <code>sn</code> (or <code>s2</code>
above) does not inject a new line into the final string. This
implies that in this line a backslash character handles only right
precision, or one could say it’s reduced for one functionality.</p>
</li>
</ul>
<p>The following <strong>multi-line string literal</strong></p>
<pre><code class="swift">print("""
foo
foo
""")
</code></pre>
<p>will produce the string “foo\nfoo” and only print:</p>
<pre><code class="swift">foo
foo
</code></pre>
<hr>
<h4 id="important:">Important:</h4>
<p>Because whitespace is important to these examples, it is
explicitly indicated: <code>·</code> is a space, <code>⇥</code> is
a tab, and <code>↵</code> is a newline.</p>
<h4 id="leadingtrailingprecisionandindent1.and2.compromise:">
Leading/trailing precision and indent (1. and 2. compromise):</h4>
<pre><code class="swift">// Nothing to strip in this example (no indent).
let str_1 = """↵
foo↵
"""
// No right precision (no backslash), but presence of whitespace
// characters will emit a warning.
let str_2 = """↵
foo··↵
"""
</code></pre>
<p>Warning:</p>
<pre><code>warning: line # includes trailing whitespace characters in multi-line string literal without the precision `\` character at the end
foo··↵
~~
Fix-it: Insert "\n\" after the last space character (or only `\` if it's the `sn` line)
</code></pre>
<p>More examples:</p>
<pre><code class="swift">// Simmilar to `str_2`
let str_3 = """↵
foo····↵
"""
// Line `DE` of the closing delimiter calculates the indent prefix
// `··` and strips it from `s0` (left precision).
let str_4 = """↵
··foo↵
··"""
// Line `DE` of the closing delimiter calculates the indent prefix
// `····` and strips it from `s0` (left precision).
//
// No right precision (no backslash), but presence of whitespace
// characters will emit a warning.
let str_5 = """↵
····foo··↵
····"""
// Line `DE` of the closing delimiter calculates the indent prefix
// `⇥ ⇥ ` and strips it from `s0` (left precision).
//
// Right precision is applied (backslash). In this case the literal
// contains only a single line of content, which happens to be
// also the last line before `DE` -> backslash only serves precision.
let str_6 = """↵
⇥ ⇥ foo\↵
⇥ ⇥ """
// Line `DE` of the closing delimiter calculates the indent prefix
// `·⇥ ·⇥ ` and strips it from `s0` (left precision).
//
// No right precision (no backslash), but presence of whitespace
// characters will emit a warning.
let str_7 = """↵
·⇥ ·⇥ foo··↵
·⇥ ·⇥ """
let string_1 = "foo"
str_1 == string_1 // => true
str_2 == string_1 // => false
str_3 == string_1 // => false
str_4 == string_1 // => true
str_5 == string_1 // => false
str_6 == string_1 // => true
str_7 == string_1 // => false
</code></pre>
<p>A wrong multi-line string literal, which compiles but emits a
warning with a <code>fix-it</code>:</p>
<pre><code class="swift">let str_8 = """↵
··foo↵
····"""
str_8 == string_1 // => true
</code></pre>
<p>Warning:</p>
<pre><code>warning: missing indentation in multi-line string literal
··foo
^
Fix-it: Insert "··"
</code></pre>
<ul>
<li>
<p>The stripping algorithm calculates the prefix indent from the
closing delimiter line <code>DE</code> and tries to strip it in
lines <code>s0</code> to <code>sn</code> if possible, otherwise
each line, which could not be handled correctly will emit an
individual warning and a <code>fix-it</code>.</p>
</li>
<li>
<p>To align precision of a <strong>multi-line string
literal</strong> with the standard string literal, we have to check
every content line for trailing whitespace characters. If we found
any, but there is no <code>\</code> at the end, a warning will be
emitted and a <code>fix-it</code> will be provided to add
<code>\n\</code> after the last whitespace character for explicit
precision, or a <code>\</code> if the warning happens in the last
content line <code>sn</code>. This automatically forces the
developer to either remove any unwanted trailing whitespace
characters or be explicit about the trailing precision.</p>
</li>
</ul>
<p>An example which will raise such a warning:</p>
<pre><code class="swift">"""↵
foo··↵
"""
</code></pre>
<p>To fix the issue there are two options:</p>
<ul>
<li>Use the <code>fix-it</code>: </li>
</ul>
<pre><code class="swift">"""↵
foo··\↵
"""
</code></pre>
<ul>
<li>Remove the whitespace characters manually: </li>
</ul>
<pre><code class="swift">"""↵
foo↵
"""
</code></pre>
<h4 id="disablingnewlineinjection3.compromise:">Disabling new line
injection (3. compromise):</h4>
<p>The examples we’ve used so far had only a single content line,
so we couldn’t showcase this behavior yet. New lines are only
injected into a multi-line string if it has at least two content
lines.</p>
<pre><code class="swift">let str_9 = """↵
····foo↵
····bar↵
····"""
let str_10 = """↵
····foo↵
····bar↵
····baz↵
····"""
let string_2 = "foo\nbar"
let string_3 = "foo\nbar\nbaz"
str_9 == string_2 // => true
str_10 == string_3 // => true
</code></pre>
<p>To disable new line injection one would need to use the
backslash for right precision.</p>
<pre><code class="swift">let str_11 = """↵
····foo\↵
····bar↵
····"""
let str_12 = """↵
····foo\↵
····bar\↵
····baz↵
····"""
str_11 == string_2 // => false
str_12 == string_3 // => false
str_11 == "foorbar" // => true
str_12 == "foobarbaz" // => true
</code></pre>
<p>Remember that the last content line <code>sn</code> does not
automatically inject a new line into the final string!</p>
<h4 id="newlineinjectionexceptforthelastline4.compromise:">New line
injection except for the last line (4. compromise):</h4>
<p>The standard string literal like <code>"foo"</code> only
contains its string content from the starting delimiter to the
closing delimiter. The discussion on the mailing list suggests that
the <strong>multi-line string literal</strong> should also go that
route and not inject a new line for the last content line
<code>sn</code>. <code>str_9</code> is a good example for that
behavior.</p>
<p>Now if one would want a new line at the end of the string, there
are a few options to achieve this:</p>
<pre><code class="swift">// Natural way:
let str_13 = """↵
····foo↵
····bar↵
····↵
····"""
// Remember the last content line does not inject a `\n` character by default
// so there is no need for `\n\` here (but it's possible as well)!
let str_14 = """↵
····foo↵
····bar\n↵
····"""
let string_4 = "foo\nbar\n"
str_13 == string_4 // => true
str_14 == string_4 // => true
</code></pre>
<p>At first glance the behavior in <code>str_13</code> seems odd
and inconsistent, however it actually mimics perfectly the natural
way of writing text paragraphs and is consistent to the standard
string literal, which represents only its content between the
delimiters.</p>
<pre><code>[here is a blank line]↵
text text text text text↵
text text text text text↵
[here is a blank line]
</code></pre>
<p>This is easily expressed with the literal model explained
above:</p>
<pre><code class="swift">let myParagraph = """↵
····↵
····text text text text text↵
····text text text text text↵
····↵
····"""
</code></pre></div>
<div class="bloop_original_html">
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
<br></div>
<br>
<div id="bloop_sign_1492100296308311040" class="bloop_sign">
<div style="font-family:helvetica,arial;font-size:13px">
-- <br>
Adrian Zubarev<br>
Sent with Airmail</div>
</div>
<br>
<p class="airmail_on">Am 13. April 2017 um 16:39:05, Ricardo Parada
(<a href="mailto:rparada@mac.com">rparada@mac.com</a>) schrieb:</p>
<blockquote type="cite" class="clean_bq">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div><span>That would be good, I think because it would force
everyone to be precise in regards to trailing whitespace. And
I don't see that as a bad thing.</span>
<div class=""><span><br class=""></span></div>
<div class="">
<div class=""><span><br class=""></span>
<div>
<blockquote type="cite" class="">
<div class=""><span>On Apr 13, 2017, at 9:54 AM, Adrian Zubarev via
swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</span></div>
<span><br class="Apple-interchange-newline"></span>
<div class="">
<div class="bloop_markdown" style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);">
<p style="margin: 15px 0px; -webkit-margin-before: 0px;" class="">
<span>I was really confused by your last reply. Actually I’ve got a
better idea for a fix-it. :-)</span></p>
<pre style="margin: 15px 0px; font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(204, 204, 204); overflow: auto; padding: 4px 8px; word-break: normal; word-wrap: normal;" class=""><span><code class="swift" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 0px; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">let str_8 = """↵
····foo··········↵
····"""
</code></span></pre>
<pre style="margin: 15px 0px; font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(204, 204, 204); overflow: auto; padding: 4px 8px; word-break: normal; word-wrap: normal;" class=""><span><code style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 0px; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;" class="">warning: line # includes trailing space characters in multi-line string literal
····foo··········
~~~~~~~~~~
Fix-it: Insert "\n\" (after these space characters)
</code></span></pre>
<p style="margin: 15px 0px;" class=""><span>The fix-it will
inset<span class="Apple-converted-space"> </span><code style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;" class="">\n\</code><span class="Apple-converted-space"> </span>after all your space
characters, so the developer is kinda forced to strip them manually
to<span class="Apple-converted-space"> </span><code style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;" class="">····foo</code><span class="Apple-converted-space"> </span>or let the IDE add<span class="Apple-converted-space"> </span><code style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;" class="">\n\</code><span class="Apple-converted-space"> </span>if he really needs that
precision.</span></p>
<p style="margin: 15px 0px;" class="">That would work. :)</p>
<div style="margin: 15px 0px;" class=""><br class="webkit-block-placeholder"></div>
</div>
<div class="bloop_original_html" style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);">
<div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; margin: 0px;" class=""><br class=""></div>
<br class="">
<div id="bloop_sign_1492091277767287040" class="bloop_sign">
<div style="font-family: helvetica, arial; font-size: 13px;" class="">-- <br class="">
Adrian Zubarev<br class="">
Sent with Airmail</div>
</div>
<br class="">
<p class="airmail_on" style="margin: 15px 0px;">Am 13. April 2017
um 15:46:52, John Holdsworth (<a href="mailto:mac@johnholdsworth.com" style="color: rgb(65, 131, 196); background-color: inherit; text-decoration: none;" class="">mac@johnholdsworth.com</a>) schrieb:</p>
<blockquote type="cite" class="clean_bq" style="margin: 15px 0px;">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class=""></div>
<div class="">
<pre class="" style="margin: 15px 0px; font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(204, 204, 204); overflow: auto; padding: 4px 8px; word-break: normal; word-wrap: normal;"><span style="margin-top: 0px; margin-bottom: 0px;" class=""><code class="swift" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 0px; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">\n\</code></span></pre>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class="">would work</span></div>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></span></div>
<div class="">
<blockquote type="cite" class="" style="margin: 15px 0px;">
<div class="" style="margin-top: 0px;"><span style="margin-top: 0px; margin-bottom: 0px;" class="">On 13 Apr 2017, at
14:44, John Holdsworth <<a href="mailto:mac@johnholdsworth.com" class="" style="color: rgb(65, 131, 196); background-color: inherit; text-decoration: none;">mac@johnholdsworth.com</a>>
wrote:</span></div>
<span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class="Apple-interchange-newline"></span>
<div class="" style="margin-bottom: 0px;">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></span></div>
<span style="margin-top: 0px; margin-bottom: 0px;" class="">I’ve
never understood how you mean "explicit backslash". backslash has
specific roles</span>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class="">and at the moment it is assigned to meaning standard
escapes or "don’t include this next</span></div>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class="">newline in the literal". I can’t see how it could be
reassigned to mean “include whitespace”</span></div>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class="">without loosing the option to concatenate
lines.</span></div>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></span></div>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class="">fix-its are beyond my pay grade so that’ll have to wait
until Apple looks at the implementation!</span></div>
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></span></div>
<div class="">
<div class=""><span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></span>
<div class="">
<blockquote type="cite" class="" style="margin: 15px 0px;">
<div class="" style="margin-top: 0px;"><span style="margin-top: 0px; margin-bottom: 0px;" class="">On 13 Apr 2017, at
14:32, Adrian Zubarev <<a href="mailto:adrian.zubarev@devandartist.com" class="" style="color: rgb(65, 131, 196); background-color: inherit; text-decoration: none;">adrian.zubarev@devandartist.com</a>>
wrote:</span></div>
<span style="margin-top: 0px; margin-bottom: 0px;" class=""><br class="Apple-interchange-newline"></span>
<div class="" style="margin-bottom: 0px;">
<p class="" style="margin: 15px 0px; font-family: Helvetica, Arial; font-size: 13px; 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;">
<span style="margin-top: 0px; margin-bottom: 0px;" class="">A
warning that will popup when you included any trailing spaces in a
‘content line’ without the explicit backslash could also provide
a<span class="Apple-converted-space"> </span><code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">fix-it</code><span class="Apple-converted-space"> </span>to
the user to remove these spaces. However if you can emit that
warning and calculate the spaces to remove, than the compiler
should be able to swallow these characters by default
right?</span></p>
<br class="Apple-interchange-newline"></div>
</blockquote>
</div>
<br class=""></div>
</div>
</div>
</div>
</blockquote>
</div>
<br class=""></div>
</div>
</blockquote>
</div>
<div class="bloop_markdown" style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);">
<div style="margin: 15px 0px; -webkit-margin-before: 0px;" class=""><br class="webkit-block-placeholder"></div>
</div>
<span style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254); float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);" class="">
<span style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254); float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);" class="">
<a href="mailto:swift-evolution@swift.org" style="color: rgb(65, 131, 196); background-color: rgb(254, 254, 254); text-decoration: none; font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);" class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="color: rgb(65, 131, 196); background-color: rgb(254, 254, 254); text-decoration: none; font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br style="font-family: Helvetica, Arial; font-size: 13px; 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(254, 254, 254);" class=""></div>
</blockquote>
</div>
<br class=""></div>
</div>
</div>
</div>
</blockquote>
</div>
<div class="bloop_markdown"></div>
</div></div></span></blockquote></div><div class="bloop_markdown"><p></p></div></body></html>