diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index fddfc36d302b5..581338924943b 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -675,6 +675,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..cd73d2709dc65 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 auto *VTPSD = cast(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 constexpr auto var = T{}; + +/// @brief variable template partial specialization +/// @tparam T type +template constexpr auto var = T{}; +} // namespace GH144775 +#endif