Author: owenca Date: 2026-06-05T22:09:59-07:00 New Revision: 26ffc71afa7c9a4a9904742016b343de6f2ea4e6
URL: https://github.com/llvm/llvm-project/commit/26ffc71afa7c9a4a9904742016b343de6f2ea4e6 DIFF: https://github.com/llvm/llvm-project/commit/26ffc71afa7c9a4a9904742016b343de6f2ea4e6.diff LOG: [clang-format] Disallow breaking before/after ## (#200721) Fixes #199775 Added: Modified: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 90c9466fdf431..22b41fb337cda 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -6495,6 +6495,8 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line, !(Right.Next && Right.Next->isOneOf(TT_FunctionDeclarationName, tok::kw_const))); } + if (Left.is(tok::hashhash) || Right.is(tok::hashhash)) + return false; if (Right.isOneOf(TT_StartOfName, TT_FunctionDeclarationName, TT_ClassHeadName, TT_QtProperty, tok::kw_operator)) { return true; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 3c22f4fe8866c..1f243fe967fd1 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -5967,22 +5967,33 @@ TEST_F(FormatTest, HashInMacroDefinition) { verifyFormat("#define A(c) uR#c"); verifyFormat("#define A(c) UR#c"); verifyFormat("#define A(c) u8R#c"); - verifyFormat("#define A \\\n b #c;", getLLVMStyleWithColumns(11)); + + auto Style = getLLVMStyleWithColumns(11); + verifyFormat("#define A \\\n b #c;", Style); verifyFormat("#define A \\\n" " { \\\n" " f(#c); \\\n" " }", - getLLVMStyleWithColumns(11)); + Style); + Style.ColumnLimit = 22; verifyFormat("#define A(X) \\\n" " void function##X()", - getLLVMStyleWithColumns(22)); - + Style); verifyFormat("#define A(a, b, c) \\\n" " void a##b##c()", - getLLVMStyleWithColumns(22)); + Style); + verifyFormat("#define A void # ## #", Style); - verifyFormat("#define A void # ## #", getLLVMStyleWithColumns(22)); + Style.ColumnLimit = 60; + Style.AlignEscapedNewlines = FormatStyle::ENAS_DontAlign; + verifyFormat( + "#define MACRO(Name) \\\n" + " struct LongPrefix##Name##LongSuffix< \\\n" + " VeryLongTemplateArgument> {};", + "#define MACRO(Name) \\\n" + " struct LongPrefix##Name##LongSuffix<VeryLongTemplateArgument> {};", + Style); verifyFormat("{\n" " {\n" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
