Author: Marek Kurdej Date: 2022-02-11T15:20:11+01:00 New Revision: 23f27850b1e00e66ba19fc844ad8f2bd70268536
URL: https://github.com/llvm/llvm-project/commit/23f27850b1e00e66ba19fc844ad8f2bd70268536 DIFF: https://github.com/llvm/llvm-project/commit/23f27850b1e00e66ba19fc844ad8f2bd70268536.diff LOG: [clang-format] Avoid multiple calls to FormatToken::getNextNonComment(). NFC. Added: Modified: clang/lib/Format/ContinuationIndenter.cpp clang/lib/Format/TokenAnnotator.cpp clang/lib/Format/UnwrappedLineFormatter.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 871194f93f20..93d409118128 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -1221,10 +1221,17 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State, if (Current.is(TT_ArraySubscriptLSquare) && State.Stack.back().StartOfArraySubscripts == 0) State.Stack.back().StartOfArraySubscripts = State.Column; - if (Current.is(TT_ConditionalExpr) && Current.is(tok::question) && - ((Current.MustBreakBefore) || - (Current.getNextNonComment() && - Current.getNextNonComment()->MustBreakBefore))) + + auto IsWrappedConditional = [](const FormatToken &Tok) { + if (!(Tok.is(TT_ConditionalExpr) && Tok.is(tok::question))) + return false; + if (Tok.MustBreakBefore) + return true; + + const FormatToken *Next = Tok.getNextNonComment(); + return Next && Next->MustBreakBefore; + }; + if (IsWrappedConditional(Current)) State.Stack.back().IsWrappedConditional = true; if (Style.BreakBeforeTernaryOperators && Current.is(tok::question)) State.Stack.back().QuestionColumn = State.Column; diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index ef4ce3483fcf..70f92c26fa8d 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -3598,7 +3598,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line, if (Right.is(tok::colon)) { if (Line.First->isOneOf(tok::kw_default, tok::kw_case)) return Style.SpaceBeforeCaseColon; - if (!Right.getNextNonComment() || Right.getNextNonComment()->is(tok::semi)) + const FormatToken *Next = Right.getNextNonComment(); + if (!Next || Next->is(tok::semi)) return false; if (Right.is(TT_ObjCMethodExpr)) return false; diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index 9f49410f741a..88efda487eeb 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -700,9 +700,13 @@ class LineJoiner { if (Line.Last->is(tok::l_brace)) { FormatToken *Tok = I[1]->First; - if (Tok->is(tok::r_brace) && !Tok->MustBreakBefore && - (Tok->getNextNonComment() == nullptr || - Tok->getNextNonComment()->is(tok::semi))) { + auto ShouldMerge = [Tok]() { + if (Tok->isNot(tok::r_brace) || Tok->MustBreakBefore) + return false; + const FormatToken *Next = Tok->getNextNonComment(); + return !Next || Next->is(tok::semi); + }; + if (ShouldMerge()) { // We merge empty blocks even if the line exceeds the column limit. Tok->SpacesRequiredBefore = Style.SpaceInEmptyBlock ? 1 : 0; Tok->CanBreakBefore = true; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits