diff options
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r-- | lib/Format/Format.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index aa715e692d..a17823f4ce 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -985,14 +985,6 @@ private: !(State.NextToken->is(tok::r_brace) && State.Stack.back().BreakBeforeClosingBrace)) return false; - // This prevents breaks like: - // ... - // SomeParameter, OtherParameter).DoSomething( - // ... - // As they hide "DoSomething" and generally bad for readability. - if (State.NextToken->Parent->is(tok::l_paren) && - State.ParenLevel <= State.StartOfLineLevel) - return false; // Trying to insert a parameter on a new line if there are already more than // one parameter on the current line is bin packing. if (State.Stack.back().HasMultiParameterLine && @@ -1031,9 +1023,25 @@ private: return true; if (State.NextToken->Type == TT_InlineASMColon) return true; + // This prevents breaks like: + // ... + // SomeParameter, OtherParameter).DoSomething( + // ... + // As they hide "DoSomething" and generally bad for readability. + if (State.NextToken->isOneOf(tok::period, tok::arrow) && + getRemainingLength(State) + State.Column > getColumnLimit() && + State.ParenLevel < State.StartOfLineLevel) + return true; return false; } + // Returns the total number of columns required for the remaining tokens. + unsigned getRemainingLength(const LineState &State) { + if (State.NextToken && State.NextToken->Parent) + return Line.Last->TotalLength - State.NextToken->Parent->TotalLength; + return 0; + } + FormatStyle Style; SourceManager &SourceMgr; const AnnotatedLine &Line; |