================ @@ -139,28 +165,63 @@ TemplateName::NameKind TemplateName::getKind() const { return AssumedTemplate; if (uncommon->getAsSubstTemplateTemplateParm()) return SubstTemplateTemplateParm; + if (uncommon->getAsDeducedTemplateName()) + return DeducedTemplate; + + assert(uncommon->getAsSubstTemplateTemplateParmPack() != nullptr); return SubstTemplateTemplateParmPack; } -TemplateDecl *TemplateName::getAsTemplateDecl() const { - if (Decl *TemplateOrUsing = Storage.dyn_cast<Decl *>()) { - if (UsingShadowDecl *USD = dyn_cast<UsingShadowDecl>(TemplateOrUsing)) - return cast<TemplateDecl>(USD->getTargetDecl()); - - assert(isa<TemplateDecl>(TemplateOrUsing)); - return cast<TemplateDecl>(TemplateOrUsing); - } +TemplateDecl *TemplateName::getAsTemplateDecl(bool IgnoreDeduced) const { ---------------- mizvekov wrote:
I am not sure which part you were talking about, but a DeducedTemplateName is sugar when it appears in the TemplateName of a TemplateSpecializationType, so we need this new logic here. https://github.com/llvm/llvm-project/pull/94981 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits