https://github.com/a-tarasyuk updated 
https://github.com/llvm/llvm-project/pull/147219

>From a5e5e795e2b31295f781d2398e41f46785c0f18b Mon Sep 17 00:00:00 2001
From: Oleksandr Tarasiuk <oleksandr.taras...@outlook.com>
Date: Mon, 7 Jul 2025 02:52:01 +0300
Subject: [PATCH 1/2] [Clang] accept @tparam on variable template partial
 specializations

---
 clang/docs/ReleaseNotes.rst            |  2 ++
 clang/lib/AST/Comment.cpp              |  8 ++++++++
 clang/test/Sema/warn-documentation.cpp | 12 ++++++++++++
 3 files changed, 22 insertions(+)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 9a94c4bcd9980..d85c592b6d8bc 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -671,6 +671,8 @@ Improvements to Clang's diagnostics
   false positives in exception-heavy code, though only simple patterns
   are currently recognized.
 
+- Clang now accepts ``@tparam`` comments on variable template partial
+  specializations. (#GH144775)
 
 Improvements to Clang's time-trace
 ----------------------------------
diff --git a/clang/lib/AST/Comment.cpp b/clang/lib/AST/Comment.cpp
index d022c5c845ae6..08f860e2490ba 100644
--- a/clang/lib/AST/Comment.cpp
+++ b/clang/lib/AST/Comment.cpp
@@ -291,6 +291,14 @@ void DeclInfo::fill() {
     TemplateParameters = CTPSD->getTemplateParameters();
     break;
   }
+  case Decl::VarTemplatePartialSpecialization: {
+    const VarTemplatePartialSpecializationDecl *VTPSD =
+        cast<VarTemplatePartialSpecializationDecl>(CommentDecl);
+    Kind = VariableKind;
+    TemplateKind = TemplatePartialSpecialization;
+    TemplateParameters = VTPSD->getTemplateParameters();
+    break;
+  }
   case Decl::ClassTemplateSpecialization:
     Kind = ClassKind;
     TemplateKind = TemplateSpecialization;
diff --git a/clang/test/Sema/warn-documentation.cpp 
b/clang/test/Sema/warn-documentation.cpp
index 4839bdff61795..0d1faa1b562fe 100644
--- a/clang/test/Sema/warn-documentation.cpp
+++ b/clang/test/Sema/warn-documentation.cpp
@@ -1524,3 +1524,15 @@ F &f = FF; ///< \return none
 // expected-warning@-1 {{'\return' command used in a comment that is not 
attached to a function or method declaration}}
 
 } // namespace PR42844
+
+#if __cplusplus >= 201402L
+namespace GH144775 {
+/// @brief primary template
+/// @tparam T type
+template <class T, class = void> constexpr auto var = T{};
+
+/// @brief variable template partial specialization
+/// @tparam T type
+template <typename T> constexpr auto var<T> = T{};
+} // namespace GH144775
+#endif

>From c487679a39ce10f50c348fa368926d1d566c5921 Mon Sep 17 00:00:00 2001
From: Oleksandr Tarasiuk <oleksandr.taras...@outlook.com>
Date: Mon, 7 Jul 2025 17:29:30 +0300
Subject: [PATCH 2/2] use auto instead of an explicit type

---
 clang/lib/AST/Comment.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/clang/lib/AST/Comment.cpp b/clang/lib/AST/Comment.cpp
index 08f860e2490ba..cd73d2709dc65 100644
--- a/clang/lib/AST/Comment.cpp
+++ b/clang/lib/AST/Comment.cpp
@@ -292,8 +292,7 @@ void DeclInfo::fill() {
     break;
   }
   case Decl::VarTemplatePartialSpecialization: {
-    const VarTemplatePartialSpecializationDecl *VTPSD =
-        cast<VarTemplatePartialSpecializationDecl>(CommentDecl);
+    const auto *VTPSD = 
cast<VarTemplatePartialSpecializationDecl>(CommentDecl);
     Kind = VariableKind;
     TemplateKind = TemplatePartialSpecialization;
     TemplateParameters = VTPSD->getTemplateParameters();

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

Reply via email to