1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
2 | |
3 | void f1() { |
4 | struct X { |
5 | struct Y; |
6 | }; |
7 | |
8 | struct X::Y { |
9 | void f() {} |
10 | }; |
11 | } |
12 | |
13 | void f2() { |
14 | struct X { |
15 | struct Y; |
16 | |
17 | struct Y { |
18 | void f() {} |
19 | }; |
20 | }; |
21 | } |
22 | |
23 | // A class nested within a local class is a local class. |
24 | void f3(int a) { // expected-note{{'a' declared here}} |
25 | struct X { |
26 | struct Y { |
27 | int f() { return a; } // expected-error{{reference to local variable 'a' declared in enclosing function 'f3'}} |
28 | }; |
29 | }; |
30 | } |
31 | |