[clang] clang-format: Add "AllowShortNamespacesOnASingleLine" option (PR #105597)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 12 23:39:49 PDT 2024
================
@@ -616,6 +626,62 @@ class LineJoiner {
return 1;
}
+ unsigned tryMergeNamespace(SmallVectorImpl<AnnotatedLine *>::const_iterator I,
+ SmallVectorImpl<AnnotatedLine *>::const_iterator E,
+ unsigned Limit) {
+ if (Limit == 0)
+ return 0;
+ if (I[1]->InPPDirective != (*I)->InPPDirective ||
+ (I[1]->InPPDirective && I[1]->First->HasUnescapedNewline)) {
+ return 0;
+ }
+ if (I + 2 == E || I[2]->Type == LT_Invalid)
+ return 0;
+
+ Limit = limitConsideringMacros(I + 1, E, Limit);
+
+ if (!nextTwoLinesFitInto(I, Limit))
+ return 0;
+
+ // Check if it's a namespace inside a namespace, and call recursively if so
+ // '3' is the sizes of the whitespace and closing brace for " _inner_ }".
+ if (I[1]->First->is(tok::kw_namespace)) {
+ if (I[1]->Last->is(TT_LineComment))
+ return 0;
+
+ const unsigned InnerLimit = Limit - I[1]->Last->TotalLength - 3;
+ const unsigned MergedLines = tryMergeNamespace(I + 1, E, InnerLimit);
+ if (!MergedLines)
----------------
owenca wrote:
I would assert it though.
```suggestion
assert(Limit >= I[1]->Last->TotalLength + 3);
const unsigned InnerLimit = Limit - I[1]->Last->TotalLength - 3;
const unsigned MergedLines = tryMergeNamespace(I + 1, E, InnerLimit);
if (MergedLines == 0)
```
https://github.com/llvm/llvm-project/pull/105597
More information about the cfe-commits
mailing list