class.cpp revision d93f0ddba0965ded252e228134b30ce30e863fb0
1// RUN: clang -fsyntax-only -verify %s 2class C { 3public: 4 auto int errx; // expected-error {{error: storage class specified for a member declaration}} 5 register int erry; // expected-error {{error: storage class specified for a member declaration}} 6 extern int errz; // expected-error {{error: storage class specified for a member declaration}} 7 8 static void sm() { 9 sx = 0; 10 this->x = 0; // expected-error {{error: invalid use of 'this' outside of a nonstatic member function}} 11 x = 0; // expected-error {{error: invalid use of member 'x' in static member function}} 12 } 13 14 class NestedC { 15 void m() { 16 sx = 0; 17 x = 0; // expected-error {{error: invalid use of nonstatic data member 'x'}} 18 } 19 }; 20 21 int b : 1, w : 2; 22 int : 1, : 2; 23 typedef int E : 1; // expected-error {{error: cannot declare 'E' to be a bit-field type}} 24 static int sb : 1; // expected-error {{error: static member 'sb' cannot be a bit-field}} 25 static int vs; 26 27 typedef int func(); 28 func tm; 29 func *ptm; 30 func btm : 1; // expected-error {{error: bit-field 'btm' with non-integral type}} 31 NestedC bc : 1; // expected-error {{error: bit-field 'bc' with non-integral type}} 32 33 enum E { en1, en2 }; 34 35 int i = 0; // expected-error {{error: 'i' can only be initialized if it is a static const integral data member}} 36 static int si = 0; // expected-error {{error: 'si' can only be initialized if it is a static const integral data member}} 37 static const NestedC ci = 0; // expected-error {{error: 'ci' can only be initialized if it is a static const integral data member}} 38 static const int nci = vs; // expected-error {{error: initializer element is not a compile-time constant}} 39 static const int vi = 0; 40 static const E evi = 0; 41 42 void m() { 43 sx = 0; 44 this->x = 0; 45 y = 0; 46 this = 0; // expected-error {{error: expression is not assignable}} 47 } 48 49 int f1(int p) { 50 A z = 6; 51 return p + x + this->y + z; 52 } 53 54 typedef int A; 55 56 virtual int vi; // expected-error {{error: 'virtual' can only appear on non-static member functions}} 57 virtual static int vsif(); // expected-error {{error: 'virtual' can only appear on non-static member functions}} 58 virtual int vif(); 59 60private: 61 int x,y; 62 static int sx; 63 64 static const int number = 50; 65 static int arr[number]; 66}; 67 68class C2 { 69 void f() { 70 static int lx; 71 class LC1 { 72 int m() { return lx; } 73 }; 74 class LC2 { 75 int m() { return lx; } 76 }; 77 } 78}; 79