diff options
author | Daniel Jasper <djasper@google.com> | 2013-02-15 11:07:25 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-02-15 11:07:25 +0000 |
commit | 7878a7bdebceaa8d8a893abb295027cde619e467 (patch) | |
tree | da8028738de74974b5dfc15f60067f25b4cc169c /lib/Format/Format.cpp | |
parent | c1ea4b96adca4767991bb0a7b21052cef4db059c (diff) |
Prevent only breaking before "?" in conditional expressions.
This is almost always more readable.
Before:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
? aaaaaaaaaaaaaaaaaaaaaaaaaaa : aaaaaaaaaaaaaaaaaaaaaaaaaaa;
After:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
? aaaaaaaaaaaaaaaaaaaaaaaaaaa
: aaaaaaaaaaaaaaaaaaaaaaaaaaa;
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175262 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r-- | lib/Format/Format.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 92c138aa7e..4b63aa9322 100644 --- a/lib/Format/Format.cpp +++ b/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; } |