[clang] [Clang] Fix handling of pack indexing types in constraints of redeclaration (PR #139057)

Younan Zhang via cfe-commits cfe-commits at lists.llvm.org
Thu May 8 04:11:34 PDT 2025


================
@@ -2060,14 +2064,17 @@ TemplateName TemplateInstantiator::TransformTemplateName(
         return Arg.getAsTemplate();
       }
 
-      auto [AssociatedDecl, Final] =
+      auto [AssociatedDecl, Final, ArgumentsAreInjectedTemplateParams] =
           TemplateArgs.getAssociatedDecl(TTP->getDepth());
       UnsignedOrNone PackIndex = std::nullopt;
       if (TTP->isParameterPack()) {
         assert(Arg.getKind() == TemplateArgument::Pack &&
                "Missing argument pack");
 
-        if (!getSema().ArgPackSubstIndex) {
+        if (ArgumentsAreInjectedTemplateParams)
+          Arg = getTemplateArgumentPackPatternForRewrite(Arg);
----------------
zyn0217 wrote:

maybe it needs a better name than `getTemplateArgumentPackPatternForRewrite` because it's extended to handle injected template arguments.

How about `getTemplateArgumentPackPattern`?

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


More information about the cfe-commits mailing list