This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGa8d2bff290e1: [clang-format] Don't wrap struct return types as structs (authored by rymiel).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D146281/new/ https://reviews.llvm.org/D146281 Files: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -3205,10 +3205,13 @@ format("try{foo();}catch(...){baz();}", Style)); Style.BraceWrapping.AfterFunction = true; + Style.BraceWrapping.AfterStruct = false; Style.BraceWrapping.AfterControlStatement = FormatStyle::BWACS_MultiLine; Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All; Style.ColumnLimit = 80; verifyFormat("void shortfunction() { bar(); }", Style); + verifyFormat("struct T shortfunction() { return bar(); }", Style); + verifyFormat("struct T {};", Style); Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None; verifyFormat("void shortfunction()\n" @@ -3216,6 +3219,36 @@ " bar();\n" "}", Style); + verifyFormat("struct T shortfunction()\n" + "{\n" + " return bar();\n" + "}", + Style); + verifyFormat("struct T {};", Style); + + Style.BraceWrapping.AfterFunction = false; + Style.BraceWrapping.AfterStruct = true; + Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All; + verifyFormat("void shortfunction() { bar(); }", Style); + verifyFormat("struct T shortfunction() { return bar(); }", Style); + verifyFormat("struct T\n" + "{\n" + "};", + Style); + + Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None; + verifyFormat("void shortfunction() {\n" + " bar();\n" + "}", + Style); + verifyFormat("struct T shortfunction() {\n" + " return bar();\n" + "}", + Style); + verifyFormat("struct T\n" + "{\n" + "};", + Style); } TEST_F(FormatTest, BeforeWhile) { Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -4916,8 +4916,13 @@ return true; } - return (Line.startsWith(tok::kw_class) && Style.BraceWrapping.AfterClass) || - (Line.startsWith(tok::kw_struct) && Style.BraceWrapping.AfterStruct); + // Don't attempt to interpret struct return types as structs. + if (Right.isNot(TT_FunctionLBrace)) { + return (Line.startsWith(tok::kw_class) && + Style.BraceWrapping.AfterClass) || + (Line.startsWith(tok::kw_struct) && + Style.BraceWrapping.AfterStruct); + } } if (Left.is(TT_ObjCBlockLBrace) &&
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -3205,10 +3205,13 @@ format("try{foo();}catch(...){baz();}", Style)); Style.BraceWrapping.AfterFunction = true; + Style.BraceWrapping.AfterStruct = false; Style.BraceWrapping.AfterControlStatement = FormatStyle::BWACS_MultiLine; Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All; Style.ColumnLimit = 80; verifyFormat("void shortfunction() { bar(); }", Style); + verifyFormat("struct T shortfunction() { return bar(); }", Style); + verifyFormat("struct T {};", Style); Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None; verifyFormat("void shortfunction()\n" @@ -3216,6 +3219,36 @@ " bar();\n" "}", Style); + verifyFormat("struct T shortfunction()\n" + "{\n" + " return bar();\n" + "}", + Style); + verifyFormat("struct T {};", Style); + + Style.BraceWrapping.AfterFunction = false; + Style.BraceWrapping.AfterStruct = true; + Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All; + verifyFormat("void shortfunction() { bar(); }", Style); + verifyFormat("struct T shortfunction() { return bar(); }", Style); + verifyFormat("struct T\n" + "{\n" + "};", + Style); + + Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None; + verifyFormat("void shortfunction() {\n" + " bar();\n" + "}", + Style); + verifyFormat("struct T shortfunction() {\n" + " return bar();\n" + "}", + Style); + verifyFormat("struct T\n" + "{\n" + "};", + Style); } TEST_F(FormatTest, BeforeWhile) { Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -4916,8 +4916,13 @@ return true; } - return (Line.startsWith(tok::kw_class) && Style.BraceWrapping.AfterClass) || - (Line.startsWith(tok::kw_struct) && Style.BraceWrapping.AfterStruct); + // Don't attempt to interpret struct return types as structs. + if (Right.isNot(TT_FunctionLBrace)) { + return (Line.startsWith(tok::kw_class) && + Style.BraceWrapping.AfterClass) || + (Line.startsWith(tok::kw_struct) && + Style.BraceWrapping.AfterStruct); + } } if (Left.is(TT_ObjCBlockLBrace) &&
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits