================ @@ -628,28 +632,36 @@ class LineJoiner { unsigned tryMergeNamespace(ArrayRef<AnnotatedLine *>::const_iterator I, ArrayRef<AnnotatedLine *>::const_iterator E, - unsigned Limit) { + unsigned Limit, bool OpenBraceWrapped) { if (Limit == 0) return 0; - assert(I[1]); - const auto &L1 = *I[1]; + // The merging code is relative to the opening namespace brace, which could + // be either on the first or second line due to the brace wrapping rules. + const auto OpeningBraceLineOffset = OpenBraceWrapped ? 1 : 0; + const auto BraceOpenLine = I + OpeningBraceLineOffset; + + if (std::distance(BraceOpenLine, E) <= 2) + return 0; + + if (BraceOpenLine[0]->Last->is(TT_LineComment)) + return 0; + + assert(BraceOpenLine[1]); + const auto &L1 = *BraceOpenLine[1]; if (L1.InPPDirective != (*I)->InPPDirective || (L1.InPPDirective && L1.First->HasUnescapedNewline)) { return 0; } - if (std::distance(I, E) <= 2) - return 0; - - assert(I[2]); - const auto &L2 = *I[2]; + assert(BraceOpenLine[2]); + const auto &L2 = *BraceOpenLine[2]; if (L2.Type == LT_Invalid) return 0; Limit = limitConsideringMacros(I + 1, E, Limit); - if (!nextTwoLinesFitInto(I, Limit)) + if (!nextNLinesFitInto(I, I + OpeningBraceLineOffset + 2, Limit)) ---------------- owenca wrote:
```suggestion const auto LinesToBeMerged = OpenBraceWrapped + 2; if (!nextNLinesFitInto(I, I + LinesToBeMerged, Limit)) ``` https://github.com/llvm/llvm-project/pull/123010 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits