| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // RUN: %clang_cc1 -fsyntax-only -verify %s
- struct S
- {
- static int v1; // expected-note{{previous declaration is here}}
- int v1; //expected-error{{duplicate member 'v1'}}
- int v; //expected-note 2{{previous definition is here}} \
- // expected-note{{previous declaration is here}}
- static int v; //expected-error{{redefinition of 'v' as different kind of symbol}}
- int v; //expected-error{{duplicate member 'v'}}
- static int v; //expected-error{{redefinition of 'v' as different kind of symbol}}
- enum EnumT { E = 10 };
- friend struct M;
- struct X; //expected-note{{forward declaration of 'S::X'}}
- friend struct X;
- };
- S::EnumT Evar = S::E; // ok
- S::EnumT Evar2 = EnumT(); //expected-error{{use of undeclared identifier 'EnumT'}}
- S::M m; //expected-error{{no type named 'M' in 'S'}}
- S::X x; //expected-error{{variable has incomplete type 'S::X'}}
- struct S2
- {
- static int v2; // expected-note{{previous declaration is here}}
- static int v2; //expected-error{{duplicate member 'v2'}}
- };
- struct S3
- {
- static int v3;
- struct S4
- {
- static int v3;
- };
- };
- struct S4
- {
- static int v4;
- };
- int S4::v4; //expected-note{{previous definition is here}}
- int S4::v4; //expected-error{{redefinition of 'v4'}}
- struct S5
- {
- static int v5; //expected-note{{previous definition is here}}
- void v5() { } //expected-error{{redefinition of 'v5' as different kind of symbol}}
-
- void v6() { } //expected-note{{previous definition is here}}
- static int v6; //expected-error{{redefinition of 'v6' as different kind of symbol}}
-
- void v7() { }
- void v7(int) { } //expected-note{{previous definition is here}}
- static int v7; //expected-error{{redefinition of 'v7' as different kind of symbol}}
-
- void v8();
- int v8(int); //expected-note{{previous declaration is here}}
- int v8; //expected-error{{duplicate member 'v8'}}
-
-
- };
- namespace PR8245 {
- class X {
- public:
- template<class C>
- class Inner {
- public:
- void foo(bool bar = true);
- int bam;
- };
- Inner<int> _foo;
- };
- void f() {
- X::Inner<int> c2i;
- X::Inner<float> c2f;
- c2i.foo();
- c2f.foo();
- }
- class Y {
- class Inner {
- void foo(int = sizeof(Y));
- };
- };
- }
|