[clang] [Clang] accept @tparam on variable template partial specializations (PR #147219)
Oleksandr T. via cfe-commits
cfe-commits at lists.llvm.org
Sun Jul 6 16:52:19 PDT 2025
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.tarasiuk at outlook.com>
Date: Mon, 7 Jul 2025 02:52:01 +0300
Subject: [PATCH] [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 at -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
More information about the cfe-commits
mailing list