Skip to content

Commit 5cc042e

Browse files
committed
Handle ::type and ::foo::type
1 parent af3d964 commit 5cc042e

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

clang/lib/Format/QualifierAlignmentFixer.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -414,9 +414,14 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeLeft(
414414
// The case `const long long volatile int` -> `const volatile long long int`
415415
// The case `long volatile long int const` -> `const volatile long long int`
416416
if (TypeToken->isTypeName(LangOpts)) {
417-
if (const auto *Prev = TypeToken->getPreviousNonComment();
418-
Prev && Prev->endsSequence(tok::coloncolon, tok::identifier)) {
419-
TypeToken = Prev->getPreviousNonComment();
417+
for (const auto *Prev = TypeToken->getPreviousNonComment();
418+
Prev && Prev->is(tok::coloncolon);
419+
Prev = Prev->getPreviousNonComment()) {
420+
TypeToken = Prev;
421+
Prev = Prev->getPreviousNonComment();
422+
if (!(Prev && Prev->is(tok::identifier)))
423+
break;
424+
TypeToken = Prev;
420425
}
421426
const FormatToken *LastSimpleTypeSpecifier = TypeToken;
422427
while (isConfiguredQualifierOrType(

clang/unittests/Format/QualifierFixerTest.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,8 +1296,11 @@ TEST_F(QualifierFixerTest, WithQualifiedTypeName) {
12961296
Style.QualifierAlignment = FormatStyle::QAS_Custom;
12971297
Style.QualifierOrder = {"constexpr", "type", "const"};
12981298

1299+
verifyFormat("constexpr ::int64_t x{1};", "::int64_t constexpr x{1};", Style);
12991300
verifyFormat("constexpr std::int64_t x{123};",
13001301
"std::int64_t constexpr x{123};", Style);
1302+
verifyFormat("constexpr ::std::int64_t x{123};",
1303+
"::std::int64_t constexpr x{123};", Style);
13011304

13021305
Style.TypeNames.push_back("bar");
13031306
verifyFormat("constexpr foo::bar x{12};", "foo::bar constexpr x{12};", Style);

0 commit comments

Comments
 (0)