https://github.com/zyn0217 created https://github.com/llvm/llvm-project/pull/87996
I forgot to tidy up these lines that should've been done in the previous commit, specifically: 1. Merge two `CodeSynthesisContext`s into one in `CheckTemplateIdType`. 2. Remove some gratuitous `Sema::` specifiers. 3. Rename the parameter `Template` to `Entity` to avoid confusion. >From 0c8c1b83f8e2d2a7a93066a35575c7174d11efca Mon Sep 17 00:00:00 2001 From: Younan Zhang <zyn7...@gmail.com> Date: Mon, 8 Apr 2024 18:57:16 +0800 Subject: [PATCH] [Sema][NFC] Cleanups after 843cc474f I forgot to tidy up these lines that should've been done in the previous commit, specifically: 1. Merge two CodeSynthesisContexts into one in CheckTemplateIdType. 2. Remove some gratuitous 'Sema::' specifiers. 3. Rename the parameter 'Template' to 'Entity' to avoid confusion. --- clang/include/clang/Sema/Sema.h | 2 +- clang/lib/Frontend/FrontendActions.cpp | 2 +- clang/lib/Sema/SemaTemplate.cpp | 10 ++++------ clang/lib/Sema/SemaTemplateInstantiate.cpp | 19 +++++++++---------- .../lib/Sema/SemaTemplateInstantiateDecl.cpp | 2 ++ 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index 149b268311bc5c..72a4f3ef00c7ef 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -10264,7 +10264,7 @@ class Sema final { /// Note that we are instantiating a type alias template declaration. InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation, - TypeAliasTemplateDecl *Template, + TypeAliasTemplateDecl *Entity, ArrayRef<TemplateArgument> TemplateArgs, SourceRange InstantiationRange = SourceRange()); diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index 7ee6ccf396a891..58fcb2217b05d8 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -453,7 +453,7 @@ class DefaultTemplateInstCallback : public TemplateInstantiationCallback { return "BuildingBuiltinDumpStructCall"; case CodeSynthesisContext::BuildingDeductionGuides: return "BuildingDeductionGuides"; - case Sema::CodeSynthesisContext::TypeAliasTemplateInstantiation: + case CodeSynthesisContext::TypeAliasTemplateInstantiation: return "TypeAliasTemplateInstantiation"; } return ""; diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 0b75f4fb401e63..11c373d62ba8fc 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -4379,15 +4379,13 @@ QualType Sema::CheckTemplateIdType(TemplateName Name, AliasTemplate->getTemplateParameters()->getDepth()); LocalInstantiationScope Scope(*this); - InstantiatingTemplate Inst(*this, TemplateLoc, Template); + InstantiatingTemplate Inst( + *this, /*PointOfInstantiation=*/TemplateLoc, + /*Entity=*/AliasTemplate, + /*TemplateArgs=*/TemplateArgLists.getInnermost()); if (Inst.isInvalid()) return QualType(); - InstantiatingTemplate InstTemplate( - *this, /*PointOfInstantiation=*/AliasTemplate->getBeginLoc(), - /*Template=*/AliasTemplate, - /*TemplateArgs=*/TemplateArgLists.getInnermost()); - std::optional<ContextRAII> SavedContext; if (!AliasTemplate->getDeclContext()->isFileContext()) SavedContext.emplace(*this, AliasTemplate->getDeclContext()); diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index d7b7291091ecb8..a265fd1c46a63e 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -737,11 +737,11 @@ Sema::InstantiatingTemplate::InstantiatingTemplate( Sema::InstantiatingTemplate::InstantiatingTemplate( Sema &SemaRef, SourceLocation PointOfInstantiation, - TypeAliasTemplateDecl *Template, ArrayRef<TemplateArgument> TemplateArgs, + TypeAliasTemplateDecl *Entity, ArrayRef<TemplateArgument> TemplateArgs, SourceRange InstantiationRange) : InstantiatingTemplate( - SemaRef, Sema::CodeSynthesisContext::TypeAliasTemplateInstantiation, - PointOfInstantiation, InstantiationRange, /*Entity=*/Template, + SemaRef, CodeSynthesisContext::TypeAliasTemplateInstantiation, + PointOfInstantiation, InstantiationRange, /*Entity=*/Entity, /*Template=*/nullptr, TemplateArgs) {} Sema::InstantiatingTemplate::InstantiatingTemplate( @@ -983,11 +983,6 @@ void Sema::PrintInstantiationStack() { Diags.Report(Active->PointOfInstantiation, diag::note_template_class_instantiation_here) << CTD << Active->InstantiationRange; - } else { - Diags.Report(Active->PointOfInstantiation, - diag::note_template_type_alias_instantiation_here) - << cast<TypeAliasTemplateDecl>(D) - << Active->InstantiationRange; } break; } @@ -1262,6 +1257,10 @@ void Sema::PrintInstantiationStack() { diag::note_building_deduction_guide_here); break; case CodeSynthesisContext::TypeAliasTemplateInstantiation: + Diags.Report(Active->PointOfInstantiation, + diag::note_template_type_alias_instantiation_here) + << cast<TypeAliasTemplateDecl>(Active->Entity) + << Active->InstantiationRange; break; } } @@ -1278,12 +1277,13 @@ std::optional<TemplateDeductionInfo *> Sema::isSFINAEContext() const { ++Active) { switch (Active->Kind) { - case CodeSynthesisContext::TemplateInstantiation: + case CodeSynthesisContext::TypeAliasTemplateInstantiation: // An instantiation of an alias template may or may not be a SFINAE // context, depending on what else is on the stack. if (isa<TypeAliasTemplateDecl>(Active->Entity)) break; [[fallthrough]]; + case CodeSynthesisContext::TemplateInstantiation: case CodeSynthesisContext::DefaultFunctionArgumentInstantiation: case CodeSynthesisContext::ExceptionSpecInstantiation: case CodeSynthesisContext::ConstraintsCheck: @@ -1340,7 +1340,6 @@ std::optional<TemplateDeductionInfo *> Sema::isSFINAEContext() const { break; case CodeSynthesisContext::Memoization: - case CodeSynthesisContext::TypeAliasTemplateInstantiation: break; } diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 1cb071e4eb7d1c..127a432367b95d 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -1119,6 +1119,8 @@ TemplateDeclInstantiator::VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D) { : (TemplateArgs.begin() + TemplateArgs.getNumLevels() - 1 - D->getTemplateDepth()) ->Args); + if (InstTemplate.isInvalid()) + return nullptr; TypeAliasTemplateDecl *PrevAliasTemplate = nullptr; if (getPreviousDeclForInstantiation<TypedefNameDecl>(Pattern)) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits