=?utf-8?q?Björn_Schäpers?= <bjo...@hazardy.de> Message-ID: In-Reply-To: <llvm/llvm-project/pull/68743/cl...@github.com>
================ @@ -1118,16 +1121,39 @@ void WhitespaceManager::alignTrailingComments() { } } - // We don't want to align namespace end comments. - const bool DontAlignThisComment = - I > 0 && C.NewlinesBefore == 0 && - Changes[I - 1].Tok->is(TT_NamespaceRBrace); - if (Style.AlignTrailingComments.Kind == FormatStyle::TCAS_Never || - DontAlignThisComment) { + // We don't want to align comments which end a scope, which are here + // identified by most closing braces. + const bool DontAlignThisComment = [&] { + if (I == 0 || C.NewlinesBefore > 0) + return false; + const auto *Tok = Changes[I - 1].Tok; + if (Tok->is(tok::semi)) { + Tok = Tok->getPreviousNonComment(); + if (!Tok) + return false; + } + if (Tok->isNot(tok::r_brace)) { + if (Tok->isNot(tok::r_paren) || !Tok->MatchingParen) + return false; + auto BeforeParent = Tok->MatchingParen->getPreviousNonComment(); + return BeforeParent && BeforeParent->is(TT_DoWhile); + } + + for (auto Prev = Tok->getPreviousNonComment(); + Prev && Prev->is(tok::r_brace); + Prev = Tok->getPreviousNonComment()) { + Tok = Prev; + } ---------------- owenca wrote: ```suggestion if (Tok->is(tok::r_paren)) { // Back up past the parentheses and a `TT_DoWhile` that may precede. Tok = Tok->MatchingParen; if (!Tok) return false; Tok = Tok->getPreviousNonComment(); if (!Tok) return false; if (Tok->is(TT_DoWhile)) { Tok = Tok->getPreviousNonComment(); if (!Tok) return false; } } if (Tok->isNot(tok::r_brace)) return false; while (Tok->Previous && Tok->Previous->is(tok::r_brace)) Tok = Tok->Previous; ``` Because we should also cover `}(); //` for lambdas. FWIW, I don't think we need to use `getPreviousNonComment()` when looking for consecutive closing braces unless we want to handle something like `} /* foo */ } //`. https://github.com/llvm/llvm-project/pull/68743 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits