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