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/3] [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/3] 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/3] 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits