https://github.com/sakria9 updated 
https://github.com/llvm/llvm-project/pull/126341

>From a382aa9de206a194397f9424150f170d35101b42 Mon Sep 17 00:00:00 2001
From: sakria9 <i...@sustech.moe>
Date: Sat, 8 Feb 2025 04:00:08 +0000
Subject: [PATCH 1/5] [ASTDump] Add support for structural value template
 arguments in TextNodeDumper

---
 clang/include/clang/AST/TextNodeDumper.h | 1 +
 clang/lib/AST/TextNodeDumper.cpp         | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/clang/include/clang/AST/TextNodeDumper.h 
b/clang/include/clang/AST/TextNodeDumper.h
index bfd205ffb0d99ad..4b5ad2b5fa74c04 100644
--- a/clang/include/clang/AST/TextNodeDumper.h
+++ b/clang/include/clang/AST/TextNodeDumper.h
@@ -249,6 +249,7 @@ class TextNodeDumper
   void VisitDeclarationTemplateArgument(const TemplateArgument &TA);
   void VisitNullPtrTemplateArgument(const TemplateArgument &TA);
   void VisitIntegralTemplateArgument(const TemplateArgument &TA);
+  void VisitStructuralValueTemplateArgument(const TemplateArgument &TA);
   void VisitTemplateTemplateArgument(const TemplateArgument &TA);
   void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA);
   void VisitExpressionTemplateArgument(const TemplateArgument &TA);
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 6da1f776b4b6357..cb0c742177d2c7f 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -1226,6 +1226,11 @@ void TextNodeDumper::VisitIntegralTemplateArgument(const 
TemplateArgument &TA) {
   dumpTemplateArgument(TA);
 }
 
+void TextNodeDumper::VisitStructuralValueTemplateArgument(const 
TemplateArgument &TA) {
+  OS << " structural value";
+  dumpTemplateArgument(TA);
+}
+
 void TextNodeDumper::dumpTemplateName(TemplateName TN, StringRef Label) {
   AddChild(Label, [=] {
     {

>From 5e9bfa7141a1b0eda2fe41d2727c66a1e4c19e5d Mon Sep 17 00:00:00 2001
From: sakria9 <i...@sustech.moe>
Date: Sat, 8 Feb 2025 04:11:05 +0000
Subject: [PATCH 2/5] format

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

diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index cb0c742177d2c7f..08efcda46b8f9a4 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -1226,7 +1226,8 @@ void TextNodeDumper::VisitIntegralTemplateArgument(const 
TemplateArgument &TA) {
   dumpTemplateArgument(TA);
 }
 
-void TextNodeDumper::VisitStructuralValueTemplateArgument(const 
TemplateArgument &TA) {
+void TextNodeDumper::VisitStructuralValueTemplateArgument(
+    const TemplateArgument &TA) {
   OS << " structural value";
   dumpTemplateArgument(TA);
 }

>From f930983e7286e4d1e46fbd2081996fd18ebdddfc Mon Sep 17 00:00:00 2001
From: sakria9 <i...@sustech.moe>
Date: Sat, 8 Feb 2025 05:50:35 +0000
Subject: [PATCH 3/5] add test

---
 .../ast-dump-template-argument-structural-value.cpp  | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 
clang/test/AST/ast-dump-template-argument-structural-value.cpp

diff --git a/clang/test/AST/ast-dump-template-argument-structural-value.cpp 
b/clang/test/AST/ast-dump-template-argument-structural-value.cpp
new file mode 100644
index 000000000000000..61d4a9ef82db439
--- /dev/null
+++ b/clang/test/AST/ast-dump-template-argument-structural-value.cpp
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -std=c++20 -ast-dump -ast-dump-filter=pr126341 %s | 
FileCheck %s
+
+template<_Complex int x>
+struct pr126341;
+template<>
+struct pr126341<{1, 2}>;
+
+// CHECK: Dumping pr126341:
+// CHECK-NEXT: ClassTemplateDecl
+// CHECK: Dumping pr126341:
+// CHECK-NEXT: ClassTemplateSpecializationDecl
+// CHECK-NEXT: `-TemplateArgument structural value '1+2i'
\ No newline at end of file

>From b80626ff56adc6db71298eea7fd824b9463056e8 Mon Sep 17 00:00:00 2001
From: sakria9 <i...@sustech.moe>
Date: Sat, 8 Feb 2025 05:55:15 +0000
Subject: [PATCH 4/5] add newline

---
 clang/test/AST/ast-dump-template-argument-structural-value.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/AST/ast-dump-template-argument-structural-value.cpp 
b/clang/test/AST/ast-dump-template-argument-structural-value.cpp
index 61d4a9ef82db439..7f5a3d4508f1cfd 100644
--- a/clang/test/AST/ast-dump-template-argument-structural-value.cpp
+++ b/clang/test/AST/ast-dump-template-argument-structural-value.cpp
@@ -9,4 +9,4 @@ struct pr126341<{1, 2}>;
 // CHECK-NEXT: ClassTemplateDecl
 // CHECK: Dumping pr126341:
 // CHECK-NEXT: ClassTemplateSpecializationDecl
-// CHECK-NEXT: `-TemplateArgument structural value '1+2i'
\ No newline at end of file
+// CHECK-NEXT: `-TemplateArgument structural value '1+2i'

>From 5678ce0a8910bb9800e182ca7755a14e446f0f72 Mon Sep 17 00:00:00 2001
From: sakria9 <i...@sustech.moe>
Date: Sat, 8 Feb 2025 05:58:39 +0000
Subject: [PATCH 5/5] add release note

---
 clang/docs/ReleaseNotes.rst | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 92f63c15030898f..89cb0f7e9d57db3 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -54,6 +54,8 @@ ABI Changes in This Version
 AST Dumping Potentially Breaking Changes
 ----------------------------------------
 
+- Added support for dumping structural value template arguments in AST dumps. 
(#GH126341)
+
 Clang Frontend Potentially Breaking Changes
 -------------------------------------------
 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to