mizvekov added a comment. @rsmith , I have marked the few spots where the change is meaningful.
================ Comment at: clang/include/clang/Sema/Template.h:488-497 + bool EarlySubstitution; + public: TemplateDeclInstantiator(Sema &SemaRef, DeclContext *Owner, - const MultiLevelTemplateArgumentList &TemplateArgs) + const MultiLevelTemplateArgumentList &TemplateArgs, + bool EarlySubstitution) : SemaRef(SemaRef), ---------------- mark ================ Comment at: clang/include/clang/Sema/Template.h:629-648 + + unsigned getNewDepth(unsigned Depth) const { + return Depth - + (EarlySubstitution ? 0 : TemplateArgs.getNumSubstitutedLevels()); + } + + class EarlySubstitutionRAII { ---------------- mark ================ Comment at: clang/lib/Sema/SemaTemplateInstantiate.cpp:931-941 + bool EarlySubstitution; public: typedef TreeTransform<TemplateInstantiator> inherited; TemplateInstantiator(Sema &SemaRef, const MultiLevelTemplateArgumentList &TemplateArgs, ---------------- mark ================ Comment at: clang/lib/Sema/SemaTemplateInstantiate.cpp:1194-1215 + TemplateDeclInstantiator DeclInstantiator( + getSema(), + /* DeclContext *Owner */ Owner, TemplateArgs, EarlySubstitution); return DeclInstantiator.SubstTemplateParams(OrigTPL); } concepts::TypeRequirement * ---------------- mark ================ Comment at: clang/lib/Sema/SemaTemplateInstantiate.cpp:1872 QualType Result = getSema().Context.getTemplateTypeParmType( - T->getDepth() - TemplateArgs.getNumSubstitutedLevels(), T->getIndex(), - T->isParameterPack(), NewTTPDecl); + getNewDepth(T->getDepth()), T->getIndex(), T->isParameterPack(), + NewTTPDecl); ---------------- mark ================ Comment at: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2807 SemaRef.Context, Owner, D->getBeginLoc(), D->getLocation(), - D->getDepth() - TemplateArgs.getNumSubstitutedLevels(), D->getIndex(), - D->getIdentifier(), D->wasDeclaredWithTypename(), D->isParameterPack(), + getNewDepth(D->getDepth()), D->getIndex(), D->getIdentifier(), + D->wasDeclaredWithTypename(), D->isParameterPack(), ---------------- mark ================ Comment at: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2965-2970 + getNewDepth(D->getDepth()), D->getPosition(), D->getIdentifier(), T, DI, + ExpandedParameterPackTypes, ExpandedParameterPackTypesAsWritten); else Param = NonTypeTemplateParmDecl::Create( SemaRef.Context, Owner, D->getInnerLocStart(), D->getLocation(), + getNewDepth(D->getDepth()), D->getPosition(), D->getIdentifier(), T, ---------------- mark ================ Comment at: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3105-3109 + SemaRef.Context, Owner, D->getLocation(), getNewDepth(D->getDepth()), D->getPosition(), D->getIdentifier(), InstParams, ExpandedParams); else Param = TemplateTemplateParmDecl::Create( + SemaRef.Context, Owner, D->getLocation(), getNewDepth(D->getDepth()), ---------------- mark ================ Comment at: clang/test/AST/ast-dump-template-decls.cpp:124 // CHECK-NEXT: SubstTemplateTypeParmType 0x{{[^ ]*}} 'void' sugar -// CHECK-NEXT: TemplateTypeParmType 0x{{[^ ]*}} 'U' dependent depth 0 index 0 +// CHECK-NEXT: TemplateTypeParmType 0x{{[^ ]*}} 'U' dependent depth 1 index 0 // CHECK-NEXT: TemplateTypeParm 0x{{[^ ]*}} 'U' ---------------- mark Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127351/new/ https://reviews.llvm.org/D127351 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits