https://github.com/HazardyKnusperkeks updated 
https://github.com/llvm/llvm-project/pull/206810

From f09076ca6e723a0cb1a3f8eff6ca98d513ee9877 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <[email protected]>
Date: Tue, 30 Jun 2026 21:20:30 +0200
Subject: [PATCH 1/2] [clang-format] Fix annotating paren after in

The y.in(foo) was considered a cast, and thus the following - annotated as 
unary operator.

Fixes #206339
---
 clang/lib/Format/TokenAnnotator.cpp           | 6 ++++--
 clang/unittests/Format/TokenAnnotatorTest.cpp | 4 ++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index 4a771a4a92a43..6378913734452 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2821,8 +2821,10 @@ class AnnotatingParser {
       // If there is an identifier (or with a few exceptions a keyword) right
       // before the parentheses, this is unlikely to be a cast.
       if (LeftOfParens->Tok.getIdentifierInfo() &&
-          LeftOfParens->isNoneOf(Keywords.kw_in, tok::kw_return, tok::kw_case,
-                                 tok::kw_delete, tok::kw_throw)) {
+          (LeftOfParens->isNoneOf(Keywords.kw_in, tok::kw_return, tok::kw_case,
+                                  tok::kw_delete, tok::kw_throw) ||
+           (LeftOfParens->Previous &&
+            LeftOfParens->Previous->is(tok::period)))) {
         return false;
       }
 
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp 
b/clang/unittests/Format/TokenAnnotatorTest.cpp
index 25ad923af8f4a..d9fbc62401cc7 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -997,6 +997,10 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) {
   EXPECT_TOKEN(Tokens[10], tok::r_paren, TT_CastRParen);
   EXPECT_TOKEN(Tokens[11], tok::amp, TT_UnaryOperator);
 
+  Tokens = annotate("auto x = y.in(foo) - w;");
+  ASSERT_EQ(Tokens.size(), 13u) << Tokens;
+  EXPECT_TOKEN(Tokens[8], tok::r_paren, TT_Unknown); // NOT TT_CastRParen
+
   auto Style = getLLVMStyle();
   Style.TypeNames.push_back("Foo");
   Tokens = annotate("#define FOO(bar) foo((Foo)&bar)", Style);

From c2c9c2a318bbc192785b85ade46f7d823d0ea263 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <[email protected]>
Date: Thu, 2 Jul 2026 21:08:51 +0200
Subject: [PATCH 2/2] Address review comments

---
 clang/lib/Format/TokenAnnotator.cpp           | 6 ++----
 clang/unittests/Format/TokenAnnotatorTest.cpp | 1 +
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index 6378913734452..df640cf503c9d 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2821,10 +2821,8 @@ class AnnotatingParser {
       // If there is an identifier (or with a few exceptions a keyword) right
       // before the parentheses, this is unlikely to be a cast.
       if (LeftOfParens->Tok.getIdentifierInfo() &&
-          (LeftOfParens->isNoneOf(Keywords.kw_in, tok::kw_return, tok::kw_case,
-                                  tok::kw_delete, tok::kw_throw) ||
-           (LeftOfParens->Previous &&
-            LeftOfParens->Previous->is(tok::period)))) {
+          LeftOfParens->isNoneOf(TT_ObjCForIn, tok::kw_return, tok::kw_case,
+                                 tok::kw_delete, tok::kw_throw)) {
         return false;
       }
 
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp 
b/clang/unittests/Format/TokenAnnotatorTest.cpp
index d9fbc62401cc7..8ef7e7387e269 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -1000,6 +1000,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) {
   Tokens = annotate("auto x = y.in(foo) - w;");
   ASSERT_EQ(Tokens.size(), 13u) << Tokens;
   EXPECT_TOKEN(Tokens[8], tok::r_paren, TT_Unknown); // NOT TT_CastRParen
+  EXPECT_TOKEN(Tokens[9], tok::minus, TT_BinaryOperator);
 
   auto Style = getLLVMStyle();
   Style.TypeNames.push_back("Foo");

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to