Index: clang/lib/Format/QualifierAlignmentFixer.cpp =================================================================== --- clang/lib/Format/QualifierAlignmentFixer.cpp +++ clang/lib/Format/QualifierAlignmentFixer.cpp @@ -587,7 +587,7 @@ 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); Index: clang/unittests/Format/QualifierFixerTest.cpp =================================================================== --- clang/unittests/Format/QualifierFixerTest.cpp +++ clang/unittests/Format/QualifierFixerTest.cpp @@ -1343,6 +1343,29 @@ "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, std::vector(1, 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, std::vector(1, tooling::Range(37, 36))); +} + } // namespace } // namespace test } // namespace format