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 | e0b15ea7edeceb41decddfeabaf6fac935ed7baf (patch) | |
tree | 3fe021e7d898e5ea132bcf16b613710bd1eea48a /lib/Format | |
parent | d3e8074ac9b8b2c3068b6b1dab8867f43b902715 (diff) |
Put simple preprocessor directives on a single line.
Before: #define A \
A
After: #define A A
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172423 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format')
-rw-r--r-- | lib/Format/Format.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index ceeb5d0428..c8dc7bf55c 100644 --- a/lib/Format/Format.cpp +++ b/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) { |