[clang] [Clang][Sema] fix noexecpt mismatch of friend declaration (PR #102267)
Krystian Stasiowski via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 4 06:18:30 PDT 2024
================
@@ -4698,7 +4698,22 @@ void Sema::InstantiateExceptionSpec(SourceLocation PointOfInstantiation,
// Enter the scope of this instantiation. We don't use
// PushDeclContext because we don't have a scope.
Sema::ContextRAII savedContext(*this, Decl);
+
+ FunctionDecl *Source = Proto->getExtProtoInfo().ExceptionSpec.SourceTemplate;
+ FunctionTemplateDecl *SourceTemplate = Source->getDescribedFunctionTemplate();
+ llvm::SmallDenseMap<clang::Decl *, clang::Decl *> InstTemplateParams;
+ if (CurrentInstantiationScope && SourceTemplate)
+ if (TemplateParameterList *TPL = SourceTemplate->getTemplateParameters())
+ for (NamedDecl *TemplateParam : *TPL)
+ if (auto *Found =
+ CurrentInstantiationScope->findInstantiationOf(TemplateParam))
+ if (auto *InstTemplateParam = Found->dyn_cast<clang::Decl *>())
+ InstTemplateParams[TemplateParam] = InstTemplateParam;
+
----------------
sdkrystian wrote:
Yeah, we should wait until I reland #106585 and then we can fix this. What we can then do is normalize the exception specification the same way we normalize constraints prior to comparing them.
https://github.com/llvm/llvm-project/pull/102267
More information about the cfe-commits
mailing list