aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-01-09 15:25:02 +0000
committerManuel Klimek <klimek@google.com>2013-01-09 15:25:02 +0000
commit526ed11ad9743c773df76bd1649d33fb92c2b8cb (patch)
treea2043c193caafb553102c6c1f413db8cdc404a87 /lib/Format/Format.cpp
parent35eb8c3e12cac22f91d1cd4c74ae092ebc94fc40 (diff)
Enables layouting unwrapped lines around preprocessor directives.
Previously, we'd always start at indent level 0 after a preprocessor directive, now we layout the following snippet (column limit 69) as follows: functionCallTo(someOtherFunction( withSomeParameters, whichInSequence, areLongerThanALine(andAnotherCall, B withMoreParamters, whichStronglyInfluenceTheLayout), andMoreParameters), trailing); Note that the different jumping indent is a different issue that will be addressed separately. This is the first step towards handling #ifdef->#else->#endif chains correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171974 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r--lib/Format/Format.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 1854d70d90..e271ba2e13 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -803,18 +803,21 @@ public:
void calculateExtraInformation(AnnotatedToken &Current) {
Current.SpaceRequiredBefore = spaceRequiredBefore(Current);
- if (Current.Type == TT_CtorInitializerColon || Current.Parent->Type ==
- TT_LineComment || (Current.is(tok::string_literal) &&
- Current.Parent->is(tok::string_literal))) {
- Current.MustBreakBefore = true;
- } else if (Current.is(tok::at) && Current.Parent->Parent->is(tok::at)) {
- // Don't put two objc's '@' on the same line. This could happen,
- // as in, @optional @property ...
+ if (Current.FormatTok.MustBreakBefore) {
Current.MustBreakBefore = true;
} else {
- Current.MustBreakBefore = false;
+ if (Current.Type == TT_CtorInitializerColon || Current.Parent->Type ==
+ TT_LineComment || (Current.is(tok::string_literal) &&
+ Current.Parent->is(tok::string_literal))) {
+ Current.MustBreakBefore = true;
+ } else if (Current.is(tok::at) && Current.Parent->Parent->is(tok::at)) {
+ // Don't put two objc's '@' on the same line. This could happen,
+ // as in, @optional @property ...
+ Current.MustBreakBefore = true;
+ } else {
+ Current.MustBreakBefore = false;
+ }
}
-
Current.CanBreakBefore = Current.MustBreakBefore || canBreakBefore(Current);
if (!Current.Children.empty())