[clang] [clang-format] Support BraceWrapping.AfterNamespace with AllowShortNamespacesOnASingleLine (PR #123010)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Sat Feb 8 18:47:15 PST 2025
================
@@ -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
More information about the cfe-commits
mailing list