Files
llvm-project/clang/lib/Format/QualifierAlignmentFixer.cpp
Lane0218 b579c5b0bc [clang-format] Fix spacing before :: after non-macro identifiers (#189024)
This narrows clang-format's spacing heuristic for `identifier ::`.

Previously, clang-format preserved existing whitespace before `::` after
any
identifier, which caused inputs like:

```c++
template <typename T>
auto mem = &T :: member;
```

to format as:

```c++
template <typename T>
auto mem = &T ::member;
```

This patch preserves that whitespace only for identifiers that look like
object-like macros, such as the existing `ALWAYS_INLINE ::std::string`
case.
Ordinary identifiers now format as expected:

```c++
&T :: member
```

becomes

```c++
&T::member
```

Test:
- `./build-cir/tools/clang/unittests/Format/FormatTests
--gtest_filter=FormatTest.NestedNameSpecifiers`

Fixes #188754
2026-03-29 22:07:32 +02:00

23 KiB