Author: Owen Pan Date: 2023-08-05T12:31:27-07:00 New Revision: 58a71c66db85f65bb6cdefe314f62318b95e9fc4
URL: https://github.com/llvm/llvm-project/commit/58a71c66db85f65bb6cdefe314f62318b95e9fc4 DIFF: https://github.com/llvm/llvm-project/commit/58a71c66db85f65bb6cdefe314f62318b95e9fc4.diff LOG: [clang-format] Handle "// clang-format on" for SeparateDefinitionBlocks Fixes 63393. Differential Revision: https://reviews.llvm.org/D156971 Added: Modified: clang/lib/Format/DefinitionBlockSeparator.cpp clang/unittests/Format/DefinitionBlockSeparatorTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/DefinitionBlockSeparator.cpp b/clang/lib/Format/DefinitionBlockSeparator.cpp index 576c6597b27afe..8fb6f55f629edd 100644 --- a/clang/lib/Format/DefinitionBlockSeparator.cpp +++ b/clang/lib/Format/DefinitionBlockSeparator.cpp @@ -143,8 +143,10 @@ void DefinitionBlockSeparator::separateBlocks( if (LikelyDefinition(OperateLine)) return false; - if (OperateLine->First->is(tok::comment)) + if (const auto *Tok = OperateLine->First; + Tok->is(tok::comment) && !isClangFormatOn(Tok->TokenText)) { return true; + } // A single line identifier that is not in the last line. if (OperateLine->First->is(tok::identifier) && diff --git a/clang/unittests/Format/DefinitionBlockSeparatorTest.cpp b/clang/unittests/Format/DefinitionBlockSeparatorTest.cpp index 45dd2fdc46b68f..5cf4edcbdf2e5a 100644 --- a/clang/unittests/Format/DefinitionBlockSeparatorTest.cpp +++ b/clang/unittests/Format/DefinitionBlockSeparatorTest.cpp @@ -283,6 +283,15 @@ TEST_F(DefinitionBlockSeparatorTest, UntouchBlockStartStyle) { TEST_F(DefinitionBlockSeparatorTest, Always) { FormatStyle Style = getLLVMStyle(); Style.SeparateDefinitionBlocks = FormatStyle::SDS_Always; + + verifyFormat("// clang-format off\n" + "template<class T>\n" + "concept C = not A<S<T>>;\n" + "// clang-format on\n" + "\n" + "struct E {};", + Style); + std::string Prefix = "namespace {\n"; std::string Infix = "\n" "// Enum test1\n" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits