Author: Owen Pan Date: 2024-12-10T16:47:21-08:00 New Revision: 54ca1c4212e7ff3df880adb1a04dc3d41c033681
URL: https://github.com/llvm/llvm-project/commit/54ca1c4212e7ff3df880adb1a04dc3d41c033681 DIFF: https://github.com/llvm/llvm-project/commit/54ca1c4212e7ff3df880adb1a04dc3d41c033681.diff LOG: [clang-format] Fix idempotent format of hash in macro body (#118513) Fixes #118334. Added: Modified: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/TokenAnnotatorTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index c182aaf0876d1b..de7e261b21d303 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -512,7 +512,7 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) { break; do { NextTok = Tokens->getNextToken(); - } while (NextTok->NewlinesBefore == 0 && NextTok->isNot(tok::eof)); + } while (!NextTok->HasUnescapedNewline && NextTok->isNot(tok::eof)); while (NextTok->is(tok::comment)) NextTok = Tokens->getNextToken(); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 93e1bbffe806fa..eeb857a914b1a2 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -5724,6 +5724,24 @@ TEST_F(FormatTest, HashInMacroDefinition) { getLLVMStyleWithColumns(22)); verifyFormat("#define A void # ## #", getLLVMStyleWithColumns(22)); + +#if 0 + // FIXME: The correct format is: + verifyFormat("{\n" + " {\n" + "#define GEN_ID(_x) char *_x{#_x}\n" + " GEN_ID(one);\n" + " }\n" + "}"); +#endif + verifyFormat("{\n" + " {\n" + "#define GEN_ID(_x) \\\n" + " char *_x { #_x }\n" + " GEN_ID(one);\n" + " }\n" + "}", + getGoogleStyle()); } TEST_F(FormatTest, RespectWhitespaceInMacroDefinitions) { diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 9db3187ac44e70..38658fcb0e9990 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -3346,6 +3346,25 @@ TEST_F(TokenAnnotatorTest, BraceKind) { EXPECT_BRACE_KIND(Tokens[11], BK_BracedInit); EXPECT_BRACE_KIND(Tokens[13], BK_Block); + Tokens = annotate("{\n" + " {\n" + "#define GEN_ID(_x) char *_x{#_x}\n" + " GEN_ID(one);\n" + " }\n" + "}"); + ASSERT_EQ(Tokens.size(), 23u) << Tokens; + EXPECT_TOKEN(Tokens[0], tok::l_brace, TT_BlockLBrace); + EXPECT_BRACE_KIND(Tokens[0], BK_Block); + EXPECT_TOKEN(Tokens[1], tok::l_brace, TT_BlockLBrace); + EXPECT_BRACE_KIND(Tokens[1], BK_Block); +#if 0 + // FIXME: + EXPECT_BRACE_KIND(Tokens[11], BK_BracedInit); + EXPECT_BRACE_KIND(Tokens[14], BK_BracedInit); +#endif + EXPECT_BRACE_KIND(Tokens[20], BK_Block); + EXPECT_BRACE_KIND(Tokens[21], BK_Block); + Tokens = annotate("a = class extends goog.a {};", getGoogleStyle(FormatStyle::LK_JavaScript)); ASSERT_EQ(Tokens.size(), 11u) << Tokens; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits