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