1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3void f1() {
4  struct X {
5    struct Y;
6  };
7
8  struct X::Y {
9    void f() {}
10  };
11}
12
13void 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.
24void 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