[clang] [clang-tools-extra] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)

Krystian Stasiowski via cfe-commits cfe-commits at lists.llvm.org
Tue May 7 08:54:46 PDT 2024


================
@@ -111,6 +111,13 @@ Clang Frontend Potentially Breaking Changes
     $ clang --target=<your target triple> -print-target-triple
     <the normalized target triple>
 
+- The ``getTypeAsWritten`` member function has been removed from ``ClassTemplateSpecializationDecl`` and
+  ``VarTemplateSpecializationDecl``, and a new member function ``getTemplateArgsAsWritten`` returning a
+  ``const ASTTemplateArgumentListInfo *`` has been added to access to the explicitly written template
+  argument list of explicit specializations, partial specializations, and explicit instantiations of
+  class and variable templates. Consequently, the ``hasTypeLoc`` AST matcher will no longer match these
+  declarations and existing uses should switch to ``TemplateArgumentLoc`` matchers instead.
+
----------------
sdkrystian wrote:

> I think we can remove the internal details and go with something shorter, like:
> 
> ```
> The `hasTypeLoc` AST matcher will no longer match a `classTemplateSpecializationDecl`; existing uses should switch to `templateArgumentLoc` or `hasAnyTemplateArgumentLoc` instead.
> ```
> 
> WDYT?

@AaronBallman As a strictly AST matcher release note, I like your proposed wording. However, I think it's important to include the removal of `getTypeAsWritten` (and the addition of its replacement, `getTemplateArgsAsWritten`) so tooling authors know how to fix any code which is broken by these changes. Would adding two release notes be preferable? For example:

> - ``getTypeAsWritten`` has been removed from ``ClassTemplateSpecializationDecl`` and ``VarTemplateSpecializationDecl`` in favor of a new function ``getTemplateArgsAsWritten``.
> - The ``hasTypeLoc`` AST matcher will no longer match a ``classTemplateSpecializationDecl``; existing uses should switch to ``templateArgumentLoc`` or ``hasAnyTemplateArgumentLoc`` instead.

https://github.com/llvm/llvm-project/pull/81642


More information about the cfe-commits mailing list