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/53643. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D119218 Files: clang/lib/Format/QualifierAlignmentFixer.cpp clang/unittests/Format/QualifierFixerTest.cpp Index: clang/unittests/Format/QualifierFixerTest.cpp =================================================================== --- clang/unittests/Format/QualifierFixerTest.cpp +++ clang/unittests/Format/QualifierFixerTest.cpp @@ -858,5 +858,27 @@ Style); } +TEST_F(QualifierFixerTest, DisableRegions) { + FormatStyle Style = getLLVMStyle(); + Style.QualifierAlignment = FormatStyle::QAS_Custom; + Style.QualifierOrder = {"inline", "static", "const", "type"}; + + ReplacementCount = 0; + verifyFormat("// clang-format off\n" + "int const inline static a = 0;\n" + "// clang-format on\n", + Style); + EXPECT_EQ(ReplacementCount, 0); + verifyFormat("// clang-format off\n" + "int const inline static a = 0;\n" + "// clang-format on\n" + "inline static const int a = 0;\n", + "// clang-format off\n" + "int const inline static a = 0;\n" + "// clang-format on\n" + "int const inline static a = 0;\n", + Style); +} + } // namespace format } // namespace clang Index: clang/lib/Format/QualifierAlignmentFixer.cpp =================================================================== --- clang/lib/Format/QualifierAlignmentFixer.cpp +++ clang/lib/Format/QualifierAlignmentFixer.cpp @@ -390,6 +390,10 @@ for (AnnotatedLine *Line : AnnotatedLines) { FormatToken *First = Line->First; + assert(First); + if (First->Finalized) + continue; + const auto *Last = Line->Last; for (const auto *Tok = First; Tok && Tok != Last && Tok->Next;
Index: clang/unittests/Format/QualifierFixerTest.cpp =================================================================== --- clang/unittests/Format/QualifierFixerTest.cpp +++ clang/unittests/Format/QualifierFixerTest.cpp @@ -858,5 +858,27 @@ Style); } +TEST_F(QualifierFixerTest, DisableRegions) { + FormatStyle Style = getLLVMStyle(); + Style.QualifierAlignment = FormatStyle::QAS_Custom; + Style.QualifierOrder = {"inline", "static", "const", "type"}; + + ReplacementCount = 0; + verifyFormat("// clang-format off\n" + "int const inline static a = 0;\n" + "// clang-format on\n", + Style); + EXPECT_EQ(ReplacementCount, 0); + verifyFormat("// clang-format off\n" + "int const inline static a = 0;\n" + "// clang-format on\n" + "inline static const int a = 0;\n", + "// clang-format off\n" + "int const inline static a = 0;\n" + "// clang-format on\n" + "int const inline static a = 0;\n", + Style); +} + } // namespace format } // namespace clang Index: clang/lib/Format/QualifierAlignmentFixer.cpp =================================================================== --- clang/lib/Format/QualifierAlignmentFixer.cpp +++ clang/lib/Format/QualifierAlignmentFixer.cpp @@ -390,6 +390,10 @@ for (AnnotatedLine *Line : AnnotatedLines) { FormatToken *First = Line->First; + assert(First); + if (First->Finalized) + continue; + const auto *Last = Line->Last; for (const auto *Tok = First; Tok && Tok != Last && Tok->Next;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits