https://github.com/zyn0217 created https://github.com/llvm/llvm-project/pull/114951
Backport 227afac3 >From ee31957b09ee5cb03d36b15fcc59cff5754aa553 Mon Sep 17 00:00:00 2001 From: Younan Zhang <zyn7...@gmail.com> Date: Tue, 5 Nov 2024 16:25:35 +0800 Subject: [PATCH] release/19.x: [Clang] Consider outer instantiation scopes for constraint normalization Backport 227afac3 --- clang/lib/Sema/SemaConcept.cpp | 2 +- .../SemaTemplate/concepts-out-of-line-def.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaConcept.cpp b/clang/lib/Sema/SemaConcept.cpp index 244f6ef2f53faa..c45443d76e6bad 100644 --- a/clang/lib/Sema/SemaConcept.cpp +++ b/clang/lib/Sema/SemaConcept.cpp @@ -967,7 +967,7 @@ static const Expr *SubstituteConstraintExpressionWithoutSatisfaction( // parameters that the surrounding function hasn't been instantiated yet. Note // this may happen while we're comparing two templates' constraint // equivalence. - LocalInstantiationScope ScopeForParameters(S); + LocalInstantiationScope ScopeForParameters(S, /*CombineWithOuterScope=*/true); if (auto *FD = DeclInfo.getDecl()->getAsFunction()) for (auto *PVD : FD->parameters()) { if (!PVD->isParameterPack()) { diff --git a/clang/test/SemaTemplate/concepts-out-of-line-def.cpp b/clang/test/SemaTemplate/concepts-out-of-line-def.cpp index 333187b0d74ad6..c5dd855f0c000b 100644 --- a/clang/test/SemaTemplate/concepts-out-of-line-def.cpp +++ b/clang/test/SemaTemplate/concepts-out-of-line-def.cpp @@ -622,3 +622,19 @@ void A<T>::method(Ts&... ts) } {} } + +namespace GH114685 { + +template <typename T> struct ptr { + template <typename U> + friend ptr<U> make_item(auto &&args) + requires(sizeof(args) > 1); +}; + +template <typename U> +ptr<U> make_item(auto &&args) + requires(sizeof(args) > 1) {} + +ptr<char> p; + +} // namespace GH114685 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits