summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-02-15 11:07:25 +0000
committerDaniel Jasper <djasper@google.com>2013-02-15 11:07:25 +0000
commit54a8602aefbd75e09fa5371f28f3eeb529b6d9f2 (patch)
tree94a5d994eb3e3412eff5932200e1db23ff0fe19e /clang/lib/Format/Format.cpp
parent3533ad6bbdf7256b6929f4b48dd92cddf3e5f165 (diff)
downloadbcm5719-llvm-54a8602aefbd75e09fa5371f28f3eeb529b6d9f2.tar.gz
bcm5719-llvm-54a8602aefbd75e09fa5371f28f3eeb529b6d9f2.zip
Prevent only breaking before "?" in conditional expressions.
This is almost always more readable. Before: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaaaaaaa; After: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaaaaaaa; llvm-svn: 175262
Diffstat (limited to 'clang/lib/Format/Format.cpp')
-rw-r--r--clang/lib/Format/Format.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 92c138aa7ef..4b63aa93220 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -290,7 +290,8 @@ private:
: Indent(Indent), LastSpace(LastSpace), FirstLessLess(0),
BreakBeforeClosingBrace(false), QuestionColumn(0),
AvoidBinPacking(AvoidBinPacking), BreakBeforeParameter(false),
- HasMultiParameterLine(HasMultiParameterLine), ColonPos(0) {
+ HasMultiParameterLine(HasMultiParameterLine), ColonPos(0),
+ BreakBeforeThirdOperand(false) {
}
/// \brief The position to which a specific parenthesis level needs to be
@@ -333,6 +334,9 @@ private:
/// \brief The position of the colon in an ObjC method declaration/call.
unsigned ColonPos;
+
+ /// \brief Break before third operand in ternary expression.
+ bool BreakBeforeThirdOperand;
bool operator<(const ParenState &Other) const {
if (Indent != Other.Indent)
@@ -353,6 +357,8 @@ private:
return HasMultiParameterLine;
if (ColonPos != Other.ColonPos)
return ColonPos < Other.ColonPos;
+ if (BreakBeforeThirdOperand != Other.BreakBeforeThirdOperand)
+ return BreakBeforeThirdOperand;
return false;
}
};
@@ -465,6 +471,8 @@ private:
State.Column = State.Stack.back().Indent;
}
+ if (Current.is(tok::question))
+ State.Stack.back().BreakBeforeThirdOperand = true;
if (Previous.is(tok::comma) && !State.Stack.back().AvoidBinPacking)
State.Stack.back().BreakBeforeParameter = false;
@@ -794,6 +802,9 @@ private:
(State.NextToken->Parent->ClosesTemplateDeclaration &&
State.ParenLevel == 0)))
return true;
+ if (State.NextToken->is(tok::colon) &&
+ State.Stack.back().BreakBeforeThirdOperand)
+ return true;
return false;
}
OpenPOWER on IntegriCloud