Author: Owen Pan Date: 2023-11-19T14:59:53-08:00 New Revision: 5860d248a780aaef860db3d54184b49fc758c3c1
URL: https://github.com/llvm/llvm-project/commit/5860d248a780aaef860db3d54184b49fc758c3c1 DIFF: https://github.com/llvm/llvm-project/commit/5860d248a780aaef860db3d54184b49fc758c3c1.diff LOG: [clang-format] Fix a bug in aligning comments above PPDirective (#72791) Fixed #72785. Added: Modified: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTestComments.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index a6cd3c68e30bcaf..1cc198ceec708d7 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -3123,8 +3123,8 @@ void TokenAnnotator::setCommentLineLevels( // If the comment is currently aligned with the line immediately following // it, that's probably intentional and we should keep it. - if (NextNonCommentLine && !NextNonCommentLine->First->Finalized && - Line->isComment() && NextNonCommentLine->First->NewlinesBefore <= 1 && + if (NextNonCommentLine && NextNonCommentLine->First->NewlinesBefore < 2 && + Line->isComment() && !isClangFormatOff(Line->First->TokenText) && NextNonCommentLine->First->OriginalColumn == Line->First->OriginalColumn) { const bool PPDirectiveOrImportStmt = diff --git a/clang/unittests/Format/FormatTestComments.cpp b/clang/unittests/Format/FormatTestComments.cpp index 967ffa32db79c75..9770d5090703c77 100644 --- a/clang/unittests/Format/FormatTestComments.cpp +++ b/clang/unittests/Format/FormatTestComments.cpp @@ -1069,6 +1069,17 @@ TEST_F(FormatTestComments, KeepsLevelOfCommentBeforePPDirective) { " // clang-format on\n" "}"); verifyNoChange(Code); + + auto Style = getLLVMStyle(); + Style.IndentPPDirectives = FormatStyle::PPDIS_BeforeHash; + verifyFormat("#ifdef FOO\n" + " // Foo\n" + " #define Foo foo\n" + "#else\n" + " // Bar\n" + " #define Bar bar\n" + "#endif", + Style); } TEST_F(FormatTestComments, SplitsLongLinesInComments) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits