diff --git a/clang/lib/Format/QualifierAlignmentFixer.cpp b/clang/lib/Format/QualifierAlignmentFixer.cpp index 5142a83efdd45..ff54fb75b3dd9 100644 --- a/clang/lib/Format/QualifierAlignmentFixer.cpp +++ b/clang/lib/Format/QualifierAlignmentFixer.cpp @@ -587,7 +587,7 @@ LeftRightQualifierAlignmentFixer::analyze( assert(QualifierToken != tok::identifier && "Unrecognised Qualifier"); for (AnnotatedLine *Line : AnnotatedLines) { - if (Line->InPPDirective) + if (!Line->Affected || Line->InPPDirective) continue; FormatToken *First = Line->First; assert(First); diff --git a/clang/unittests/Format/QualifierFixerTest.cpp b/clang/unittests/Format/QualifierFixerTest.cpp index 76800b3fc8e37..9760c80dcc619 100755 --- a/clang/unittests/Format/QualifierFixerTest.cpp +++ b/clang/unittests/Format/QualifierFixerTest.cpp @@ -1343,6 +1343,29 @@ TEST_F(QualifierFixerTest, TemplatesLeft) { "TemplateType t;", Style); } +TEST_F(QualifierFixerTest, Ranges) { + FormatStyle Style = getLLVMStyle(); + Style.QualifierAlignment = FormatStyle::QAS_Custom; + Style.QualifierOrder = {"const", "volatile", "type"}; + + // Only the first line should be formatted; the second should remain as is. + verifyFormat("template const Foo f();\n" + "template Foo const f();", + "template Foo const f();\n" + "template Foo const f();", + Style, {tooling::Range(0, 36)}); + + // Only the middle line should be formatted; the first and last should remain + // as is. + verifyFormat("template Foo const f();\n" + "template const Foo f();\n" + "template Foo const f();", + "template Foo const f();\n" + "template Foo const f();\n" + "template Foo const f();", + Style, {tooling::Range(37, 36)}); +} + } // namespace } // namespace test } // namespace format