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