summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-03-25 21:11:32 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-03-25 21:11:32 +0000
commitd7b2a9ebd159cfd188db4b81ffe1e8675ad6c206 (patch)
treead4668aef8b377881971ec4ddc487ebc4a6f8b7e
parentafcbdb1570db71e6488bfb8ae064329aa9c0e683 (diff)
downloadbcm5719-llvm-d7b2a9ebd159cfd188db4b81ffe1e8675ad6c206.tar.gz
bcm5719-llvm-d7b2a9ebd159cfd188db4b81ffe1e8675ad6c206.zip
PR19249: Don't forget to DiagnoseUseOfDecl for the implicit use of a variable
in a lambda capture. llvm-svn: 204757
-rw-r--r--clang/lib/Sema/SemaLambda.cpp2
-rw-r--r--clang/test/SemaCXX/lambda-expressions.cpp4
2 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaLambda.cpp b/clang/lib/Sema/SemaLambda.cpp
index cd62ba4b92d..0d287f7210c 100644
--- a/clang/lib/Sema/SemaLambda.cpp
+++ b/clang/lib/Sema/SemaLambda.cpp
@@ -1062,6 +1062,8 @@ void Sema::ActOnStartOfLambdaDefinition(LambdaIntroducer &Intro,
}
Var = R.getAsSingle<VarDecl>();
+ if (Var && DiagnoseUseOfDecl(Var, C->Loc))
+ continue;
}
// C++11 [expr.prim.lambda]p8:
diff --git a/clang/test/SemaCXX/lambda-expressions.cpp b/clang/test/SemaCXX/lambda-expressions.cpp
index 8bacc0aa646..9a53e4604f7 100644
--- a/clang/test/SemaCXX/lambda-expressions.cpp
+++ b/clang/test/SemaCXX/lambda-expressions.cpp
@@ -359,3 +359,7 @@ namespace PR18473 {
};
template void f<NoCopy>(); // expected-note {{instantiation}}
}
+
+void PR19249() {
+ auto x = [&x]{}; // expected-error {{cannot appear in its own init}}
+}
OpenPOWER on IntegriCloud