2009-12-16 04:14:24 +08:00
|
|
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
2009-03-26 08:24:17 +08:00
|
|
|
|
|
|
|
class C {
|
|
|
|
struct S; // expected-note {{previously declared 'private' here}}
|
|
|
|
public:
|
2009-03-26 09:24:28 +08:00
|
|
|
|
2009-03-26 08:24:17 +08:00
|
|
|
struct S {}; // expected-error {{'S' redeclared with 'public' access}}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct S {
|
|
|
|
class C; // expected-note {{previously declared 'public' here}}
|
|
|
|
|
|
|
|
private:
|
|
|
|
class C { }; // expected-error {{'C' redeclared with 'private' access}}
|
2009-03-26 09:24:28 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
class T {
|
|
|
|
protected:
|
|
|
|
template<typename T> struct A; // expected-note {{previously declared 'protected' here}}
|
|
|
|
|
|
|
|
private:
|
|
|
|
template<typename T> struct A {}; // expected-error {{'A' redeclared with 'private' access}}
|
|
|
|
};
|
2009-12-23 08:37:40 +08:00
|
|
|
|
|
|
|
// PR5573
|
|
|
|
namespace test1 {
|
|
|
|
class A {
|
|
|
|
private:
|
|
|
|
class X; // expected-note {{previously declared 'private' here}}
|
|
|
|
public:
|
|
|
|
class X; // expected-error {{ 'X' redeclared with 'public' access}}
|
|
|
|
class X {};
|
|
|
|
};
|
|
|
|
}
|