| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // 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 {{elaborated type refers to a typedef}}
- return a.foo;
- }
- }
- namespace i1 {
- template <class> class A; // expected-note {{declared here}}
- int test() {
- struct A a; // expected-error {{elaborated type refers to a template}}
- 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;
- }
- }
|