diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-25 21:11:32 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-25 21:11:32 +0000 |
commit | d7b2a9ebd159cfd188db4b81ffe1e8675ad6c206 (patch) | |
tree | ad4668aef8b377881971ec4ddc487ebc4a6f8b7e | |
parent | afcbdb1570db71e6488bfb8ae064329aa9c0e683 (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/lambda-expressions.cpp | 4 |
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}} +} |