#
cb45bc18 |
| 15-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Unified token breaking logic for strings and block comments.
Summary: Both strings and block comments are broken into lines in breakProtrudingToken. Logic specific for strings or block comments is a
Unified token breaking logic for strings and block comments.
Summary: Both strings and block comments are broken into lines in breakProtrudingToken. Logic specific for strings or block comments is abstracted in implementations of the BreakToken interface. Among other goodness, this change fixes placement of backslashes after a block comment inside a preprocessor directive (see removed FIXMEs in unit tests).
The code is far from being polished, and some parts of it will be changed for line comments support.
Reviewers: klimek
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D665
llvm-svn: 179526
show more ...
|
#
1a18c404 |
| 12-Apr-2013 |
Manuel Klimek <klimek@google.com> |
Revamps structural error detection / handling.
Previously we'd only detect structural errors on the very first level. This leads to incorrectly balanced braces not being discovered, and thus incorre
Revamps structural error detection / handling.
Previously we'd only detect structural errors on the very first level. This leads to incorrectly balanced braces not being discovered, and thus incorrect indentation.
This change fixes the problem by: - changing the parser to use an error state that can be detected anywhere inside the productions, for example if we get an eof on SOME_MACRO({ some block <eof> - previously we'd never break lines when we discovered a structural error; now we break even in the case of a structural error if there are two unwrapped lines within the same line; thus, void f() { while (true) { g(); y(); } } will still be re-formatted, even if there's missing braces somewhere in the file - still exclude macro definitions from generating structural error; macro definitions are inbalanced snippets
llvm-svn: 179379
show more ...
|
#
6728fc11 |
| 11-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Change clang-format's affinity for breaking after return types.
Function declarations are now broken with the following preferences: 1) break amongst arguments. 2) break after return type. 3) break
Change clang-format's affinity for breaking after return types.
Function declarations are now broken with the following preferences: 1) break amongst arguments. 2) break after return type. 3) break after (. 4) break before after nested name specifiers.
Options #2 or #3 are preferred over #1 only if a substantial number of lines can be saved by that.
llvm-svn: 179287
show more ...
|
#
6e8f4edf |
| 11-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix formatting of overloaded assignment operators.
Before: SomeType &operator=(const SomeType & S); After: SomeType &operator=(const SomeType &S); llvm-svn: 179270
|
#
a3ff45eb |
| 10-Apr-2013 |
Manuel Klimek <klimek@google.com> |
Fixes recovering from errors when parsing braced init lists.
Before we would build huge unwrapped lines which take a long time to optimze.
llvm-svn: 179168
|
#
c04baae3 |
| 10-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix labels with trailing comments and cleanup.
Before: class A { public : // test };
After: class A { public: // test };
Also remove duplicate methods calculating properties of AnnotatedTokens and
Fix labels with trailing comments and cleanup.
Before: class A { public : // test };
After: class A { public: // test };
Also remove duplicate methods calculating properties of AnnotatedTokens and make them members of AnnotatedTokens so that they are in a common place.
llvm-svn: 179167
show more ...
|
#
b67cc423 |
| 09-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix comments before labels.
Before: switch (...) { // a // b // c case first: break; }
After: switch (...) { // a // b // c case first: break; }
llvm-svn: 179107
|
#
a04e5e21 |
| 09-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Again macros without trailing semicolons: don't care about declaration context.
Summary: Some codebases use these kinds of macros in functions, e.g. Chromium's IPC_BEGIN_MESSAGE_MAP, IPC_BEGIN_MESSA
Again macros without trailing semicolons: don't care about declaration context.
Summary: Some codebases use these kinds of macros in functions, e.g. Chromium's IPC_BEGIN_MESSAGE_MAP, IPC_BEGIN_MESSAGE_HANDLER, etc.
Reviewers: djasper, klimek
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D645
llvm-svn: 179099
show more ...
|
#
de64427a |
| 08-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Recognize function-like macro usages without semicolon in declaration context.
Summary: Preserve line breaks after function-like macro usages without semicolon, e.g.:
QQQ(xxx) class X { };
Reviewe
Recognize function-like macro usages without semicolon in declaration context.
Summary: Preserve line breaks after function-like macro usages without semicolon, e.g.:
QQQ(xxx) class X { };
Reviewers: djasper, klimek
Reviewed By: djasper
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D638
llvm-svn: 179064
show more ...
|
#
6bee682f |
| 08-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Revamp indentation behavior for complex binary expressions.
The idea is to indent according to operator precedence and pretty much identical to how stuff would be indented with parenthesis.
Before:
Revamp indentation behavior for complex binary expressions.
The idea is to indent according to operator precedence and pretty much identical to how stuff would be indented with parenthesis.
Before: bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ccccccccccccccccccccccccccccccccccccccccc;
After: bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ccccccccccccccccccccccccccccccccccccccccc;
llvm-svn: 179049
show more ...
|
#
e7de2a30 |
| 08-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Revert accidental commit r179015.
llvm-svn: 179016
|
#
bd16eea5 |
| 08-Apr-2013 |
Daniel Jasper <djasper@google.com> |
x
llvm-svn: 179015
|
#
83193600 |
| 05-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Allow breaking after 'class' for classes with looong names.
(Don't ask, this was a user request).
llvm-svn: 178888
|
#
54ac8208 |
| 05-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix bad formatting of overloaded operator definitions.
Before: bool operator< (const aaaaaaaaaaaaaaaaaaaaa &left, const aaaaaaaaaaaaaaaaaaaaa &right) { return left.group < right.group; }
Afte
Fix bad formatting of overloaded operator definitions.
Before: bool operator< (const aaaaaaaaaaaaaaaaaaaaa &left, const aaaaaaaaaaaaaaaaaaaaa &right) { return left.group < right.group; }
After: bool operator<(const aaaaaaaaaaaaaaaaaaaaa &left, const aaaaaaaaaaaaaaaaaaaaa &right) { return left.group < right.group; }
llvm-svn: 178887
show more ...
|
#
31c96b9c |
| 05-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Improve formatting of multi-variable DeclStmts.
This fixed llvm.org/PR15670
Before: aaaaaaaaa a = aaaaaaaaaaaaaaaaaaaa, b = bbbbbbbbbbbbbbbbbbbb, c = ccccccccccc
Improve formatting of multi-variable DeclStmts.
This fixed llvm.org/PR15670
Before: aaaaaaaaa a = aaaaaaaaaaaaaaaaaaaa, b = bbbbbbbbbbbbbbbbbbbb, c = cccccccccccccccccccc, d = dddddddddddddddddddd; aaaaaaaaa *a = aaaaaaaaaaaaaaaaaaa, *b = bbbbbbbbbbbbbbbbbbb, *c = ccccccccccccccccccc, *d = ddddddddddddddddddd;
After: aaaaaaaaa a = aaaaaaaaaaaaaaaaaaaa, b = bbbbbbbbbbbbbbbbbbbb, c = cccccccccccccccccccc, d = dddddddddddddddddddd; aaaaaaaaa *a = aaaaaaaaaaaaaaaaaaa, *b = bbbbbbbbbbbbbbbbbbb, *c = ccccccccccccccccccc, *d = ddddddddddddddddddd;
llvm-svn: 178860
show more ...
|
#
a628c98b |
| 03-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Improve formatting of for loops and multi-variable DeclStmts.
This combines several related changes: a) Don't break before after the variable types in for loops with a single variable. b) Better
Improve formatting of for loops and multi-variable DeclStmts.
This combines several related changes: a) Don't break before after the variable types in for loops with a single variable. b) Better indent DeclStmts defining multiple variables.
Before: bool aaaaaaaaaaaaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaa), bbbbbbbbbbbbbbbbbbbbbbbbb = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(bbbbbbbbbbbbbbbb); for (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaa = aaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaa; aaaaaaaaaaa != aaaaaaaaaaaaaaaaaaa; ++aaaaaaaaaaa) { }
After: bool aaaaaaaaaaaaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaa), bbbbbbbbbbbbbbbbbbbbbbbbb = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(bbbbbbbbbbbbbbbb); for (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaa = aaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaa; aaaaaaaaaaa != aaaaaaaaaaaaaaaaaaa; ++aaaaaaaaaaa) { }
llvm-svn: 178641
show more ...
|
#
b1be9d6e |
| 03-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Even better way to handle comments adjacent to preprocessor directives.
Summary: It turns out that we don't need to store CommentsBeforeNextToken in the line state, but rather flush them before we s
Even better way to handle comments adjacent to preprocessor directives.
Summary: It turns out that we don't need to store CommentsBeforeNextToken in the line state, but rather flush them before we start parsing preprocessor directives. This fixes wrong comment indentation in code blocks in macro calls (the test is included).
Reviewers: klimek
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D617
llvm-svn: 178638
show more ...
|
#
c238c87e |
| 02-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix some inconsistent use of indentation.
Basically we have always special-cased the top-level statement of an unwrapped line (the one with ParenLevel == 0) and that lead to several inconsistencies.
Fix some inconsistent use of indentation.
Basically we have always special-cased the top-level statement of an unwrapped line (the one with ParenLevel == 0) and that lead to several inconsistencies. All added tests were formatted in a strange way, for example:
Before: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(); if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()) { }
After: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(); if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()) { }
llvm-svn: 178542
show more ...
|
#
b5dad75e |
| 02-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Alternative handling of comments adjacent to preprocessor directives.
Summary: Store comments in ScopedLineState
Reviewers: klimek, djasper
Reviewed By: klimek
CC: cfe-commits
Differential Revis
Alternative handling of comments adjacent to preprocessor directives.
Summary: Store comments in ScopedLineState
Reviewers: klimek, djasper
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D609
llvm-svn: 178537
show more ...
|
#
6e42b1eb |
| 01-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Improve formatting of function types.
Before: void * (*a)(int *, SomeType *); After: void *(*a)(int *, SomeType *); llvm-svn: 178474
|
#
efd98385 |
| 28-Mar-2013 |
Alexander Kornienko <alexfh@google.com> |
Fixed handling of comments before preprocessor directives.
Comments before preprocessor directives used to be stored with InPPDirective flag set, which prevented correct comment splitting in this ca
Fixed handling of comments before preprocessor directives.
Comments before preprocessor directives used to be stored with InPPDirective flag set, which prevented correct comment splitting in this case. Fixed by flushing comments before switching on InPPDirective. Added a new test and fixed one of the existing tests.
llvm-svn: 178261
show more ...
|
#
fd433365 |
| 27-Mar-2013 |
Alexander Kornienko <alexfh@google.com> |
Insert extra new line before access specifiers.
Summary: Insert extra new line before access specifiers.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: ht
Insert extra new line before access specifiers.
Summary: Insert extra new line before access specifiers.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D581
llvm-svn: 178149
show more ...
|
#
ffd6d04a |
| 27-Mar-2013 |
Alexander Kornienko <alexfh@google.com> |
Split line comments
Summary: Split line comments that exceed column limit + fixed leading whitespace handling when splitting block comments.
Reviewers: djasper, klimek
Reviewed By: djasper
CC: cf
Split line comments
Summary: Split line comments that exceed column limit + fixed leading whitespace handling when splitting block comments.
Reviewers: djasper, klimek
Reviewed By: djasper
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D577
llvm-svn: 178133
show more ...
|
#
dd9276e4 |
| 22-Mar-2013 |
Daniel Jasper <djasper@google.com> |
Better fix for r177725.
It turns out that
-foo;
can be an objective C method declaration. So instead of the previous solution, recognize objective C methods only if we are in a declaration scope.
Better fix for r177725.
It turns out that
-foo;
can be an objective C method declaration. So instead of the previous solution, recognize objective C methods only if we are in a declaration scope.
llvm-svn: 177740
show more ...
|
#
bc0fa39d |
| 22-Mar-2013 |
Daniel Jasper <djasper@google.com> |
Align comments to surrounding unformatted comments.
Before: int a; // not formatted // formatting this line only
After: int a; // not formatted // formatting this line only
This makes clang
Align comments to surrounding unformatted comments.
Before: int a; // not formatted // formatting this line only
After: int a; // not formatted // formatting this line only
This makes clang-format stable independent of whether the whole file or single lines are formatted in most cases.
llvm-svn: 177739
show more ...
|