blob: e031ce2e9045162f4f59328060a8087de15a812a [file] [log] [blame]
Stephen Hines0e2c34f2015-03-23 12:09:02 -07001// RUN: %clang_cc1 %s -fsyntax-only -verify -DPR21815
Richard Trieu919b9552012-11-02 01:08:58 +00002// RUN: cp %s %t
3// RUN: not %clang_cc1 -x c++ -fixit %t
4// RUN: %clang_cc1 -x c++ %t
5
6struct S { static int a,b,c;};
Richard Trieueacff032012-11-02 21:41:42 +00007int S::(a); // expected-error{{unexpected parenthesis after '::'}}
8int S::(b; // expected-error{{unexpected parenthesis after '::'}}
Richard Trieu919b9552012-11-02 01:08:58 +00009int S::c;
Richard Trieueacff032012-11-02 21:41:42 +000010int S::(*d); // expected-error{{unexpected parenthesis after '::'}}
11int S::(*e; // expected-error{{unexpected parenthesis after '::'}}
Richard Trieu919b9552012-11-02 01:08:58 +000012int S::*f;
Richard Trieueacff032012-11-02 21:41:42 +000013int g = S::(a); // expected-error{{unexpected parenthesis after '::'}}
14int h = S::(b; // expected-error{{unexpected parenthesis after '::'}}
Richard Trieu919b9552012-11-02 01:08:58 +000015int i = S::c;
16
17void foo() {
18 int a;
Richard Trieueacff032012-11-02 21:41:42 +000019 a = ::(g); // expected-error{{unexpected parenthesis after '::'}}
20 a = ::(h; // expected-error{{unexpected parenthesis after '::'}}
Richard Trieu919b9552012-11-02 01:08:58 +000021 a = ::i;
22}
Stephen Hines0e2c34f2015-03-23 12:09:02 -070023
24#ifdef PR21815
25// expected-error@+4{{C++ requires a type specifier for all declarations}}
26// expected-error@+3{{expected unqualified-id}}
27// expected-error@+3{{expected expression}}
28// expected-error@+1{{expected ';' after top level declarator}}
29a (::(
30#endif