If capturing a variable fails, add a capture anyway (and mark it
invalid) so that we can avoid repeated diagnostics for the same capture.
llvm-svn: 361891
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index c7fb565..51a72c6 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -4228,6 +4228,9 @@
SmallVectorImpl<Expr *> &CaptureInits,
ArrayRef<sema::Capture> Candidates) {
for (const sema::Capture &Cap : Candidates) {
+ if (Cap.isInvalid())
+ continue;
+
if (Cap.isThisCapture()) {
Captures.push_back(CapturedStmt::Capture(Cap.getLocation(),
CapturedStmt::VCK_This));