[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:43:04 PDT 2025
https://github.com/a-tarasyuk created https://github.com/llvm/llvm-project/pull/147219
Fixes #144775
---
This patch addresses a false-positive `-Wdocumentation` warning on `@tparam` comments attached to _variable template partial specializations_
>From 2c44c8bd3c2a49ba0a2cecdcadf5d08c0e9e3108 Mon Sep 17 00:00:00 2001
From: Oleksandr Tarasiuk <oleksandr.tarasiuk at outlook.com>
Date: Mon, 7 Jul 2025 02:40:43 +0300
Subject: [PATCH] [Clang] accept @tparam on variable template partial
specializations
---
clang/docs/ReleaseNotes.rst | 2 ++
clang/lib/AST/Comment.cpp | 7 +++++++
clang/test/Sema/warn-documentation.cpp | 12 ++++++++++++
3 files changed, 21 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..9fd4cc942e7b7 100644
--- a/clang/lib/AST/Comment.cpp
+++ b/clang/lib/AST/Comment.cpp
@@ -291,6 +291,13 @@ 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