// RUN: %clang_cc1 -fsyntax-only -verify %s namespace test0 { struct A { static int foo; }; namespace i0 { typedef int A; // expected-note {{declared here}} int test() { struct A a; // expected-error {{typedef 'A' cannot be referenced with a struct specifier}} return a.foo; } } namespace i1 { template <class> class A; // expected-note {{declared here}} int test() { struct A a; // expected-error {{template 'A' cannot be referenced with a struct specifier}} return a.foo; } } namespace i2 { int A; int test() { struct A a; return a.foo; } } namespace i3 { void A(); int test() { struct A a; return a.foo; } } namespace i4 { template <class T> void A(); int test() { struct A a; return a.foo; } } // This should magically be okay; see comment in SemaDecl.cpp. // rdar://problem/7898108 typedef struct A A; int test() { struct A a; return a.foo; } } |