blob: 245e27042be3547adf2800a84d195c354ac1190e [file] [log] [blame]
Douglas Gregor53a9bdf2012-02-01 01:18:43 +00001// RUN: %clang_cc1 -std=c++11 %s -verify
2
Douglas Gregor8c50e7c2012-02-09 00:47:04 +00003int GlobalVar; // expected-note {{declared here}}
Douglas Gregor53a9bdf2012-02-01 01:18:43 +00004
5namespace N {
6 int AmbiguousVar; // expected-note {{candidate}}
7}
8int AmbiguousVar; // expected-note {{candidate}}
9using namespace N;
10
11class X0 {
12 int Member;
13
14 static void Overload(int);
15 void Overload();
16 virtual X0& Overload(float);
17
18 void explicit_capture() {
Douglas Gregor8c50e7c2012-02-09 00:47:04 +000019 int variable; // expected-note {{declared here}}
Douglas Gregor656bc622012-02-09 08:26:42 +000020 (void)[&Overload] () {}; // expected-error {{does not name a variable}}
21 (void)[&GlobalVar] () {}; // expected-error {{does not have automatic storage duration}}
22 (void)[&AmbiguousVar] () {}; // expected-error {{reference to 'AmbiguousVar' is ambiguous}}
23 (void)[&Variable] () {}; // expected-error {{use of undeclared identifier 'Variable'; did you mean 'variable'}}
Douglas Gregor53a9bdf2012-02-01 01:18:43 +000024 }
25};
Douglas Gregorf02455e2012-02-10 09:26:04 +000026
27void test_reaching_scope() {
28 int local; // expected-note{{declared here}}
29 static int local_static; // expected-note{{'local_static' declared here}}
30 (void)[=]() {
31 struct InnerLocal {
32 void member() {
33 (void)[local, // expected-error{{reference to local variable 'local' declared in enclosing function 'test_reaching_scope'}}
34 local_static]() { // expected-error{{'local_static' cannot be captured because it does not have automatic storage duration}}
35 return 0;
36 };
37 }
38 };
39 };
40}