================
@@ -485,20 +493,33 @@ class LineJoiner {
                  : 0;
     }
 
+    const bool TryMergeShortRecord = [this, &NextLine]() {
+      switch (Style.AllowShortRecordOnASingleLine) {
+      case FormatStyle::SRS_Never:
+        return false;
+      case FormatStyle::SRS_EmptyIfAttached:
+      case FormatStyle::SRS_Empty:
+        return NextLine.First->is(tok::r_brace);
+      case FormatStyle::SRS_Always:
+        return true;
+      }
+    }() && !Style.BraceWrapping.SplitEmptyRecord;
+
     if (TheLine->Last->is(tok::l_brace)) {
       bool ShouldMerge = false;
       // Try to merge records.
       if (TheLine->Last->is(TT_EnumLBrace)) {
         ShouldMerge = Style.AllowShortEnumsOnASingleLine;
       } else if (TheLine->Last->is(TT_CompoundRequirementLBrace)) {
         ShouldMerge = Style.AllowShortCompoundRequirementOnASingleLine;
-      } else if (TheLine->Last->isOneOf(TT_ClassLBrace, TT_StructLBrace)) {
-        // NOTE: We use AfterClass (whereas AfterStruct exists) for both 
classes
-        // and structs, but it seems that wrapping is still handled correctly
-        // elsewhere.
-        ShouldMerge = !Style.BraceWrapping.AfterClass ||
-                      (NextLine.First->is(tok::r_brace) &&
-                       !Style.BraceWrapping.SplitEmptyRecord);
+      } else if (TheLine->Last->isOneOf(TT_ClassLBrace, TT_StructLBrace,
+                                        TT_UnionLBrace)) {
+        if (Style.AllowShortRecordOnASingleLine > FormatStyle::SRS_Never) {
+          // NOTE: We use AfterClass (whereas AfterStruct exists) for both
+          // classes and structs, but it seems that wrapping is still handled
+          // correctly elsewhere.
+          ShouldMerge = !Style.BraceWrapping.AfterClass || TryMergeShortRecord;
----------------
itzexpoexpo wrote:

That's right, the SRS_Never case in the lambda is essentially redundant, I'm 
just used to handling every enum value in switches, but it can be safely 
removed if that's preferred in LLVM.
It has to be handled separately to override the merging, otherwise `AfterClass 
= false` would merge anyway even if the lambda returned false.

https://github.com/llvm/llvm-project/pull/154580
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to