diff options
author | Owen Pan <owenpiano@gmail.com> | 2025-07-17 21:43:43 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-17 21:43:43 -0700 |
commit | a8f5e9ed6b44562938ce07e2790be90be8f0a6b5 (patch) | |
tree | 266647f771d882f8ce1a8c7d1133205c9ba9f403 /clang/lib/Format | |
parent | 4e6157f7844cc801bc84ac06f53052e8c6d6c478 (diff) | |
download | llvm-a8f5e9ed6b44562938ce07e2790be90be8f0a6b5.zip llvm-a8f5e9ed6b44562938ce07e2790be90be8f0a6b5.tar.gz llvm-a8f5e9ed6b44562938ce07e2790be90be8f0a6b5.tar.bz2 |
[clang-format] Fix a regression of annotating PointerOrReference (#149039)
Fixes #149010
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 739209a..581bfba 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2996,14 +2996,18 @@ private: const FormatToken *PrevToken = Tok.getPreviousNonComment(); if (!PrevToken) return TT_UnaryOperator; - if (PrevToken->is(TT_TypeName)) + if (PrevToken->isTypeName(LangOpts)) return TT_PointerOrReference; if (PrevToken->isPlacementOperator() && Tok.is(tok::ampamp)) return TT_BinaryOperator; - const FormatToken *NextToken = Tok.getNextNonComment(); + auto *NextToken = Tok.getNextNonComment(); if (!NextToken) return TT_PointerOrReference; + if (NextToken->is(tok::greater)) { + NextToken->setFinalizedType(TT_TemplateCloser); + return TT_PointerOrReference; + } if (InTemplateArgument && NextToken->is(tok::kw_noexcept)) return TT_BinaryOperator; @@ -3112,7 +3116,7 @@ private: // It's more likely that & represents operator& than an uninitialized // reference. - if (Tok.is(tok::amp) && PrevToken && PrevToken->Tok.isAnyIdentifier() && + if (Tok.is(tok::amp) && PrevToken->Tok.isAnyIdentifier() && IsChainedOperatorAmpOrMember(PrevToken->getPreviousNonComment()) && NextToken && NextToken->Tok.isAnyIdentifier()) { if (auto NextNext = NextToken->getNextNonComment(); |