[patch] Ignore KeepEmptyLinesAtTheStartOfBlocks for extern "C"	blocks
    Daniel Jasper 
    djasper at google.com
       
    Wed Nov 12 13:46:05 PST 2014
    
    
  
Grml... Really prefer reviews on phabricator ...
>+    } else if (Limit != 0 && Line.First->isNot(tok::kw_namespace) &&
>+               (Line.First->isNot(tok::kw_extern) ||
>+                (Line.First->Next &&
!Line.First->Next->isStringLiteral()))) {
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 llvm.org/PR21419.
Also, this would prevent:
  extern "C" int f() { return 42; }
Right? Probably not what we want.
>+        PreviousLine->First->isNot(tok::kw_namespace) &&
>+        PreviousLine->First->isNot(tok::kw_extern))
!PreviousLine->First->isOneOf(tok::kw_namespace, tok::kw_extern)
Also, this prevents removing the empty line in
  extern "C" int f() {
    int i = 42;
    return i;
  }
Also not what we want, I guess.
On Wed, Nov 12, 2014 at 10:34 PM, Nico Weber <thakis at chromium.org> wrote:
> Hi,
>
> KeepEmptyLinesAtTheStartOfBlocks is ignored for namespace blocks. extern
> "C" blocks are similar to namespaces, so it should be ignored there too.
> (Requested here: http://crbug.com/432640)
>
> The attached patch implements this.
>
> Nico
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141112/74456a39/attachment.html>
    
    
More information about the cfe-commits
mailing list