<div dir="ltr"><div style="font-family:arial,sans-serif;font-size:13px">Grml... Really prefer reviews on phabricator ...</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">>+    } else if (Limit != 0 && Line.First->isNot(tok::kw_namespace) &&</div><div style="font-family:arial,sans-serif;font-size:13px">>+               (Line.First->isNot(tok::kw_extern) ||</div><div style="font-family:arial,sans-serif;font-size:13px">>+                (Line.First->Next && !Line.First->Next->isStringLiteral()))) {</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Isn't this doing something entirely different, namely not contracting such declaration to a single line. I'd be fine with that, but it should be called out explicitly.. And fixes part of <a href="http://llvm.org/PR21419" target="_blank" class="cremed">llvm.org/PR21419</a>.</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Also, this would prevent:</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">  extern "C" int f() { return 42; }</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Right? Probably not what we want.</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><div>>+        PreviousLine->First->isNot(tok::kw_namespace) &&</div><div>>+        PreviousLine->First->isNot(tok::kw_extern))</div></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">!PreviousLine->First->isOneOf(tok::kw_namespace, tok::kw_extern)</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Also, this prevents removing the empty line in</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">  extern "C" int f() {</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">    int i = 42;</div><div style="font-family:arial,sans-serif;font-size:13px">    return i;</div><div style="font-family:arial,sans-serif;font-size:13px">  }</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Also not what we want, I guess.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 12, 2014 at 10:34 PM, Nico Weber <span dir="ltr"><<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>KeepEmptyLinesAtTheStartOfBlocks is ignored for namespace blocks. extern "C" blocks are similar to namespaces, so it should be ignored there too. (Requested here: <a href="http://crbug.com/432640" target="_blank">http://crbug.com/432640</a>)<br></div><div><br></div><div>The attached patch implements this.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Nico</div></font></span></div>
</blockquote></div><br></div>