1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace test0 { 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A { 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao static int foo; 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao }; 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao namespace i0 { 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef int A; // expected-note {{declared here}} 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int test() { 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A a; // expected-error {{elaborated type refers to a typedef}} 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return a.foo; 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao namespace i1 { 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao template <class> class A; // expected-note {{declared here}} 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int test() { 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A a; // expected-error {{elaborated type refers to a template}} 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return a.foo; 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao namespace i2 { 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int A; 28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int test() { 30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A a; 31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return a.foo; 32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao namespace i3 { 36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void A(); 37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int test() { 39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A a; 40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return a.foo; 41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao namespace i4 { 45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao template <class T> void A(); 46ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 47ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int test() { 48ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A a; 49ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return a.foo; 50ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 51ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 52ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 53ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao // This should magically be okay; see comment in SemaDecl.cpp. 54ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao // rdar://problem/7898108 55ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef struct A A; 56ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int test() { 57ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct A a; 58ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return a.foo; 59ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 60ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 61