[clang] [clang-format] Correctly annotate static overloaded operator calls (PR #161944)

Björn Schäpers via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 8 13:53:34 PDT 2025


================
@@ -3802,7 +3802,7 @@ static bool isFunctionDeclarationName(const LangOptions &LangOpts,
   const auto *Prev = Current.getPreviousNonComment();
   assert(Prev);
 
-  if (Prev->is(tok::coloncolon))
+  if (Prev->is(tok::coloncolon) && Prev->hasWhitespaceBefore())
----------------
HazardyKnusperkeks wrote:

No it is not. It's the same, just with a space in the input:
```
echo "SomeAPI::operator()();             
SomeAPI ::operator()();" | clang-format --debug-only=format-token-annotator
AnnotatedTokens(L=0, P=0, T=6, C=0):
 I=0 M=0 C=0 T=Unknown S=1 F=0 B=0 BK=0 P=0 Name=identifier N=0 L=7 PPK=2 FakeLParens= FakeRParens=0 II=0x558d281139e0 Text='SomeAPI'
 I=0 M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=23 Name=coloncolon N=0 L=9 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='::'
 I=0 M=0 C=1 T=Unknown S=0 F=0 B=0 BK=0 P=520 Name=operator N=0 L=17 PPK=2 FakeLParens= FakeRParens=0 II=0x558d281067c8 Text='operator'
 I=0 M=0 C=0 T=OverloadedOperator S=0 F=0 B=0 BK=0 P=23 Name=l_paren N=0 L=18 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='('
 I=0 M=0 C=0 T=OverloadedOperator S=0 F=0 B=0 BK=0 P=140 Name=r_paren N=1 L=19 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
 I=0 M=0 C=0 T=OverloadedOperatorLParen S=0 F=0 B=0 BK=0 P=23 Name=l_paren N=0 L=20 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='('
 I=0 M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=140 Name=r_paren N=1 L=21 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
 I=0 M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=23 Name=semi N=0 L=22 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=';'
----
AnnotatedTokens(L=0, P=0, T=6, C=0):
 I=0 M=0 C=0 T=Unknown S=1 F=0 B=0 BK=0 P=0 Name=identifier N=0 L=7 PPK=2 FakeLParens= FakeRParens=0 II=0x558d281139e0 Text='SomeAPI'
 I=0 M=0 C=0 T=Unknown S=1 F=0 B=0 BK=0 P=23 Name=coloncolon N=0 L=10 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='::'
 I=0 M=0 C=1 T=FunctionDeclarationName S=0 F=0 B=0 BK=0 P=520 Name=operator N=0 L=18 PPK=2 FakeLParens= FakeRParens=0 II=0x558d281067c8 Text='operator'
 I=0 M=0 C=0 T=OverloadedOperator S=0 F=0 B=0 BK=0 P=23 Name=l_paren N=0 L=19 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='('
 I=0 M=0 C=0 T=OverloadedOperator S=0 F=0 B=0 BK=0 P=140 Name=r_paren N=1 L=20 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
 I=0 M=0 C=0 T=OverloadedOperatorLParen S=0 F=0 B=0 BK=0 P=23 Name=l_paren N=0 L=21 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text='('
 I=0 M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=140 Name=r_paren N=1 L=22 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=')'
 I=0 M=0 C=0 T=Unknown S=0 F=0 B=0 BK=0 P=23 Name=semi N=0 L=23 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=';'
----
AnnotatedTokens(L=0, P=0, T=6, C=0):
 I=0 M=0 C=0 T=Unknown S=1 F=0 B=0 BK=0 P=0 Name=eof N=0 L=0 PPK=2 FakeLParens= FakeRParens=0 II=0x0 Text=''
----
SomeAPI::operator()();
SomeAPI ::operator()();

```

https://github.com/llvm/llvm-project/pull/161944


More information about the cfe-commits mailing list