61 lines
1.0 KiB
C++
61 lines
1.0 KiB
C++
// 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;
|
|
}
|
|
}
|