p3.cpp revision 0a29422eb722c0ffbb98b98d8636042b19069f1a
1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang// RUN: %clang_cc1 -fsyntax-only -verify %s 2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangvoid f1() { 4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct X { 5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct Y; 6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct X::Y { 9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang void f() {} 10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangvoid f2() { 14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct X { 15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct Y; 16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct Y { 18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang void f() {} 19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang 23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang// A class nested within a local class is a local class. 24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangvoid f3(int a) { // expected-note{{'a' declared here}} 25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct X { 26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang struct Y { 27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang int f() { return a; } // expected-error{{reference to local variable 'a' declared in enclosing function 'f3'}} 28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang }; 30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang} 31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang