<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>Wow the former looks very odd to me. Sure, there are these edge cases across the language which are inconsistent. I myself have filed a bug to always add a trailing space after an operator in operator function for readability and to allow ligatures to render correctly in cases like <code>func == &lt;…</code> compared to <code>func ==&lt;…</code> (but the idea was to add always a space after the operator in functions, even for <code>func == (…</code>). This would add another inconsistency if we’re speaking precisely about function declarations, but I think it’s a valuable tradeoff, especially if you consider that operator functions have it’s own special rule when it comes to the function labels.</p>

<p>I must disagree about braces. To me everything which is multi-lined and inside braces *should* be indented even if the inner part is *part of* the outer statement itself, because that behavior is consistent across the whole language (if we’re not speaking about comment styles).</p>

<p>You can easily imagine a switch statement without braces with some kind of <code>end</code> or <code>endswitch</code> to indicate the end of the statement. Such a switch statement would clearly not need any indent for it’s cases, however I believe most of us felt odd learning Swift and realizing our switch cases are not indented. Don’t get me wrong here, I myself hardly learned to life with that behavior. ;) However sometimes, when I want to write small cases in one line the switch statement looks very odd with its closing brace. </p>

<pre><code class="swift">// without braces
switch ab

case .a:  
   print("a")
    
case .b:  
   print("b")
    
endswitch

// VS. our switch statement
// and aligned results (not necessarily needed)
switch ab {
case .a: print("a")
case .b: print("b")
}

// Without the alignment it doesn't feel that odd anymore
switch ab {
case .a:  
   print("a")
case .b:  
   print("b")
}

// But the aligned version cries for indent here
switch ab {
   case .a: print("a")
   case .b: print("b")
}
</code></pre>

<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_1489038711072866048" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">--&nbsp;<br>Adrian Zubarev<br>Sent with Airmail</div></div> <br><p class="airmail_on">Am 9. März 2017 um 06:25:21, Chris Lattner (<a href="mailto:clattner@nondot.org">clattner@nondot.org</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;" class=""><div></div><div>



<title></title>


<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Mar 8, 2017, at 12:35 AM, Adrian Zubarev
&lt;<a href="mailto:adrian.zubarev@devandartist.com" class="">adrian.zubarev@devandartist.com</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);">
<p style="margin: 15px 0px; -webkit-margin-before: 0px;" class="">
The latter slightly confused me for a second and I had to double
check. You’re saying that cases are not indented “because” they are
part of the switch statement, but observers like<span class="Apple-converted-space">&nbsp;</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="">willSet</code><span class="Apple-converted-space">&nbsp;</span>and<span class="Apple-converted-space">&nbsp;</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="">didSet</code><span class="Apple-converted-space">&nbsp;</span>are indented even if they are
part of the property they are defined on. What’s the point I’m
missing in this argument? (I’m precisely talking about the
comparison between cases and observers, not about the indent
elsewhere.)</p>
</div>
</div>
</blockquote>
</div>
<div>I was confused by an apparent bug in SourceKit. &nbsp;It looks
like top level properties are indented like this:</div>
<div><br class=""></div>
<div><span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures; color: rgb(186, 45, 162);" class="">var</span> <span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;" class="">zzd :</span> <span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures; color: rgb(112, 61, 170);" class="">Int</span> <span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;" class="">=</span> <span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures; color: rgb(39, 42, 216);" class="">12</span> <span style="font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;" class="">{</span></div>
<div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #ba2da2" class="">didSet</span> <span style="font-variant-ligatures: no-common-ligatures" class="">{</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">&nbsp;&nbsp;</span><span style="font-variant-ligatures: no-common-ligatures; color: #3e1e81" class="">print</span><span style="font-variant-ligatures: no-common-ligatures" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">42</span><span style="font-variant-ligatures: no-common-ligatures" class="">)</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">}</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">}</span></div>
</div>
<div><br class=""></div>
<div>But that didSet/willSet are indented when inside of a
class:</div>
<div><br class=""></div>
<div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">&nbsp;&nbsp;</span><span style="font-variant-ligatures: no-common-ligatures; color: #ba2da2" class="">var</span> <span style="font-variant-ligatures: no-common-ligatures" class="">zzd :</span>
<span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Int</span> <span style="font-variant-ligatures: no-common-ligatures" class="">=</span>
<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">12</span> <span style="font-variant-ligatures: no-common-ligatures" class="">{</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">&nbsp; &nbsp;</span> <span style="font-variant-ligatures: no-common-ligatures; color: #ba2da2" class="">didSet</span> <span style="font-variant-ligatures: no-common-ligatures" class="">{</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">&nbsp; &nbsp; &nbsp;</span> <span style="font-variant-ligatures: no-common-ligatures; color: #3e1e81" class="">print</span><span style="font-variant-ligatures: no-common-ligatures" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">42</span><span style="font-variant-ligatures: no-common-ligatures" class="">)</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">&nbsp; &nbsp; }</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">&nbsp; }</span></div>
<div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><br class=""></div>
</div>
This should clearly be consistent, and the second is the right way
to do it, but this behavior invalidates my argument. &nbsp;The new
argument I’d make is that things with braces should definitely be
indented :-). &nbsp;I retain the argument that cases are “part of”
the switch statement itself.
<div class=""><br class=""></div>
<div class="">-Chris</div>
<div class=""><br class=""></div>


</div></div></span></blockquote></div><div class="bloop_markdown"><p></p></div></body></html>