================ @@ -1916,9 +1935,33 @@ Decl *TemplateInstantiator::TransformDecl(SourceLocation Loc, Decl *D) { // template parameter. } + if (SemaRef.CurrentInstantiationScope) { + if (isSubstitutingConstraints() && isa<ParmVarDecl>(D) && + maybeInstantiateFunctionParameterToScope(cast<ParmVarDecl>(D))) + return nullptr; + } + return SemaRef.FindInstantiatedDecl(Loc, cast<NamedDecl>(D), TemplateArgs); } +bool TemplateInstantiator::maybeInstantiateFunctionParameterToScope( + ParmVarDecl *OldParm) { + if (SemaRef.CurrentInstantiationScope->findInstantiationUnsafe(OldParm)) + return false; + // The current context might have been changed in the process of transforming + // lambda expression. So resume it before we substitute into the parameter. ---------------- cor3ntin wrote:
```suggestion // lambda expression. So restore it before we substitute into the parameter. ``` https://github.com/llvm/llvm-project/pull/102857 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits