curdeius created this revision. curdeius added reviewers: MyDeveloperDay, HazardyKnusperkeks, owenpan. curdeius requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Fixes https://github.com/llvm/llvm-project/issues/42087. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D118879 Files: clang/lib/Format/UnwrappedLineFormatter.cpp clang/unittests/Format/FormatTest.cpp Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -1805,6 +1805,22 @@ verifyFormat("#define xor(x) (^(x))"); verifyFormat("#define __except(x)"); verifyFormat("#define __try(x)"); + + FormatStyle Style = getLLVMStyle(); + Style.BreakBeforeBraces = FormatStyle::BS_Custom; + Style.BraceWrapping.AfterFunction = true; + // Test that a macro definition gets never merged with the following + // definition. + // FIXME: The AAA macro definition should probably not be splitted into 3 + // lines. + verifyFormat("#define AAA " + " \\\n" + " N " + " \\\n" + " {\n" + "#define BBB }\n", + Style); + // verifyFormat("#define AAA N { //\n", Style); } TEST_F(FormatTest, ShortBlocksInMacrosDontMergeWithCodeAfterMacro) { Index: clang/lib/Format/UnwrappedLineFormatter.cpp =================================================================== --- clang/lib/Format/UnwrappedLineFormatter.cpp +++ clang/lib/Format/UnwrappedLineFormatter.cpp @@ -623,6 +623,10 @@ unsigned Limit) { AnnotatedLine &Line = **I; + // Don't merge with a preprocessor directive. + if (I[1]->Type == LT_PreprocessorDirective) + return 0; + // Don't merge ObjC @ keywords and methods. // FIXME: If an option to allow short exception handling clauses on a single // line is added, change this to not return for @try and friends.
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -1805,6 +1805,22 @@ verifyFormat("#define xor(x) (^(x))"); verifyFormat("#define __except(x)"); verifyFormat("#define __try(x)"); + + FormatStyle Style = getLLVMStyle(); + Style.BreakBeforeBraces = FormatStyle::BS_Custom; + Style.BraceWrapping.AfterFunction = true; + // Test that a macro definition gets never merged with the following + // definition. + // FIXME: The AAA macro definition should probably not be splitted into 3 + // lines. + verifyFormat("#define AAA " + " \\\n" + " N " + " \\\n" + " {\n" + "#define BBB }\n", + Style); + // verifyFormat("#define AAA N { //\n", Style); } TEST_F(FormatTest, ShortBlocksInMacrosDontMergeWithCodeAfterMacro) { Index: clang/lib/Format/UnwrappedLineFormatter.cpp =================================================================== --- clang/lib/Format/UnwrappedLineFormatter.cpp +++ clang/lib/Format/UnwrappedLineFormatter.cpp @@ -623,6 +623,10 @@ unsigned Limit) { AnnotatedLine &Line = **I; + // Don't merge with a preprocessor directive. + if (I[1]->Type == LT_PreprocessorDirective) + return 0; + // Don't merge ObjC @ keywords and methods. // FIXME: If an option to allow short exception handling clauses on a single // line is added, change this to not return for @try and friends.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits