diff options
author | Daniel Jasper <djasper@google.com> | 2013-01-14 15:40:57 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-01-14 15:40:57 +0000 |
commit | 39825eaff580972cc1d2913bd4278e9b581d7304 (patch) | |
tree | 55204544275b1ae5efd7917d4f8deb74651ae12a /clang/lib | |
parent | 99d91289b6a4fe9382044636f2ebc9407da75833 (diff) | |
download | bcm5719-llvm-39825eaff580972cc1d2913bd4278e9b581d7304.tar.gz bcm5719-llvm-39825eaff580972cc1d2913bd4278e9b581d7304.zip |
Put simple preprocessor directives on a single line.
Before: #define A \
A
After: #define A A
llvm-svn: 172423
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Format/Format.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index ceeb5d04285..c8dc7bf55c1 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -185,6 +185,7 @@ static void replacePPWhitespace( static bool fitsIntoLimit(const AnnotatedToken &RootToken, unsigned Limit, unsigned *Length = 0) { unsigned Columns = RootToken.FormatTok.TokenLength; + if (Columns > Limit) return false; const AnnotatedToken *Tok = &RootToken; while (!Tok->Children.empty()) { Tok = &Tok->Children[0]; @@ -1415,10 +1416,25 @@ private: tryMergeSimpleBlock(I, E, Limit); } else if (I->First.is(tok::kw_if)) { tryMergeSimpleIf(I, E, Limit); + } else if (I->InPPDirective && (I->First.FormatTok.HasUnescapedNewline || + I->First.FormatTok.IsFirst)) { + tryMergeSimplePPDirective(I, E, Limit); } return true; } + void tryMergeSimplePPDirective(std::vector<AnnotatedLine>::iterator &I, + std::vector<AnnotatedLine>::iterator E, + unsigned Limit) { + AnnotatedLine &Line = *I; + if (!(I + 1)->InPPDirective) return; + if (I + 2 != E && (I + 2)->InPPDirective && + !(I + 2)->First.FormatTok.HasUnescapedNewline) + return; + if (!fitsIntoLimit((I + 1)->First, Limit)) return; + join(Line, *(++I)); + } + void tryMergeSimpleIf(std::vector<AnnotatedLine>::iterator &I, std::vector<AnnotatedLine>::iterator E, unsigned Limit) { |