Author: Younan Zhang Date: 2024-10-03T08:24:20+08:00 New Revision: 5064c4c4f8f5b09c51bab9b18f62a5c3012989c0
URL: https://github.com/llvm/llvm-project/commit/5064c4c4f8f5b09c51bab9b18f62a5c3012989c0 DIFF: https://github.com/llvm/llvm-project/commit/5064c4c4f8f5b09c51bab9b18f62a5c3012989c0.diff LOG: [Clang][Sema] Bump the instantiated index when skipping past non-init-captures (#110887) Otherwise, we would probably have an unmatched instantiated declaration for init-captures when they come after a non-init capture. No release note because the bug only affects the trunk so far. Fixes #110721 Added: Modified: clang/lib/Sema/SemaConcept.cpp clang/test/SemaTemplate/concepts-lambda.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaConcept.cpp b/clang/lib/Sema/SemaConcept.cpp index 67fc603e9ce1d5..998a148a7d24a1 100644 --- a/clang/lib/Sema/SemaConcept.cpp +++ b/clang/lib/Sema/SemaConcept.cpp @@ -728,6 +728,7 @@ bool Sema::addInstantiatedCapturesToScope( ValueDecl *CapturedPattern = CapturePattern.getCapturedVar(); if (!CapturedPattern->isInitCapture()) { + Instantiated++; continue; } diff --git a/clang/test/SemaTemplate/concepts-lambda.cpp b/clang/test/SemaTemplate/concepts-lambda.cpp index 9c5807bbabdcbf..829a71bc703feb 100644 --- a/clang/test/SemaTemplate/concepts-lambda.cpp +++ b/clang/test/SemaTemplate/concepts-lambda.cpp @@ -279,3 +279,18 @@ void dependent_capture_packs() { L(V<0>{}, V<1>{}, V<2>{})(V<3>{}, V<4>{})(1); } } // namespace init_captures + +namespace GH110721 { + +template <int N> void connect() { + int x = N, y = N; + [x, y = y]() + requires requires { x; } + {}(); +} + +void foo() { + connect<42>(); +} + +} // namespace GH110721 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits