036181471c 
								
							 
						 
						
							
							
								
								clang-format: Don't indent 'signals' as access specifier if it isn't one  
							
							... 
							
							
							
							Before:
  {
  signals.set(0);
  }
After:
  {
    signals.set(0);
  }
llvm-svn: 236630 
							
						 
						
							2015-05-06 19:21:23 +00:00  
				
					
						
							
							
								 
						
							
								1fe0d5ca59 
								
							 
						 
						
							
							
								
								clang-format: Merge labels and subsequent semicolons.  
							
							... 
							
							
							
							E.g.:
  default:;
This can be used to get around restrictions as to what can follow a
label. It fixes llvm.org/PR19648.
llvm-svn: 236604 
							
						 
						
							2015-05-06 15:19:47 +00:00  
				
					
						
							
							
								 
						
							
								112b50e6b6 
								
							 
						 
						
							
							
								
								clang-format: Allow ternary expressions inside template parameters if  
							
							... 
							
							
							
							the template parameters aren't inside an expression context.
This fixes llvm.org/PR23270.
llvm-svn: 236603 
							
						 
						
							2015-05-06 14:53:50 +00:00  
				
					
						
							
							
								 
						
							
								e92bf6f141 
								
							 
						 
						
							
							
								
								clang-format: Consider operator precedence as penalty when breaking  
							
							... 
							
							
							
							before operators.
This fixes llvm.org/23382.
llvm-svn: 236602 
							
						 
						
							2015-05-06 14:23:38 +00:00  
				
					
						
							
							
								 
						
							
								04785d0488 
								
							 
						 
						
							
							
								
								clang-format: Accept slightly more record declarations.  
							
							... 
							
							
							
							This fixes llvm.org/PR23397.
llvm-svn: 236599 
							
						 
						
							2015-05-06 14:03:02 +00:00  
				
					
						
							
							
								 
						
							
								2746a308c2 
								
							 
						 
						
							
							
								
								clang-format: Fix bad wrapping of ObjC method exprs.  
							
							... 
							
							
							
							Before:
  [aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa:
      aaaaaaaa aaa:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa];
After:
  [aaaaaaaaaaaaaaaaaaaaaaaaa
      aaaaaaaaaaaaaaaaa:aaaaaaaa
                    aaa:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa];
Note that this might now violate the column limit and we probably need an
alternative way of indenting these then. However, that is still strictly better
than the messy formatting that clang-format did before.
llvm-svn: 236598 
							
						 
						
							2015-05-06 13:13:03 +00:00  
				
					
						
							
							
								 
						
							
								eb53668c35 
								
							 
						 
						
							
							
								
								clang-format: Properly indent method calls without inputs.  
							
							... 
							
							
							
							Before:
  [aaaaaaaaaaa
          aaaaaaa];
After:
  [aaaaaaaaaaa
      aaaaaaa];
llvm-svn: 236597 
							
						 
						
							2015-05-06 12:48:06 +00:00  
				
					
						
							
							
								 
						
							
								e2408e37db 
								
							 
						 
						
							
							
								
								clang-format: Fix another assertion discovered by the fuzzer.  
							
							... 
							
							
							
							In the process, fix an old todo that I don't really know how to write
tests for. The problem is that Clang's lexer creates very strange token
sequences for these. However, the new approach seems generally better
and easier to read so I am submitting it nonetheless.
llvm-svn: 236589 
							
						 
						
							2015-05-06 11:16:43 +00:00  
				
					
						
							
							
								 
						
							
								62c78f5474 
								
							 
						 
						
							
							
								
								clang-format: Prevent assertion discovered by fuzzer.  
							
							... 
							
							
							
							llvm-svn: 236578 
							
						 
						
							2015-05-06 08:58:57 +00:00  
				
					
						
							
							
								 
						
							
								4d9ec17f1e 
								
							 
						 
						
							
							
								
								clang-format: Prevent exponential runtime in token annotator.  
							
							... 
							
							
							
							llvm-svn: 236577 
							
						 
						
							2015-05-06 08:38:24 +00:00  
				
					
						
							
							
								 
						
							
								6d9b88dd99 
								
							 
						 
						
							
							
								
								clang-format: Fix bug in multiline comment wrapping.  
							
							... 
							
							
							
							Splitting:
  /**
   * multiline block comment
   *
   */
Before:
  /**
   * multiline block
   *comment
   *
   */
After:
  /**
   * multiline block
   * comment
   *
   */
The reason was that the empty line inside the comment (with just the "*") was
confusing the comment breaking logic.
llvm-svn: 236573 
							
						 
						
							2015-05-06 07:17:22 +00:00  
				
					
						
							
							
								 
						
							
								de7ca75ca0 
								
							 
						 
						
							
							
								
								clang-format: Force aligning different brackets relative to each other.  
							
							... 
							
							
							
							Before:
  void SomeFunction(vector< // break
      int> v);
After:
  void SomeFunction(vector< // break
                        int> v);
llvm-svn: 236412 
							
						 
						
							2015-05-04 07:39:00 +00:00  
				
					
						
							
							
								 
						
							
								e9f5357f49 
								
							 
						 
						
							
							
								
								clang-format: Don't merge short else blocks.  
							
							... 
							
							
							
							Before (with the appropriate flags settings):
  if (a) {
    f();
  } else { g(); }
Before (with other appropriate flags settings):
  if (a) { f(); } else {
    g();
  }
After:
  if (a) {
    f();
  } else {
    g();
  }
llvm-svn: 236217 
							
						 
						
							2015-04-30 09:24:17 +00:00  
				
					
						
							
							
								 
						
							
								a4499133b1 
								
							 
						 
						
							
							
								
								clang-format: Add ability to align assignment operators.  
							
							... 
							
							
							
							In Objective-C some style guides use a style where assignment operators are
aligned, in an effort to increase code readability. This patch adds an option
to the format library which allows this functionality. It is disabled by
default for all the included styles, so it must be explicitly enabled.
The option will change code such as:
  - (void)method {
      NSNumber *one = @1 ;
      NSNumber *twentyFive = @25;
  }
to:
  - (void)method {
      NSNumber *one        = @1;
      NSNumber *twentyFive = @25;
  }
Patch by Matt Oakes. Thank you!
Accidentally reformatted all the tests...
llvm-svn: 236100 
							
						 
						
							2015-04-29 13:06:49 +00:00  
				
					
						
							
							
								 
						
							
								eb45cb7cf9 
								
							 
						 
						
							
							
								
								clang-format: Fix selective indentaiton in nested blocks.  
							
							... 
							
							
							
							Buggy case:
  someFunction(
      [] {
        // comment
        int i; // invoke formatting here.
      },       // force line break
      aaa);
llvm-svn: 236091 
							
						 
						
							2015-04-29 08:29:26 +00:00  
				
					
						
							
							
								 
						
							
								775954be1e 
								
							 
						 
						
							
							
								
								clang-format: Don't wrap after short first segments of builder calls.  
							
							... 
							
							
							
							Before:
  a()
      .aaaaa()
      .aaaaa()
      .aaaaa();
After:
  a().aaaaa()
      .aaaaa()
      .aaaaa();
llvm-svn: 235707 
							
						 
						
							2015-04-24 10:08:09 +00:00  
				
					
						
							
							
								 
						
							
								de0d1f3c26 
								
							 
						 
						
							
							
								
								clang-format: More selectively detect QT's "signals".  
							
							... 
							
							
							
							llvm-svn: 235702 
							
						 
						
							2015-04-24 07:50:34 +00:00  
				
					
						
							
							
								 
						
							
								0faa9136fa 
								
							 
						 
						
							
							
								
								clang-format: Properly detect variable declarations with ObjC.  
							
							... 
							
							
							
							Before:
  LoooooooooooooooooooooooooooooooooooooooongType
  LoooooooooooooooooooooooooooooooooooooongVariable([A a]);
After:
  LoooooooooooooooooooooooooooooooooooooooongType
      LoooooooooooooooooooooooooooooooooooooongVariable([A a]);
llvm-svn: 235599 
							
						 
						
							2015-04-23 13:58:40 +00:00  
				
					
						
							
							
								 
						
							
								caf84fe21e 
								
							 
						 
						
							
							
								
								clang-format: Allow splitting "= default" and "= delete".  
							
							... 
							
							
							
							Otherwise, this can violate the column limit.
llvm-svn: 235592 
							
						 
						
							2015-04-23 12:59:09 +00:00  
				
					
						
							
							
								 
						
							
								532a031422 
								
							 
						 
						
							
							
								
								clang-format: Don't add unwanted space when creating new arrays.  
							
							... 
							
							
							
							Before:
  char** newargv = new char* [argc];
After:
  char** newargv = new char*[argc];
llvm-svn: 235583 
							
						 
						
							2015-04-23 10:23:53 +00:00  
				
					
						
							
							
								 
						
							
								289afc071e 
								
							 
						 
						
							
							
								
								clang-format: Support nested block formatting with ColumnLimit=0.  
							
							... 
							
							
							
							llvm-svn: 235580 
							
						 
						
							2015-04-23 09:23:17 +00:00  
				
					
						
							
							
								 
						
							
								ee4a8a140a 
								
							 
						 
						
							
							
								
								clang-format: Fix for #pragma option formatting.  
							
							... 
							
							
							
							Adapted patch from Sergey Razmetov. Thank you.
llvm-svn: 235492 
							
						 
						
							2015-04-22 09:45:42 +00:00  
				
					
						
							
							
								 
						
							
								e4ab49e8d3 
								
							 
						 
						
							
							
								
								clang-format: Fix incorrect multi-var declstmt detection.  
							
							... 
							
							
							
							This is now obvious as the pointer alignment behavior was changed.
Before (even with pointer alignment "Left"):
  MACRO Constructor(const int &i) : a(a), b(b) {}
After:
  MACRO Constructor(const int& i) : a(a), b(b) {}
llvm-svn: 235301 
							
						 
						
							2015-04-20 12:54:29 +00:00  
				
					
						
							
							
								 
						
							
								20e15563ff 
								
							 
						 
						
							
							
								
								clang-format: Undo r214508. It was essentially always removing the  
							
							... 
							
							
							
							space where we already had the flag ObjCSpaceBeforeProtocolList to
control it. I don't know what I was thinking.
llvm-svn: 235076 
							
						 
						
							2015-04-16 07:02:19 +00:00  
				
					
						
							
							
								 
						
							
								2b1865c251 
								
							 
						 
						
							
							
								
								clang-format: Determine "in" as a keyword in ObjC for loops more precisely  
							
							... 
							
							
							
							Before:
  for (int i = 0; i < in [a]; ++i) ..
After:
  for (int i = 0; i < in[a]; ++i) ..
Also do some related cleanups.
llvm-svn: 234980 
							
						 
						
							2015-04-15 07:26:18 +00:00  
				
					
						
							
							
								 
						
							
								53395406da 
								
							 
						 
						
							
							
								
								clang-format: Fix regression formatting QT's "signals:" from r234318.  
							
							... 
							
							
							
							llvm-svn: 234320 
							
						 
						
							2015-04-07 15:04:40 +00:00  
				
					
						
							
							
								 
						
							
								676e516354 
								
							 
						 
						
							
							
								
								clang-format: Don't allow labels when expecting declarations.  
							
							... 
							
							
							
							This fixes formatting unnamed bitfields (llvm.org/PR21999).
Before:
  struct MyStruct {
    uchar data;
  uchar:
    8;
  uchar:
    8;
    uchar other;
  };
After:
  struct MyStruct {
    uchar data;
    uchar : 8;
    uchar : 8;
    uchar other;
  };
llvm-svn: 234318 
							
						 
						
							2015-04-07 14:36:33 +00:00  
				
					
						
							
							
								 
						
							
								acf67e3ecd 
								
							 
						 
						
							
							
								
								clang-format: Improve nested block formatting.  
							
							... 
							
							
							
							Before:
  functionA(functionB({
    int i;
    int j;
  }),
            aaaa, bbbb, cccc);
After:
  functionA(functionB({
              int i;
              int j;
            }),
            aaaa, bbbb, cccc);
llvm-svn: 234304 
							
						 
						
							2015-04-07 08:20:35 +00:00  
				
					
						
							
							
								 
						
							
								9dedc775d7 
								
							 
						 
						
							
							
								
								clang-format: Indent relative to the ./-> and not the function name.  
							
							... 
							
							
							
							Before:
  aaaaaaaaaaa     //
      .aaaa(      //
           bbbb)  // This is different ..
      .aaaa(      //
          cccc);  // .. from this.
After:
  aaaaaaaaaaa     //
      .aaaa(      //
          bbbb)   // This is identical ..
      .aaaa(      //
          cccc);  // .. to this.
llvm-svn: 234300 
							
						 
						
							2015-04-07 06:41:24 +00:00  
				
					
						
							
							
								 
						
							
								05cd92922d 
								
							 
						 
						
							
							
								
								clang-format: Force line break in trailing calls after multline exprs.  
							
							... 
							
							
							
							Before:
  aaaaaaaa(aaaaaaaaaa,
           bbbbbbbbbb).a();
After:
  aaaaaaaa(aaaaaaaaaa,
           bbbbbbbbbb)
      .a();
llvm-svn: 233304 
							
						 
						
							2015-03-26 18:46:28 +00:00  
				
					
						
							
							
								 
						
							
								e99c72fc2e 
								
							 
						 
						
							
							
								
								clang-format: Fix merging of _T macros.  
							
							... 
							
							
							
							NewlinesBefore and HasUnescapedNewline were not properly propagated
leading to llvm.org/PR23032.
llvm-svn: 233276 
							
						 
						
							2015-03-26 14:47:35 +00:00  
				
					
						
							
							
								 
						
							
								414c9c6fb0 
								
							 
						 
						
							
							
								
								clang-format: Fix another bug in wrapping around "*".  
							
							... 
							
							
							
							Before:
  void aaaaa(
      aaaaaaaaaaaa* aaaaaaaaaaaaaa) {} // even violation the column limit
After:
  void aaaaa(aaaaaaaaaaaa*
                 aaaaaaaaaaaaaa) {}
llvm-svn: 232717 
							
						 
						
							2015-03-19 09:40:16 +00:00  
				
					
						
							
							
								 
						
							
								1130981907 
								
							 
						 
						
							
							
								
								clang-format: Fix bad wrapping after "*" introduced in r232044.  
							
							... 
							
							
							
							Before:
  void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa*
                                              const aaaaaaaaaaaa) {}
After:
  void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
      aaaaaaaaaaaaaaaaaaaaaaaaa* const aaaaaaaaaaaa) {}
llvm-svn: 232635 
							
						 
						
							2015-03-18 14:20:13 +00:00  
				
					
						
							
							
								 
						
							
								92e0982936 
								
							 
						 
						
							
							
								
								[clang-format] Add missing test for std::function<void( int, int )>  
							
							... 
							
							
							
							spacing also fixed by r230473.
The fix in r230473 was done to enable fixing the spacing for
  std::function<void( int, int )>.
I did not realized that it also fixed this
issue.  Since it is fairly different from
  Deleted &operator=(const Deleted &)& = default;
fixed in r230473, it seems sensible to add the regression test for it.
Also cleaned up the test by removing duplicated code and comment, and kept
repeated test set consistent.
Result of running the new tests with r230473 backed out:
  [ RUN      ] FormatTest.ConfigurableSpacesInParentheses
  Actual: "std::function<void(int, int)> callback;"
  Expected: "std::function<void( int, int )> callback;"
  Actual: "std::function<void( int, int )> callback;"
  Expected: "std::function<void(int, int)> callback;"
  Actual: "std::function<void( int, int ) > callback;"
  Expected: "std::function<void(int, int)> callback;"
  [  FAILED  ] FormatTest.ConfigurableSpacesInParentheses (402 ms)
Result of new tests with r230473:
  [ RUN      ] FormatTest.ConfigurableSpacesInParentheses
  [       OK ] FormatTest.ConfigurableSpacesInParentheses (209 ms)
Review: http://reviews.llvm.org/D7922 
Patch by Jean-Philippe Dufraigne. Thanks!
llvm-svn: 232632 
							
						 
						
							2015-03-18 12:59:19 +00:00  
				
					
						
							
							
								 
						
							
								9ecb0e96b8 
								
							 
						 
						
							
							
								
								clang-format: Don't corrupt macros with open braces.  
							
							... 
							
							
							
							Formatting:
  #define A { {
  #define B } }
Before:
  #define A               \
    {                     \
      { #define B }       \
    }
After:
  #define A               \
    {                     \
      {
  #define B               \
    }                     \
    }
This fixes llvm.org/PR22884.
llvm-svn: 232166 
							
						 
						
							2015-03-13 13:32:11 +00:00  
				
					
						
							
							
								 
						
							
								55ca608cdc 
								
							 
						 
						
							
							
								
								clang-format: [OBJC] Don't indent 8 spaces in method declarations.  
							
							... 
							
							
							
							Before:
  - (void)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
          (SoooooooooooooooooooooomeType *)bbbbbbbbbb;
After:
  - (void)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
      (SoooooooooooooooooooooomeType *)bbbbbbbbbb;
llvm-svn: 232112 
							
						 
						
							2015-03-12 22:13:45 +00:00  
				
					
						
							
							
								 
						
							
								b754a747be 
								
							 
						 
						
							
							
								
								clang-format: When putting */& next to types, also wrap before them.  
							
							... 
							
							
							
							Before:
  LoooooooooooongType *
      loooooooooooongVariable;
After:
  LoooooooooooongType
      *loooooooooooongVariable;
llvm-svn: 232044 
							
						 
						
							2015-03-12 15:04:53 +00:00  
				
					
						
							
							
								 
						
							
								dc4f725673 
								
							 
						 
						
							
							
								
								clang-format: Fix incorrect && recognition.  
							
							... 
							
							
							
							Before:
  if (a &&(b = c)) ..
After:
  if (a && (b = c)) ..
llvm-svn: 231920 
							
						 
						
							2015-03-11 12:59:49 +00:00  
				
					
						
							
							
								 
						
							
								ac5c97e36b 
								
							 
						 
						
							
							
								
								clang-format: Don't remove newline if macro ends in access specifier.  
							
							... 
							
							
							
							I.e.:
  #define A public:
  // The new line before this line would be removed.
  int a;
llvm-svn: 231636 
							
						 
						
							2015-03-09 08:13:55 +00:00  
				
					
						
							
							
								 
						
							
								98f8ae34da 
								
							 
						 
						
							
							
								
								clang-format: Slightly change indentation rules in for loops.  
							
							... 
							
							
							
							There was already a TODO to double-check whether the extra indenation
makes sense. A slightly different case reveals that it is actively harmful:
  for (int i = 0; i < aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                      bbbbbbbbbbbbbbbbbbbb < ccccccccccccccc;
       ++i) {
  }
Here (and it is probably not a totally infrequent case, it just works out that
"i < " is four spaces and so the four space extra indentation makes the
operator precedence confusing. So, this will now instead be formatted
as:
  for (int i = 0; i < aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                  bbbbbbbbbbbbbbbbbbbb < ccccccccccccccc;
       ++i) {
  }
llvm-svn: 231461 
							
						 
						
							2015-03-06 10:57:12 +00:00  
				
					
						
							
							
								 
						
							
								0391e55650 
								
							 
						 
						
							
							
								
								clang-format: Fix access to uninitialized memory.  
							
							... 
							
							
							
							With incomplete code, we aren't guaranteed to generated changes for
every token. In that case, we need to assume that even the very first
change can continue a preprocessor directive and initialize values
accordingly.
llvm-svn: 231066 
							
						 
						
							2015-03-03 13:59:49 +00:00  
				
					
						
							
							
								 
						
							
								e662316994 
								
							 
						 
						
							
							
								
								clang-format: Prefer wrapping a lambda's body over the lambda's return type.  
							
							... 
							
							
							
							Before:
  aaaaaaaaaaaaaaaaaaaaaa(
      [](aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &aaa)
          -> aaaaaaaaaaaaaaaaaaaaa { return aaaaaaaaaaaaaaaaa; });
After:
  aaaaaaaaaaaaaaaaaaaaaa(
      [](aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &aaa) -> aaaaaaaaaaaaaaaaaaaaa {
        return aaaaaaaaaaaaaaaaa;
      });
llvm-svn: 230942 
							
						 
						
							2015-03-02 10:35:13 +00:00  
				
					
						
							
							
								 
						
							
								bea1ab46d9 
								
							 
						 
						
							
							
								
								clang-format: Always align */& in multi-var DeclStmts.  
							
							... 
							
							
							
							Seems like the most consistent thing to do and in multi-var DeclStmts,
it is especially important to point out that the */& bind to the
identifier.
llvm-svn: 230903 
							
						 
						
							2015-03-01 18:55:26 +00:00  
				
					
						
							
							
								 
						
							
								308062bd0d 
								
							 
						 
						
							
							
								
								clang-format: Make trailing commas in array inits force one per line.  
							
							... 
							
							
							
							Before:
  NSArray *array = @[ @"a", @"a", ];
After:
  NSArray *array = @[
    @"a",
    @"a",
  ];
llvm-svn: 230741 
							
						 
						
							2015-02-27 08:41:05 +00:00  
				
					
						
							
							
								 
						
							
								b812e323fa 
								
							 
						 
						
							
							
								
								clang-format: Make braced list formatting more consistent.  
							
							... 
							
							
							
							Before:
  Aaaa aaaaaaaaaaa{
      {
       a, // +1 indent weird.
       b, // trailing comma signals one per line.
      },  // trailing comma signals one per line.
  };
After:
  Aaaa aaaaaaaaaaa{
      {
          a, // better!?
          b, // trailing comma signals one per line.
      },     // trailing comma signals one per line.
  };
Interesting that this apparently was entirely untested :-(.
llvm-svn: 230627 
							
						 
						
							2015-02-26 11:46:29 +00:00  
				
					
						
							
							
								 
						
							
								beaa322c36 
								
							 
						 
						
							
							
								
								clang-format: Fix space of arrays of pointers to templated types.  
							
							... 
							
							
							
							Before:
  vector<int>(*foo_)[6];
After:
  vector<int> (*foo_)[6];
llvm-svn: 230625 
							
						 
						
							2015-02-26 11:30:50 +00:00  
				
					
						
							
							
								 
						
							
								a42de763ac 
								
							 
						 
						
							
							
								
								clang-format: Allow breaking after "else if(" as a last resort.  
							
							... 
							
							
							
							This isn't generally nice, but better than violating the column limit.
llvm-svn: 230620 
							
						 
						
							2015-02-26 09:49:08 +00:00  
				
					
						
							
							
								 
						
							
								1c22048834 
								
							 
						 
						
							
							
								
								clang-format: Fix spacing for function with ref-qualification ..  
							
							... 
							
							
							
							.. when using SpacesInCStyleCastParentheses != SpacesInParentheses.
Before:
  FormatStyle Spaces = getLLVMStyle();
  Deleted &operator=(const Deleted &)& = default;
  Spaces.SpacesInParentheses = true;
  Deleted(const Deleted &)& = default;
  Spaces.SpacesInCStyleCastParentheses = true;
  Spaces.SpacesInParentheses= false;
  Deleted( const Deleted & )& = default;
After:
  FormatStyle Spaces = getLLVMStyle();
  Deleted &operator=(const Deleted &)& = default;;
  Spaces.SpacesInParentheses= true;
  Deleted( const Deleted & )& = default;
  Spaces.SpacesInCStyleCastParentheses = true;
  Spaces.SpacesInParentheses= false;
  Deleted(const Deleted &)& = default;
Patch by Jean-Philippe Dufraigne. Thank you!
llvm-svn: 230473 
							
						 
						
							2015-02-25 10:30:06 +00:00  
				
					
						
							
							
								 
						
							
								411b251cea 
								
							 
						 
						
							
							
								
								clang-format: Change location of stashed token  
							
							... 
							
							
							
							Commit of patch in http://reviews.llvm.org/D7871 
llvm-svn: 230395 
							
						 
						
							2015-02-24 23:23:24 +00:00  
				
					
						
							
							
								 
						
							
								68a7dbf86d 
								
							 
						 
						
							
							
								
								Fix merging of << at end of input.  
							
							... 
							
							
							
							Commit of review http://reviews.llvm.org/D7766 
llvm-svn: 230061 
							
						 
						
							2015-02-20 21:09:01 +00:00  
				
					
						
							
							
								 
						
							
								fc27511223 
								
							 
						 
						
							
							
								
								clang-format: Space and triple angle braces.  
							
							... 
							
							
							
							Committing patch http://reviews.llvm.org/D6800 .
llvm-svn: 229783 
							
						 
						
							2015-02-18 23:48:37 +00:00  
				
					
						
							
							
								 
						
							
								699631298e 
								
							 
						 
						
							
							
								
								clang-format: Don't force a break after "endl" if everything fits on one line.  
							
							... 
							
							
							
							llvm-svn: 229486 
							
						 
						
							2015-02-17 10:05:15 +00:00  
				
					
						
							
							
								 
						
							
								d97d5d5cf7 
								
							 
						 
						
							
							
								
								clang-format: Fix crasher.  
							
							... 
							
							
							
							llvm-svn: 229485 
							
						 
						
							2015-02-17 09:58:03 +00:00  
				
					
						
							
							
								 
						
							
								61005bc5de 
								
							 
						 
						
							
							
								
								Reverting a switch from LLVM_DELETED_FUNCTION to = delete; this test should not have changed.  
							
							... 
							
							
							
							llvm-svn: 229394 
							
						 
						
							2015-02-16 14:14:01 +00:00  
				
					
						
							
							
								 
						
							
								abc1892057 
								
							 
						 
						
							
							
								
								Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; Clang edition.  
							
							... 
							
							
							
							llvm-svn: 229339 
							
						 
						
							2015-02-15 22:54:08 +00:00  
				
					
						
							
							
								 
						
							
								29d39d54e7 
								
							 
						 
						
							
							
								
								clang-format: Correctly mark preprocessor lines in child blocks.  
							
							... 
							
							
							
							This prevents contracting:
  auto lambda = []() {
    int a = 2
  #if A
            + 2
  #endif
        ;
  };
into:
  auto lambda = []() { int a = 2
  #if A + 2
  #endif ; };
Which is obviously BAD.
This fixes llvm.org/PR22496.
llvm-svn: 228522 
							
						 
						
							2015-02-08 09:34:49 +00:00  
				
					
						
							
							
								 
						
							
								33381f5e0b 
								
							 
						 
						
							
							
								
								clang-format: Format Objective-C try blocks like all the other try blocks.  
							
							... 
							
							
							
							Before:
  @try  {
    // ...
  }
  @finally  {
    // ...
  }
Now:
  @try  {
    // ...
  } @finally  {
    // ...
  }
This is consistent with how we format C++ try blocks and SEH try blocks.
clang-format not doing this before was an implementation oversight.
This is dependent on BraceBreakingStyle.  The snippet above is with the
Attach style.  Style Stroustrip for example still results in the "Before:"
snippet, which makes sense since other blocks (try, else) break after '}' too.
llvm-svn: 228483 
							
						 
						
							2015-02-07 01:57:32 +00:00  
				
					
						
							
							
								 
						
							
								30029c6b58 
								
							 
						 
						
							
							
								
								clang-format: Fix assert triggering on carriage returns.  
							
							... 
							
							
							
							llvm-svn: 228288 
							
						 
						
							2015-02-05 11:05:31 +00:00  
				
					
						
							
							
								 
						
							
								fac2371be3 
								
							 
						 
						
							
							
								
								clang-format: Add support for SEH __try / __except / __finally blocks.  
							
							... 
							
							
							
							This lets clang-format format
    __try {
    } __except(0) {
    }
and
    __try {
    } __finally {
    }
correctly. __try and __finally are keywords if `LangOpts.MicrosoftExt` is set,
so this turns this on.  This also enables a few other keywords, but it
shouldn't overly perturb regular clang-format operation.  __except is a
context-sensitive keyword, so `AdditionalKeywords` needs to be passed around to
a few more places.
Fixes PR22321.
llvm-svn: 228148 
							
						 
						
							2015-02-04 15:26:27 +00:00  
				
					
						
							
							
								 
						
							
								47b35aeaa1 
								
							 
						 
						
							
							
								
								clang-format: Fix crasher caused by not properly setting dry-run.  
							
							... 
							
							
							
							llvm-svn: 227427 
							
						 
						
							2015-01-29 10:47:14 +00:00  
				
					
						
							
							
								 
						
							
								d1c13736e0 
								
							 
						 
						
							
							
								
								clang-format: Fix another crasher caused by incomplete macro code.  
							
							... 
							
							
							
							We did't properly mark all of an AnnotatedLine's children as finalized
and thus would reformat the same tokens in different branches of #if/#else
sequences leading to invalid replacements.
llvm-svn: 226930 
							
						 
						
							2015-01-23 19:37:25 +00:00  
				
					
						
							
							
								 
						
							
								7509216a41 
								
							 
						 
						
							
							
								
								clang-format: Fix incorrect classification of "*".  
							
							... 
							
							
							
							Before:
  *a = b *c;
After:
  *a = b * c;
llvm-svn: 226923 
							
						 
						
							2015-01-23 19:04:49 +00:00  
				
					
						
							
							
								 
						
							
								e4b48c635c 
								
							 
						 
						
							
							
								
								clang-format: Fix crasher when splitting incomplete escape sequences.  
							
							... 
							
							
							
							llvm-svn: 226698 
							
						 
						
							2015-01-21 19:50:35 +00:00  
				
					
						
							
							
								 
						
							
								04b979dd81 
								
							 
						 
						
							
							
								
								clang-format: Fix crasher caused by incorrect resetting of token info.  
							
							... 
							
							
							
							llvm-svn: 226685 
							
						 
						
							2015-01-21 18:35:47 +00:00  
				
					
						
							
							
								 
						
							
								d1debfc2bb 
								
							 
						 
						
							
							
								
								clang-format: Fix bad memory access.  
							
							... 
							
							
							
							llvm-svn: 226680 
							
						 
						
							2015-01-21 18:04:02 +00:00  
				
					
						
							
							
								 
						
							
								fd725c060b 
								
							 
						 
						
							
							
								
								clang-format: Fix use-heap-after-free bug.  
							
							... 
							
							
							
							Discovered by the awesome test case and ASAN.
llvm-svn: 226678 
							
						 
						
							2015-01-21 17:35:29 +00:00  
				
					
						
							
							
								 
						
							
								6fd5d646cc 
								
							 
						 
						
							
							
								
								clang-format: Fix AlwaysBreakBeforeMultilineStrings with ColumnLimit=0  
							
							... 
							
							
							
							Before:
  const char *x =
      "hello llvm";
After:
  const char *x = "hello llvm";
This fixes llvm.org/PR22245.
Patch by Bill Meltsner, thank you!
llvm-svn: 226564 
							
						 
						
							2015-01-20 12:59:20 +00:00  
				
					
						
							
							
								 
						
							
								9b79efb51f 
								
							 
						 
						
							
							
								
								clang-format: Fix crasher on weird comments.  
							
							... 
							
							
							
							Crashing input:
  /\
  / comment
llvm-svn: 226454 
							
						 
						
							2015-01-19 11:49:32 +00:00  
				
					
						
							
							
								 
						
							
								193cdd381b 
								
							 
						 
						
							
							
								
								clang-format: Fix crasher on incomplete condition compilation.  
							
							... 
							
							
							
							Previously crashing input:
  void f(
  #if A
      );
  #else
  #endif
llvm-svn: 226451 
							
						 
						
							2015-01-19 10:52:16 +00:00  
				
					
						
							
							
								 
						
							
								20e8c3be3c 
								
							 
						 
						
							
							
								
								clang-format: Fix crash on invalid code.  
							
							... 
							
							
							
							Input "a<," made clang-format crash.
llvm-svn: 226450 
							
						 
						
							2015-01-19 10:51:42 +00:00  
				
					
						
							
							
								 
						
							
								675b4f8350 
								
							 
						 
						
							
							
								
								clang-format: Fix clang-format crash on invalid code.  
							
							... 
							
							
							
							llvm-svn: 226449 
							
						 
						
							2015-01-19 10:51:23 +00:00  
				
					
						
							
							
								 
						
							
								9d22bcc53e 
								
							 
						 
						
							
							
								
								clang-format: Fix assertion when trying to build a nullptr StringRef.  
							
							... 
							
							
							
							llvm-svn: 226448 
							
						 
						
							2015-01-19 10:51:05 +00:00  
				
					
						
							
							
								 
						
							
								2bd7a64d12 
								
							 
						 
						
							
							
								
								clang-format: Fix endless loop on incomplete try-catch-block.  
							
							... 
							
							
							
							llvm-svn: 226447 
							
						 
						
							2015-01-19 10:50:51 +00:00  
				
					
						
							
							
								 
						
							
								b1567c106f 
								
							 
						 
						
							
							
								
								clang-format: Remove assert that isn't helpful.  
							
							... 
							
							
							
							This assert would trigger on:
  #d , = }
llvm-svn: 226446 
							
						 
						
							2015-01-19 10:50:08 +00:00  
				
					
						
							
							
								 
						
							
								00691cf3bb 
								
							 
						 
						
							
							
								
								Fix assertion in BreakableBlockComment ( http://llvm.org/PR21916 ).  
							
							... 
							
							
							
							Reviewers: djasper
Reviewed By: djasper
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D6894 
llvm-svn: 225628 
							
						 
						
							2015-01-12 13:11:12 +00:00  
				
					
						
							
							
								 
						
							
								d6a1cab1bc 
								
							 
						 
						
							
							
								
								clang-format: Improve format of lambdas in ctor initializers.  
							
							... 
							
							
							
							Before:
  Constructor()
      : Constructor([] { // comment
        int i;
      }) {}
After:
  Constructor()
      : Constructor([] { // comment
          int i;
        }) {}
llvm-svn: 225625 
							
						 
						
							2015-01-12 10:23:24 +00:00  
				
					
						
							
							
								 
						
							
								2337f28063 
								
							 
						 
						
							
							
								
								clang-format: Fix formatting of inline asm.  
							
							... 
							
							
							
							Specifically, adjust the leading "__asm {" and trailing "}" while still
leaving the assembly inside it alone.
This fixes llvm.org/PR22190.
llvm-svn: 225623 
							
						 
						
							2015-01-12 10:14:56 +00:00  
				
					
						
							
							
								 
						
							
								d05d3a8919 
								
							 
						 
						
							
							
								
								clang-format: Force line break between "endl" and "<<".  
							
							... 
							
							
							
							This makes piped output easier to read in many instances.
Before:
  llvm::errs() << aaaa << std::endl << bbbb << std::endl;
After:
  llvm::errs() << aaaa << std::endl
               << bbbb << std::endl;
Also fix a few instance of "don't use else after return" as per the
coding standards.
llvm-svn: 225444 
							
						 
						
							2015-01-08 13:56:57 +00:00  
				
					
						
							
							
								 
						
							
								b13135bc08 
								
							 
						 
						
							
							
								
								clang-format: Improve template parameter detection.  
							
							... 
							
							
							
							Before:
  struct A < std::enable_if<sizeof(T2) <sizeof(int32)>::type>;
After:
  struct A<std::enable_if<sizeof(T2) < sizeof(int32)>::type>;
llvm-svn: 225435 
							
						 
						
							2015-01-08 08:48:21 +00:00  
				
					
						
							
							
								 
						
							
								4953210478 
								
							 
						 
						
							
							
								
								clang-format: Understand single-line comments at the end of blocks.  
							
							... 
							
							
							
							This prevents clang-format from moving/aligning the comment in the
snippet:
  void f() {
    int i; // some comment
    // some unrelated comment
  }
llvm-svn: 225352 
							
						 
						
							2015-01-07 14:00:11 +00:00  
				
					
						
							
							
								 
						
							
								6a9682038f 
								
							 
						 
						
							
							
								
								clang-format: Fix unary operator detection.  
							
							... 
							
							
							
							Before:
  ** outparam = 1;
After:
  **outparam = 1;
llvm-svn: 225349 
							
						 
						
							2015-01-07 12:19:53 +00:00  
				
					
						
							
							
								 
						
							
								3a623dbd2a 
								
							 
						 
						
							
							
								
								clang-format: Fix incorrect detection of ObjC "in" keyword.  
							
							... 
							
							
							
							Before:
  for (auto v : in [1]) { ..
After:
  for (auto v : in[1]) { ..
llvm-svn: 224513 
							
						 
						
							2014-12-18 12:11:01 +00:00  
				
					
						
							
							
								 
						
							
								732b6bd4d1 
								
							 
						 
						
							
							
								
								Don't break single-line raw string literals.  
							
							... 
							
							
							
							Reviewers: djasper
Reviewed By: djasper
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D6636 
llvm-svn: 224223 
							
						 
						
							2014-12-14 20:47:11 +00:00  
				
					
						
							
							
								 
						
							
								11a0ac66e1 
								
							 
						 
						
							
							
								
								clang-format: Revamp nested block formatting.  
							
							... 
							
							
							
							This fixed llvm.org/PR21804 and hopefully a few other strange cases.
Before:
    if (blah_blah(whatever, whatever, [] {
      doo_dah();
      doo_dah();
    })) {
    }
    }
After:
    if (blah_blah(whatever, whatever, [] {
          doo_dah();
          doo_dah();
        })) {
    }
    }
llvm-svn: 224112 
							
						 
						
							2014-12-12 09:40:58 +00:00  
				
					
						
							
							
								 
						
							
								238462627e 
								
							 
						 
						
							
							
								
								clang-format: Add a test for PR19603 which seems fixed (maybe by r221338?).  
							
							... 
							
							
							
							llvm-svn: 223850 
							
						 
						
							2014-12-09 23:22:35 +00:00  
				
					
						
							
							
								 
						
							
								3431b75069 
								
							 
						 
						
							
							
								
								clang-format: Support commas in lambda return types.  
							
							... 
							
							
							
							Before:
  auto next_pair = [](A * a) -> pair<A*, A*>{};
After:
  auto next_pair = [](A* a) -> pair<A*, A*>{};
llvm-svn: 223652 
							
						 
						
							2014-12-08 13:22:37 +00:00  
				
					
						
							
							
								 
						
							
								55aed6777f 
								
							 
						 
						
							
							
								
								clang-format: Don't merge lines with comments.  
							
							... 
							
							
							
							Before:
  int f() { // comment return 42; }
After:
  int f() { // comment
    return 42;
  }
This fixes llvm.org/PR21769.
llvm-svn: 223609 
							
						 
						
							2014-12-07 16:44:49 +00:00  
				
					
						
							
							
								 
						
							
								31f6c54733 
								
							 
						 
						
							
							
								
								clang-format: Support NS_OPTIONS, CF_ENUM and CF_OPTIONS.  
							
							... 
							
							
							
							This fixes llvm.org/PR21756.
llvm-svn: 223458 
							
						 
						
							2014-12-05 10:42:21 +00:00  
				
					
						
							
							
								 
						
							
								86ee0b6daa 
								
							 
						 
						
							
							
								
								clang-format: More restrictively classify import declarations.  
							
							... 
							
							
							
							Before:
  import::SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
After:
  import::SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaa,
                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
llvm-svn: 223345 
							
						 
						
							2014-12-04 08:57:27 +00:00  
				
					
						
							
							
								 
						
							
								c095663ec1 
								
							 
						 
						
							
							
								
								clang-format: Fix fake parentheses placement with comments.  
							
							... 
							
							
							
							Before:
  return (a > b
          // comment1
      // comment2
      || c);
After:
  return (a > b
      // comment1
      // comment2
      || c);
llvm-svn: 223234 
							
						 
						
							2014-12-03 14:02:59 +00:00  
				
					
						
							
							
								 
						
							
								3219e43c94 
								
							 
						 
						
							
							
								
								clang-format: Add option to suppress operator alignment.  
							
							... 
							
							
							
							With alignment:
  int aaaaaa = aa
               + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                     * cccccccccccccccccccccccccccccccc;
Without alignment:
  int aaaaaa = aa
      + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
          * cccccccccccccccccccccccccccccccc;
This fixes llvm.org/PR21666.
llvm-svn: 223117 
							
						 
						
							2014-12-02 13:24:51 +00:00  
				
					
						
							
							
								 
						
							
								8c6e9ef676 
								
							 
						 
						
							
							
								
								clang-format: precedence-based indentation when breaking before operators.  
							
							... 
							
							
							
							Before:
  bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
               + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
               + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
               == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                  + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
               && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  > ccccccccccccccccccccccccccccccccccccccccc;
After:
  bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                       + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                       + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                              * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                          + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
               && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                          * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      > ccccccccccccccccccccccccccccccccccccccccc;
Not particularly pretty, but can probably help to uncover bugs. And if this
bugs somebody, parentheses can help.
llvm-svn: 223111 
							
						 
						
							2014-12-02 09:46:56 +00:00  
				
					
						
							
							
								 
						
							
								9e709351c5 
								
							 
						 
						
							
							
								
								clang-format: Add SFS_Empty to only empty functions on a single line.  
							
							... 
							
							
							
							Activated for and tested by Google's Java style.
This fixes llvm.org/PR21667.
llvm-svn: 222819 
							
						 
						
							2014-11-26 10:43:58 +00:00  
				
					
						
							
							
								 
						
							
								79f226e780 
								
							 
						 
						
							
							
								
								clang-format: Make short case labels work with #ifs  
							
							... 
							
							
							
							Before:
  switch (a) {
  #if FOO
  case 0: return 0; #endif
  }
After:
  switch (a) {
  #if FOO
  case 0: return 0;
  #endif
  }
This fixed llvm.org/PR21544.
llvm-svn: 222642 
							
						 
						
							2014-11-23 21:45:03 +00:00  
				
					
						
							
							
								 
						
							
								bb86d847ba 
								
							 
						 
						
							
							
								
								clang-format: Improve ObjC blocks with return type.  
							
							... 
							
							
							
							Before:
  Block b = ^int * (A * a, B * b) {}
After:
  Block b = ^int *(A *a, B *b) {}
This fixed llvm.org/PR21619.
llvm-svn: 222639 
							
						 
						
							2014-11-23 19:15:35 +00:00  
				
					
						
							
							
								 
						
							
								bcb55eec3a 
								
							 
						 
						
							
							
								
								clang-format: Understand more lambda return types.  
							
							... 
							
							
							
							Before:
  auto a = [&b, c ](D * d) -> D * {}
After:
 auto a = [&b, c](D* d) -> D* {}
llvm-svn: 222534 
							
						 
						
							2014-11-21 14:08:38 +00:00  
				
					
						
							
							
								 
						
							
								4b444495ed 
								
							 
						 
						
							
							
								
								clang-format: Use nested block special case for all languages.  
							
							... 
							
							
							
							Previously this was only used for JavaScript.
Before:
  functionCall({
                 int i;
                 int j;
               },
               aaaa, bbbb, cccc);
After:
  functionCall({
    int i;
    int j;
  }, aaaa, bbbb, cccc);
llvm-svn: 222531 
							
						 
						
							2014-11-21 13:38:53 +00:00  
				
					
						
							
							
								 
						
							
								d081e88e79 
								
							 
						 
						
							
							
								
								clang-format: Handle comments in short case labels.  
							
							... 
							
							
							
							With AllowShortCaseLabelsOnASingleLine set to true:
This gets now left unchanged:
  case 1:
    // comment
    return;
Whereas before it was changed into:
  case 1: // comment return;
This fixes llvm.org/PR21630.
llvm-svn: 222529 
							
						 
						
							2014-11-21 12:36:25 +00:00  
				
					
						
							
							
								 
						
							
								3aa9a6a126 
								
							 
						 
						
							
							
								
								clang-format: Add option to disable alignment after opening brackets  
							
							... 
							
							
							
							Before:
  SomeFunction(parameter,
               parameter);
After:
  SomeFunction(parameter,
      parameter);
Patch by Harry Terkelsen, thank you!
llvm-svn: 222284 
							
						 
						
							2014-11-18 23:55:27 +00:00  
				
					
						
							
							
								 
						
							
								e1e348b857 
								
							 
						 
						
							
							
								
								clang-format: Fix more incorrect pointer detection.  
							
							... 
							
							
							
							Before:
  Constructor() : a(a), b(c, d *e) {}
After:
  Constructor() : a(a), b(c, d * e) {}
llvm-svn: 222158 
							
						 
						
							2014-11-17 18:42:22 +00:00  
				
					
						
							
							
								 
						
							
								6a3fd8361f 
								
							 
						 
						
							
							
								
								clang-format: Fix regression introduced in r221609.  
							
							... 
							
							
							
							Before:
  void f() { f(a, c *d); }
After:
  void f() { f(a, c * d); }
llvm-svn: 222128 
							
						 
						
							2014-11-17 13:55:04 +00:00  
				
					
						
							
							
								 
						
							
								d127e3b6af 
								
							 
						 
						
							
							
								
								clang-format: Correctly detect multiplication in ctor initializer.  
							
							... 
							
							
							
							Before:
  Constructor() : a(a), area(width *height) {}
After:
  Constructor() : a(a), area(width * height) {}
llvm-svn: 222010 
							
						 
						
							2014-11-14 17:26:49 +00:00  
				
					
						
							
							
								 
						
							
								6c0ee17b89 
								
							 
						 
						
							
							
								
								clang-format: Improve function parameter packing.  
							
							... 
							
							
							
							Before:
  void SomeLoooooooooooongFunction(
      std::unique_ptr<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
          aaaaaaaaaaaaaaaaaaaaaaaaaa, int bbbbbbbbbbbbb);
After:
  void SomeLoooooooooooongFunction(
      std::unique_ptr<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
          aaaaaaaaaaaaaaaaaaaaaaaaaa,
      int bbbbbbbbbbbbb);
llvm-svn: 221989 
							
						 
						
							2014-11-14 13:14:45 +00:00  
				
					
						
							
							
								 
						
							
								6c22c44e12 
								
							 
						 
						
							
							
								
								clang-format: Support assignments as conditional operands.  
							
							... 
							
							
							
							Before:
  return a != b
             // comment
             ? a
             : a = a != b
                   // comment
         ? a =
               b : a;
After:
  return a != b
             // comment
             ? a
             : a = a != b
                       // comment
                       ? a = b
                       : a;
llvm-svn: 221987 
							
						 
						
							2014-11-14 13:03:40 +00:00  
				
					
						
							
							
								 
						
							
								119ff533e4 
								
							 
						 
						
							
							
								
								clang-format: Improve indentation of comments in expressions.  
							
							... 
							
							
							
							Before:
  int i = (a)
              // comment
          + b;
  return aaaa == bbbb
                 // comment
             ? aaaa
             : bbbb;
After:
  int i = (a)
          // comment
          + b;
  return aaaa == bbbb
             // comment
             ? aaaa
             : bbbb;
llvm-svn: 221985 
							
						 
						
							2014-11-14 12:31:14 +00:00  
				
					
						
							
							
								 
						
							
								34272657de 
								
							 
						 
						
							
							
								
								clang-format: Format extern "C" blocks like namespace blocks.  
							
							... 
							
							
							
							namespace blocks act as if KeepEmptyLinesAtTheStartOfBlocks is always true,
and aren't collapsed to a single line even if they would fit. Do the same
for extern "C" blocks.
Before,
  extern "C" {
  void ExternCFunction();
  }
was collapsed into `extern "C" { void ExternCFunction(); }`. Now it stays like
it was.
Fixes http://crbug.com/432640  and part of PR21419.
llvm-svn: 221897 
							
						 
						
							2014-11-13 16:25:37 +00:00  
				
					
						
							
							
								 
						
							
								3eb341c478 
								
							 
						 
						
							
							
								
								clang-format: Improve handling of comments in binary expressions.  
							
							... 
							
							
							
							Before:
  b = a &&
      // Comment
      b.c &&
      d;
After:
  b = a &&
      // Comment
      b.c && d;
This fixes llvm.org/PR21535.
llvm-svn: 221727 
							
						 
						
							2014-11-11 23:04:51 +00:00  
				
					
						
							
							
								 
						
							
								64a328e96f 
								
							 
						 
						
							
							
								
								clang-format: Preserve trailing-comma logic even with comments.  
							
							... 
							
							
							
							Before:
  vector<int> SomeVector = {// aaa
                            1, 2,
  };
After:
  vector<int> SomeVector = {
      // aaa
      1, 2,
  };
llvm-svn: 221699 
							
						 
						
							2014-11-11 19:34:57 +00:00  
				
					
						
							
							
								 
						
							
								0bd9a19b28 
								
							 
						 
						
							
							
								
								clang-format: Fix pointer formatting.  
							
							... 
							
							
							
							Before:
  void f(Bar* a = nullptr, Bar * b);
After:
  void f(Bar* a = nullptr, Bar* b);
llvm-svn: 221609 
							
						 
						
							2014-11-10 16:57:30 +00:00  
				
					
						
							
							
								 
						
							
								e551bb70a3 
								
							 
						 
						
							
							
								
								Revert "clang-format: [js] Updates to Google's JavaScript style."  
							
							... 
							
							
							
							This reverts commit eefd2eaad43c5c2b17953ae7ed1e72b28e696f7b.
Apparently, this change was a bit premature.
llvm-svn: 221365 
							
						 
						
							2014-11-05 17:22:31 +00:00  
				
					
						
							
							
								 
						
							
								502fac38e9 
								
							 
						 
						
							
							
								
								clang-format: Add test to prevent regression in r221125.  
							
							... 
							
							
							
							llvm-svn: 221339 
							
						 
						
							2014-11-05 10:55:36 +00:00  
				
					
						
							
							
								 
						
							
								680b09ba88 
								
							 
						 
						
							
							
								
								clang-format: Improve free-standing macro detection.  
							
							... 
							
							
							
							Before:
  SOME_WEIRD_LOG_MACRO
  << "Something long enough to cause a line break";
After:
  SOME_WEIRD_LOG_MACRO
      << "Something long enough to cause a line break";
llvm-svn: 221338 
							
						 
						
							2014-11-05 10:48:04 +00:00  
				
					
						
							
							
								 
						
							
								8022226db7 
								
							 
						 
						
							
							
								
								clang-format: Fix false positive in lambda detection.  
							
							... 
							
							
							
							Before:
  delete [] a -> b;
After:
  delete[] a->b;
This fixes part of llvm.org/PR21419.
llvm-svn: 221114 
							
						 
						
							2014-11-02 22:46:42 +00:00  
				
					
						
							
							
								 
						
							
								f739b0dbfa 
								
							 
						 
						
							
							
								
								clang-format: [js] Updates to Google's JavaScript style.  
							
							... 
							
							
							
							The style guide is changing..
llvm-svn: 220977 
							
						 
						
							2014-10-31 17:50:40 +00:00  
				
					
						
							
							
								 
						
							
								ac29eaccd2 
								
							 
						 
						
							
							
								
								clang-format: Format line if invoked on the trailing newline.  
							
							... 
							
							
							
							llvm-svn: 220883 
							
						 
						
							2014-10-29 23:40:50 +00:00  
				
					
						
							
							
								 
						
							
								f0c809a19b 
								
							 
						 
						
							
							
								
								clang-format: Improve && detection as binary operator.  
							
							... 
							
							
							
							Before:
  template <class T,
            class = typename ::std::enable_if<
                ::std::is_array<T>{}&& ::std::is_array<T>{}>::type>
  void F();
After:
  template <class T,
            class = typename ::std::enable_if<
                ::std::is_array<T>{} && ::std::is_array<T>{}>::type>
  void F();
llvm-svn: 220813 
							
						 
						
							2014-10-28 18:28:22 +00:00  
				
					
						
							
							
								 
						
							
								acb7e25d5f 
								
							 
						 
						
							
							
								
								clang-format: Fix test.  
							
							... 
							
							
							
							llvm-svn: 220807 
							
						 
						
							2014-10-28 18:18:02 +00:00  
				
					
						
							
							
								 
						
							
								13a7f469be 
								
							 
						 
						
							
							
								
								clang-format: Improve && detection as binary operators.  
							
							... 
							
							
							
							Before:
  template <class T, class = typename std::enable_if<std::is_integral<
                         T>::value &&(sizeof(T) > 1 || sizeof(T) < 8)>::type>
  void F();
After:
  template <class T, class = typename std::enable_if<
                         std::is_integral<T>::value &&
                         (sizeof(T) > 1 || sizeof(T) < 8)>::type>
  void F();
llvm-svn: 220805 
							
						 
						
							2014-10-28 18:11:52 +00:00  
				
					
						
							
							
								 
						
							
								2ad0aba610 
								
							 
						 
						
							
							
								
								clang-format: Improve function declaration detection.  
							
							... 
							
							
							
							Before:
  ReturnType MACRO
      FunctionName() {}
After:
  ReturnType MACRO
  FunctionName() {}
This fixes llvm.org/PR21404.
I wonder what the motivation for that if-condition was. But as no test
breaks, ...
llvm-svn: 220801 
							
						 
						
							2014-10-28 17:06:04 +00:00  
				
					
						
							
							
								 
						
							
								50d634b343 
								
							 
						 
						
							
							
								
								clang-format: [ObjC] Add separate flag to control indentation in blocks  
							
							... 
							
							
							
							Apparently, people are very much divided on what the "correct"
indentation is. So, best to give them a choice.
The new flag is called ObjCBlockIndentWidth and the default is now set
to the same value as IndentWidth for the pre-defined styles.
llvm-svn: 220784 
							
						 
						
							2014-10-28 16:53:38 +00:00  
				
					
						
							
							
								 
						
							
								e068ac77a2 
								
							 
						 
						
							
							
								
								clang-format: Don't break after very short return types.  
							
							... 
							
							
							
							Before:
  void
  SomeFunction(int parameter);
After:
  void SomeFunction(
      int parameter);
(Unless AlwaysBreakAfterDefinitionReturnType after type is set).
llvm-svn: 220686 
							
						 
						
							2014-10-27 17:13:59 +00:00  
				
					
						
							
							
								 
						
							
								5634619389 
								
							 
						 
						
							
							
								
								clang-format: Fix bad merging of lines in nested blocks.  
							
							... 
							
							
							
							Before:
  SomeFunction([]() {
  #define A a
    return 43; });
After:
  SomeFunction([]() {
  #define A a
    return 43;
  });
llvm-svn: 220684 
							
						 
						
							2014-10-27 16:31:46 +00:00  
				
					
						
							
							
								 
						
							
								f322eb5c45 
								
							 
						 
						
							
							
								
								clang-format: Fix incorrect space after "<".  
							
							... 
							
							
							
							Before:
  bool a = 2 <::SomeFunction();
After:
  bool a = 2 < ::SomeFunction();
llvm-svn: 220505 
							
						 
						
							2014-10-23 20:22:22 +00:00  
				
					
						
							
							
								 
						
							
								76284683f1 
								
							 
						 
						
							
							
								
								clang-format: Use AllowShortBlocksOnASingleLine for ObjC blocks, too.  
							
							... 
							
							
							
							llvm-svn: 220375 
							
						 
						
							2014-10-22 09:12:44 +00:00  
				
					
						
							
							
								 
						
							
								b52c69e567 
								
							 
						 
						
							
							
								
								clang-format: Fix broken test.  
							
							... 
							
							
							
							llvm-svn: 220374 
							
						 
						
							2014-10-22 09:01:12 +00:00  
				
					
						
							
							
								 
						
							
								e8a4939b77 
								
							 
						 
						
							
							
								
								clang-format: Fix incorrect trailing return arrow detection.  
							
							... 
							
							
							
							Before:
  auto doSomething(Aaaaaa* aaaaaa) -> decltype(aaaaaa -> f()) {}
After:
  auto doSomething(Aaaaaa* aaaaaa) -> decltype(aaaaaa->f()) {}
llvm-svn: 220373 
							
						 
						
							2014-10-22 08:42:58 +00:00  
				
					
						
							
							
								 
						
							
								f1f267b447 
								
							 
						 
						
							
							
								
								clang-format: [ObjC] Fix spacing in block variable parameters.  
							
							... 
							
							
							
							Before:
  { void (^block)(Object * x); }
After:
  { void (^block)(Object *x); }
llvm-svn: 220270 
							
						 
						
							2014-10-21 07:57:50 +00:00  
				
					
						
							
							
								 
						
							
								38efc13191 
								
							 
						 
						
							
							
								
								clang-format: Fix space in direct destructor calls.  
							
							... 
							
							
							
							Before:
  void F(int& i) { i. ~int(); }
After:
  void F(int& i) { i.~int(); }
Also, some cleanups.
llvm-svn: 220269 
							
						 
						
							2014-10-21 07:51:54 +00:00  
				
					
						
							
							
								 
						
							
								8835a32078 
								
							 
						 
						
							
							
								
								clang-format: Fix overloaded operator edge case.  
							
							... 
							
							
							
							Before:
  template <class F>
  void Call(F f) {
    f.template operator() <int>();
  }
After:
  template <class F>
  void Call(F f) {
    f.template operator()<int>();
  }
llvm-svn: 220202 
							
						 
						
							2014-10-20 13:56:30 +00:00  
				
					
						
							
							
								 
						
							
								7858079246 
								
							 
						 
						
							
							
								
								clang-format: [ObjC] Fix using selector names as macro arguments.  
							
							... 
							
							
							
							Before:
  [self aaaaa:MACRO(a, b :, c :)];
After:
  [self aaaaa:MACRO(a, b:, c:)];
llvm-svn: 220197 
							
						 
						
							2014-10-20 12:01:45 +00:00  
				
					
						
							
							
								 
						
							
								86296e36d7 
								
							 
						 
						
							
							
								
								clang-format: Fix indentation of struct definitions with array init.  
							
							... 
							
							
							
							Before:
  struct {
    int x;
    int y;
  } points[] = {
        {1, 2}, {2, 3},
  };
After:
  struct {
    int x;
    int y;
  } points[] = {
      {1, 2}, {2, 3},
  };
llvm-svn: 220195 
							
						 
						
							2014-10-20 11:12:51 +00:00  
				
					
						
							
							
								 
						
							
								da07a72928 
								
							 
						 
						
							
							
								
								clang-format: Prefer breaking before trailing return arrows.  
							
							... 
							
							
							
							Before:
  auto SomeFunction(
      A aaaaaaaaaaaaaaaaaaaaa) const -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {}
After:
  auto SomeFunction(A aaaaaaaaaaaaaaaaaaaaa) const
      -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {}
llvm-svn: 220043 
							
						 
						
							2014-10-17 14:37:40 +00:00  
				
					
						
							
							
								 
						
							
								1a31bab301 
								
							 
						 
						
							
							
								
								clang-format: Fix behavior with comments before conditional expressions  
							
							... 
							
							
							
							Before:
  SomeFunction(aaaaaaaaaaaaaaaaa,
               // comment.
                   ccccccccccccccccc ? aaaaaaaaaaaaaaaaaaaa
                                     : bbbbbbbbbbbbbbbbbbbb);
After:
  SomeFunction(aaaaaaaaaaaaaaaaa,
               // comment.
               ccccccccccccccccc ? aaaaaaaaaaaaaaaaaaaa : bbbbbbbbbbbbbbbbbbbb);
llvm-svn: 219921 
							
						 
						
							2014-10-16 09:10:11 +00:00  
				
					
						
							
							
								 
						
							
								ea772b4df2 
								
							 
						 
						
							
							
								
								clang-format: [ObjC] Fix method expression detection.  
							
							... 
							
							
							
							Before:
  return (a)[foo bar : baz];
After:
  return (a)[foo bar:baz];
llvm-svn: 219919 
							
						 
						
							2014-10-16 08:38:51 +00:00  
				
					
						
							
							
								 
						
							
								ec8e838baa 
								
							 
						 
						
							
							
								
								clang-format: [ObjC] Wrap ObjC method declarations before annotations.  
							
							... 
							
							
							
							Before:
  - (instancetype)initXxxxxxxxxxxxxxxxxxxxxxxxx:(id<x>)x
                                              y:(id<yyyyyyyyyyyyyyyyyyyy>)
                                                    y NS_DESIGNATED_INITIALIZER;
After:
  - (instancetype)initXxxxxxxxxxxxxxxxxxxxxxxxx:(id<x>)x
                                              y:(id<yyyyyyyyyyyyyyyyyyyy>)y
      NS_DESIGNATED_INITIALIZER;
llvm-svn: 219564 
							
						 
						
							2014-10-11 08:24:56 +00:00  
				
					
						
							
							
								 
						
							
								18210d7d2f 
								
							 
						 
						
							
							
								
								clang-format: Add option to control call argument bin-packing separately  
							
							... 
							
							
							
							This is desirable for the Chromium style guide:
http://www.chromium.org/developers/coding-style 
llvm-svn: 219400 
							
						 
						
							2014-10-09 09:52:05 +00:00  
				
					
						
							
							
								 
						
							
								4281c5ae01 
								
							 
						 
						
							
							
								
								clang-format: Fix bug with comments between non-trival parameters.  
							
							... 
							
							
							
							Before:
  SomeFunction(a, a,
               // comment
                      b + x);
After:
  SomeFunction(a, a,
               // comment
               b + x);
llvm-svn: 219209 
							
						 
						
							2014-10-07 14:45:34 +00:00  
				
					
						
							
							
								 
						
							
								a45eb4c000 
								
							 
						 
						
							
							
								
								clang-format: If in doubt, assume '+' is a binary operator.  
							
							... 
							
							
							
							Before:
  #define LENGTH(x, y) (x) - (y)+1
After:
  #define LENGTH(x, y) (x) - (y) + 1
llvm-svn: 219119 
							
						 
						
							2014-10-06 13:16:43 +00:00  
				
					
						
							
							
								 
						
							
								91881d99f7 
								
							 
						 
						
							
							
								
								clang-format: Fix GCC warning about implicit bool pointer conversion.  
							
							... 
							
							
							
							Introduced in r217880.
llvm-svn: 218597 
							
						 
						
							2014-09-29 08:07:46 +00:00  
				
					
						
							
							
								 
						
							
								7533b4dada 
								
							 
						 
						
							
							
								
								clang-format: Don't let -style=Chromium imply c++03 template formatting.  
							
							... 
							
							
							
							Chromium's now using some c++11 language features, so it's now fine that
clang-format produces vector<vector<int>>.
llvm-svn: 218392 
							
						 
						
							2014-09-24 17:17:32 +00:00  
				
					
						
							
							
								 
						
							
								540dbe29bc 
								
							 
						 
						
							
							
								
								clang-format: Prevent column layout if elements aren't uniform enough.  
							
							... 
							
							
							
							This patch only considers the difference between the length of the
shortest and longest element, but we might want to look at other
features (token count, etc.) in future.
Before:
  std::vector<MyValues> aaaaaaaaaaaaaaaaaaa{
      aaaaaaa,      aaaaaaaaaa,
      aaaaa,        aaaaaaaaaaaaaaa,
      aaa,          aaaaaaaaaa,
      a,            aaaaaaaaaaaaaaaaaaaaa,
      aaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaa,
      aaaaaaa,      a};
After:
  std::vector<MyValues> aaaaaaaaaaaaaaaaaaa{
      aaaaaaa, aaaaaaaaaa, aaaaa, aaaaaaaaaaaaaaa, aaa, aaaaaaaaaa, a,
      aaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaa,
      aaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaa, aaaaaaa, a};
llvm-svn: 218111 
							
						 
						
							2014-09-19 08:28:43 +00:00  
				
					
						
							
							
								 
						
							
								a41aa536dc 
								
							 
						 
						
							
							
								
								clang-format: Undo r216377.  
							
							... 
							
							
							
							It has proven to not be a food idea in many case.
llvm-svn: 218107 
							
						 
						
							2014-09-19 08:01:25 +00:00  
				
					
						
							
							
								 
						
							
								b23e20b7f5 
								
							 
						 
						
							
							
								
								clang-format: Allow unbroken ::: in inline assembly.  
							
							... 
							
							
							
							Before:
  asm volatile("nop" :: : "memory");
After:
  asm volatile("nop" ::: "memory");
Patch by Eugene Toder. Thank you.
llvm-svn: 217883 
							
						 
						
							2014-09-16 16:36:57 +00:00  
				
					
						
							
							
								 
						
							
								0085300a24 
								
							 
						 
						
							
							
								
								clang-format: Restructure and add missing tests.  
							
							... 
							
							
							
							Patch by Jean-Philippe Dufraigne, Thank you!
llvm-svn: 217880 
							
						 
						
							2014-09-16 16:22:30 +00:00  
				
					
						
							
							
								 
						
							
								ac043c900c 
								
							 
						 
						
							
							
								
								clang-format: Add option to break before non-assignment operators.  
							
							... 
							
							
							
							This will allow:
  int aaaaaaaaaaaaaa =
      bbbbbbbbbbbbbb
      + ccccccccccccccc;
llvm-svn: 217757 
							
						 
						
							2014-09-15 11:11:00 +00:00  
				
					
						
							
							
								 
						
							
								d6f17d83a3 
								
							 
						 
						
							
							
								
								clang-format: Improve line breaks at function calls.  
							
							... 
							
							
							
							Before:
  EXPECT_CALL(SomeObject, SomeFunction(Parameter)).Times(2).WillRepeatedly(
      Return(SomeValue));
After:
  EXPECT_CALL(SomeObject, SomeFunction(Parameter))
      .Times(2)
      .WillRepeatedly(Return(SomeValue));
llvm-svn: 217687 
							
						 
						
							2014-09-12 16:35:28 +00:00  
				
					
						
							
							
								 
						
							
								650ecb53ca 
								
							 
						 
						
							
							
								
								Fix bug 20892 - clang-format does not handle C-style comments  
							
							... 
							
							
							
							Summary:
http://llvm.org/bugs/show_bug.cgi?id=20892 
Add support of C-style formatting enabling/disabling directives. Now the following two styles are supported:
  // clang-format on
  /* clang-format on */
The flexibility in comments (support of extra spaces and/or slashes, etc.) is deliberately avoided to simplify search in large code bases.
Reviewers: djasper
Reviewed By: djasper
Subscribers: cfe-commits, curdeius, klimek
Differential Revision: http://reviews.llvm.org/D5309 
llvm-svn: 217588 
							
						 
						
							2014-09-11 14:47:20 +00:00  
				
					
						
							
							
								 
						
							
								b87899b567 
								
							 
						 
						
							
							
								
								clang-format: Add option to allow short case labels on a single line.  
							
							... 
							
							
							
							On a single line:
  switch (a) {
  case 1: x = 1; return;
  case 2: x = 2; return;
  default: break;
  }
Not on a single line:
  switch (a) {
  case 1:
    x = 1;
    return;
  case 2:
    x = 2;
    return;
  default:
    break;
  }
This partly addresses llvm.org/PR16535. In the long run, we probably want to
lay these out in columns.
llvm-svn: 217501 
							
						 
						
							2014-09-10 13:11:45 +00:00  
				
					
						
							
							
								 
						
							
								db986eb6bb 
								
							 
						 
						
							
							
								
								clang-format: Add an option 'SpaceAfterCStyleCast'.  
							
							... 
							
							
							
							This permits to add a space after closing parenthesis of a C-style cast.
Defaults to false to preserve old behavior.
Fixes llvm.org/PR19982.
Before:
  (int)i;
After:
  (int) i;
Patch by Marek Kurdej.
llvm-svn: 217022 
							
						 
						
							2014-09-03 07:37:29 +00:00  
				
					
						
							
							
								 
						
							
								73e171f76d 
								
							 
						 
						
							
							
								
								clang-format: Fix unary operator detection in corner case.  
							
							... 
							
							
							
							Before:
  decltype(* ::std::declval<const T &>()) void F();
After:
  decltype(*::std::declval<const T &>()) void F();
llvm-svn: 216724 
							
						 
						
							2014-08-29 12:54:38 +00:00