[clang] [Clang] Repair the function "rParenEndsCast" to make incorrect judgments in template variable cases (PR #120904)

Björn Schäpers via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 24 13:48:16 PST 2024


================
@@ -2831,8 +2842,21 @@ class AnnotatingParser {
         IsQualifiedPointerOrReference(BeforeRParen, LangOpts);
     bool ParensCouldEndDecl =
         AfterRParen->isOneOf(tok::equal, tok::semi, tok::l_brace, tok::greater);
-    if (ParensAreType && !ParensCouldEndDecl)
+    if (ParensAreType && !ParensCouldEndDecl) {
+      if (BeforeRParen->is(TT_TemplateCloser)) {
+        if (determineUnaryOperatorByUsage(*AfterRParen))
+          return true;
+        if (AfterRParen->isOneOf(tok::plus, tok::minus, tok::star, tok::exclaim,
+                                 tok::amp)) {
+          auto *Prev = BeforeRParen->MatchingParen->getPreviousNonComment();
+          for (auto &name : castIdentifiers)
+            if (Prev->TokenText == name)
+              return true;
+          return false;
----------------
HazardyKnusperkeks wrote:

```suggestion
          return std::find(castIdentifiers.begin(), castIdentifiers.end(), Prev->TokenText) != castIdentifiers.end();
```

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


More information about the cfe-commits mailing list