https://github.com/johnnyb2543 updated 
https://github.com/llvm/llvm-project/pull/210763

>From e7d05a6c7a08735ec157ae53cfd5eb3a64a9c5f5 Mon Sep 17 00:00:00 2001
From: John Boncore <[email protected]>
Date: Mon, 20 Jul 2026 13:12:59 -0400
Subject: [PATCH 1/3] [clang-format] Prevent re-assigning type on finalized
 tokens

---
 clang/lib/Format/TokenAnnotator.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index b2a858859174b..a77af4388adb2 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2310,7 +2310,7 @@ class AnnotatingParser {
             break;
           if (Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator) &&
               Previous->isPointerOrReference() && Previous->Previous &&
-              Previous->Previous->isNot(tok::equal)) {
+              Previous->Previous->isNot(tok::equal) && 
!Previous->isTypeFinalized()) {
             Previous->setType(TT_PointerOrReference);
           }
         }

>From 00efa7ceb03998c0aaa8eb56049016b1535aac5e Mon Sep 17 00:00:00 2001
From: John Boncore <[email protected]>
Date: Mon, 27 Jul 2026 19:44:55 -0400
Subject: [PATCH 2/3] [clang-format] Addresses review feedback for pull request
 on #210509 and adds a crash test

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

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index a77af4388adb2..7232a93eaf3f2 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2308,9 +2308,9 @@ class AnnotatingParser {
           }
           if (Previous->opensScope())
             break;
-          if (Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator) &&
+          if (!Previous->isTypeFinalized() && 
Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator) &&
               Previous->isPointerOrReference() && Previous->Previous &&
-              Previous->Previous->isNot(tok::equal) && 
!Previous->isTypeFinalized()) {
+              Previous->Previous->isNot(tok::equal)) {
             Previous->setType(TT_PointerOrReference);
           }
         }
diff --git a/clang/unittests/Format/FormatTest.cpp 
b/clang/unittests/Format/FormatTest.cpp
index ec9ad612832f5..b72a683ac1fff 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -22562,6 +22562,7 @@ TEST_F(FormatTest, DoNotCrashOnInvalidInput) {
   verifyNoCrash("[[ [a] ]]");
   verifyNoCrash(
       "#xxxx??x<xxxxxxx||??x<xxxxxxx and 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
+  verifyNoCrash("a &alias & =");
 }
 
 TEST_F(FormatTest, FormatsTableGenCode) {

>From 34d456f61b7ee5ac3b566073486e4fc63cb1916a Mon Sep 17 00:00:00 2001
From: John Boncore <[email protected]>
Date: Thu, 30 Jul 2026 14:44:53 -0400
Subject: [PATCH 3/3] Format TokenAnnotator.cpp with clang-format

---
 clang/lib/Format/TokenAnnotator.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index 7232a93eaf3f2..6240db231c1ee 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2308,7 +2308,8 @@ class AnnotatingParser {
           }
           if (Previous->opensScope())
             break;
-          if (!Previous->isTypeFinalized() && 
Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator) &&
+          if (!Previous->isTypeFinalized() &&
+              Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator) &&
               Previous->isPointerOrReference() && Previous->Previous &&
               Previous->Previous->isNot(tok::equal)) {
             Previous->setType(TT_PointerOrReference);

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

Reply via email to