forked from OSchip/llvm-project
[clang-format] Make NoLineBreakFormatter respect MustBreakBefore
Summary: This patch makes NoLineBreakFormatter to insert a break before tokens where MustBreakBefore is true. Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D33238 llvm-svn: 303332
This commit is contained in:
parent
f98b9ac5da
commit
994b6c9b8e
|
@ -2472,22 +2472,25 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
|||
|
||||
// If the last token before a '}', ']', or ')' is a comma or a trailing
|
||||
// comment, the intention is to insert a line break after it in order to make
|
||||
// shuffling around entries easier.
|
||||
const FormatToken *BeforeClosingBrace = nullptr;
|
||||
if ((Left.isOneOf(tok::l_brace, TT_ArrayInitializerLSquare) ||
|
||||
(Style.Language == FormatStyle::LK_JavaScript &&
|
||||
Left.is(tok::l_paren))) &&
|
||||
Left.BlockKind != BK_Block && Left.MatchingParen)
|
||||
BeforeClosingBrace = Left.MatchingParen->Previous;
|
||||
else if (Right.MatchingParen &&
|
||||
(Right.MatchingParen->isOneOf(tok::l_brace,
|
||||
TT_ArrayInitializerLSquare) ||
|
||||
(Style.Language == FormatStyle::LK_JavaScript &&
|
||||
Right.MatchingParen->is(tok::l_paren))))
|
||||
BeforeClosingBrace = &Left;
|
||||
if (BeforeClosingBrace && (BeforeClosingBrace->is(tok::comma) ||
|
||||
BeforeClosingBrace->isTrailingComment()))
|
||||
return true;
|
||||
// shuffling around entries easier. Import statements, especially in
|
||||
// JavaScript, can be an exception to this rule.
|
||||
if (Style.JavaScriptWrapImports || Line.Type != LT_ImportStatement) {
|
||||
const FormatToken *BeforeClosingBrace = nullptr;
|
||||
if ((Left.isOneOf(tok::l_brace, TT_ArrayInitializerLSquare) ||
|
||||
(Style.Language == FormatStyle::LK_JavaScript &&
|
||||
Left.is(tok::l_paren))) &&
|
||||
Left.BlockKind != BK_Block && Left.MatchingParen)
|
||||
BeforeClosingBrace = Left.MatchingParen->Previous;
|
||||
else if (Right.MatchingParen &&
|
||||
(Right.MatchingParen->isOneOf(tok::l_brace,
|
||||
TT_ArrayInitializerLSquare) ||
|
||||
(Style.Language == FormatStyle::LK_JavaScript &&
|
||||
Right.MatchingParen->is(tok::l_paren))))
|
||||
BeforeClosingBrace = &Left;
|
||||
if (BeforeClosingBrace && (BeforeClosingBrace->is(tok::comma) ||
|
||||
BeforeClosingBrace->isTrailingComment()))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Right.is(tok::comment))
|
||||
return Left.BlockKind != BK_BracedInit &&
|
||||
|
|
|
@ -611,7 +611,8 @@ public:
|
|||
LineState State = Indenter->getInitialState(FirstIndent, &Line, DryRun);
|
||||
while (State.NextToken) {
|
||||
formatChildren(State, /*Newline=*/false, DryRun, Penalty);
|
||||
Indenter->addTokenToState(State, /*Newline=*/false, DryRun);
|
||||
Indenter->addTokenToState(
|
||||
State, /*Newline=*/State.NextToken->MustBreakBefore, DryRun);
|
||||
}
|
||||
return Penalty;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue