r198558 - clang-format: Allow formatting short enums on a single line.

Sean Silva silvas at purdue.edu
Sun Jan 5 15:21:27 PST 2014


Thanks! Did you mean to close <http://llvm.org/bugs/show_bug.cgi?id=16517>?

-- Sean Silva


On Sun, Jan 5, 2014 at 5:38 AM, Daniel Jasper <djasper at google.com> wrote:

> Author: djasper
> Date: Sun Jan  5 06:38:10 2014
> New Revision: 198558
>
> URL: http://llvm.org/viewvc/llvm-project?rev=198558&view=rev
> Log:
> clang-format: Allow formatting short enums on a single line.
>
> Before:
>   enum ShortEnum {
>     A,
>     B,
>     C
>   };
>
> After:
>   enum ShortEnum { A, B, C };
>
> This seems to be the predominant choice in LLVM/Clang as well as in
> Google style.
>
> Modified:
>     cfe/trunk/lib/Format/ContinuationIndenter.cpp
>     cfe/trunk/lib/Format/TokenAnnotator.cpp
>     cfe/trunk/unittests/Format/FormatTest.cpp
>
> Modified: cfe/trunk/lib/Format/ContinuationIndenter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/ContinuationIndenter.cpp?rev=198558&r1=198557&r2=198558&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/ContinuationIndenter.cpp (original)
> +++ cfe/trunk/lib/Format/ContinuationIndenter.cpp Sun Jan  5 06:38:10 2014
> @@ -182,10 +182,6 @@ bool ContinuationIndenter::mustBreak(con
>        State.Stack.back().ObjCSelectorNameFound &&
>        State.Stack.back().BreakBeforeParameter)
>      return true;
> -  if (Current.Type == TT_CtorInitializerColon &&
> -      (!Style.AllowShortFunctionsOnASingleLine ||
> -       Style.BreakConstructorInitializersBeforeComma || Style.ColumnLimit
> != 0))
> -    return true;
>    if (Previous.ClosesTemplateDeclaration && State.ParenLevel == 0 &&
>        !Current.isTrailingComment())
>      return true;
> @@ -199,6 +195,18 @@ bool ContinuationIndenter::mustBreak(con
>         (State.Stack.back().BreakBeforeParameter &&
>          State.Stack.back().ContainsUnwrappedBuilder)))
>      return true;
> +
> +  // The following could be precomputed as they do not depend on the
> state.
> +  // However, as they should take effect only if the UnwrappedLine does
> not fit
> +  // into the ColumnLimit, they are checked here in the
> ContinuationIndenter.
> +  if (Previous.BlockKind == BK_Block && Previous.is(tok::l_brace) &&
> +      !Current.isOneOf(tok::r_brace, tok::comment))
> +    return true;
> +  if (Current.Type == TT_CtorInitializerColon &&
> +      (!Style.AllowShortFunctionsOnASingleLine ||
> +       Style.BreakConstructorInitializersBeforeComma || Style.ColumnLimit
> != 0))
> +    return true;
> +
>    return false;
>  }
>
>
> Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=198558&r1=198557&r2=198558&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
> +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Sun Jan  5 06:38:10 2014
> @@ -1438,9 +1438,6 @@ bool TokenAnnotator::mustBreakBefore(con
>               Style.BreakConstructorInitializersBeforeComma &&
>               !Style.ConstructorInitializerAllOnOneLineOrOnePerLine) {
>      return true;
> -  } else if (Right.Previous->BlockKind == BK_Block &&
> -             Right.Previous->isNot(tok::r_brace) &&
> Right.isNot(tok::r_brace)) {
> -    return true;
>    } else if (Right.is(tok::l_brace) && (Right.BlockKind == BK_Block)) {
>      return Style.BreakBeforeBraces == FormatStyle::BS_Allman ||
>             Style.BreakBeforeBraces == FormatStyle::BS_GNU;
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=198558&r1=198557&r2=198558&view=diff
>
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Sun Jan  5 06:38:10 2014
> @@ -1650,18 +1650,21 @@ TEST_F(FormatTest, FormatsEnum) {
>    verifyFormat("enum X f() {\n  a();\n  return 42;\n}");
>    verifyFormat("enum {\n"
>                 "  Bar = Foo<int, int>::value\n"
> -               "};");
> +               "};",
> +               getLLVMStyleWithColumns(30));
> +
> +  verifyFormat("enum ShortEnum { A, B, C };");
>  }
>
>  TEST_F(FormatTest, FormatsEnumsWithErrors) {
>    verifyFormat("enum Type {\n"
> -               "  One = 0;\n" // These semicolons should be commas.
> +               "  One = 0; // These semicolons should be commas.\n"
>                 "  Two = 1;\n"
>                 "};");
>    verifyFormat("namespace n {\n"
>                 "enum Type {\n"
>                 "  One,\n"
> -               "  Two,\n" // missing };
> +               "  Two, // missing };\n"
>                 "  int i;\n"
>                 "}\n"
>                 "void g() {}");
> @@ -1703,13 +1706,11 @@ TEST_F(FormatTest, FormatsEnumClass) {
>
>  TEST_F(FormatTest, FormatsEnumTypes) {
>    verifyFormat("enum X : int {\n"
> -               "  A,\n"
> -               "  B\n"
> -               "};");
> -  verifyFormat("enum X : std::uint32_t {\n"
> -               "  A,\n"
> +               "  A, // Force multiple lines.\n"
>                 "  B\n"
>                 "};");
> +  verifyFormat("enum X : int { A, B };");
> +  verifyFormat("enum X : std::uint32_t { A, B };");
>  }
>
>  TEST_F(FormatTest, FormatsBitfields) {
> @@ -6605,7 +6606,7 @@ TEST_F(FormatTest, ConfigurableUseOfTab)
>                 "};",
>                 Tab);
>    verifyFormat("enum A {\n"
> -               "\ta1,\n"
> +               "\ta1, // Force multiple lines\n"
>                 "\ta2,\n"
>                 "\ta3\n"
>                 "};",
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140105/7cec235b/attachment.html>


More information about the cfe-commits mailing list