[clang] [Clang] Stop changing DC when instantiating dependent friend specializations (PR #139436)
via cfe-commits
cfe-commits at lists.llvm.org
Sun May 11 01:01:07 PDT 2025
================
@@ -5751,14 +5751,16 @@ void Sema::InstantiateFunctionDefinition(SourceLocation PointOfInstantiation,
RebuildTypeSourceInfoForDefaultSpecialMembers();
SetDeclDefaulted(Function, PatternDecl->getLocation());
} else {
- NamedDecl *ND = Function;
- DeclContext *DC = ND->getLexicalDeclContext();
+ DeclContext *DC = Function->getLexicalDeclContext();
std::optional<ArrayRef<TemplateArgument>> Innermost;
- if (auto *Primary = Function->getPrimaryTemplate();
- Primary &&
+ bool NeedDCFromPrimaryTemplate =
!isGenericLambdaCallOperatorOrStaticInvokerSpecialization(Function) &&
Function->getTemplateSpecializationKind() !=
- TSK_ExplicitSpecialization) {
+ TSK_ExplicitSpecialization &&
+ !PatternDecl->getDependentSpecializationInfo();
+
+ if (auto *Primary = Function->getPrimaryTemplate();
+ Primary && NeedDCFromPrimaryTemplate) {
----------------
cor3ntin wrote:
Can you add a comment? It is sufficiently subtle
https://github.com/llvm/llvm-project/pull/139436
More information about the cfe-commits
mailing list