blob: 804e4f785ee635127ccb8381335fc8f383a57299 [file] [log] [blame]
Reid Kleckner6c03cfb2016-12-09 21:10:43 +00001// RUN: %clang_cc1 %s -verify -fno-spell-checking
Richard Trieu1f3ea7b2012-11-02 01:08:58 +00002
3struct S { static int a,b,c;};
Reid Kleckner6c03cfb2016-12-09 21:10:43 +00004int S::(a); // expected-error{{expected unqualified-id}}
5int S::(b; // expected-error{{expected unqualified-id}}
6 );
Richard Trieu1f3ea7b2012-11-02 01:08:58 +00007int S::c;
Reid Kleckner6c03cfb2016-12-09 21:10:43 +00008int S::(*d); // expected-error{{expected unqualified-id}}
9int S::(*e; // expected-error{{expected unqualified-id}}
10 );
Richard Trieu1f3ea7b2012-11-02 01:08:58 +000011int S::*f;
Reid Kleckner6c03cfb2016-12-09 21:10:43 +000012int g = S::(a); // expected-error {{expected unqualified-id}} expected-error {{use of undeclared identifier 'a'}}
13int h = S::(b; // expected-error {{expected unqualified-id}} expected-error {{use of undeclared identifier 'b'}}
14 );
Richard Trieu1f3ea7b2012-11-02 01:08:58 +000015int i = S::c;
16
17void foo() {
18 int a;
Reid Kleckner6c03cfb2016-12-09 21:10:43 +000019 a = ::(g); // expected-error{{expected unqualified-id}}
20 a = ::(h; // expected-error{{expected unqualified-id}}
Richard Trieu1f3ea7b2012-11-02 01:08:58 +000021 a = ::i;
22}
David Majnemer6ca445e2014-12-17 01:39:22 +000023
Reid Kleckner6c03cfb2016-12-09 21:10:43 +000024// The following tests used to be crash bugs.
25
26// PR21815
Richard Smithd63db6e2015-12-19 02:40:19 +000027// expected-error@+2{{C++ requires a type specifier for all declarations}}
28// expected-error@+1{{expected unqualified-id}}
29a (::( ));
30
31::((c )); // expected-error{{expected unqualified-id}}
Reid Kleckner6c03cfb2016-12-09 21:10:43 +000032
33// PR26623
34int f1(::(B) p); // expected-error {{expected unqualified-id}} expected-error {{use of undeclared identifier 'B'}}
35
36int f2(::S::(C) p); // expected-error {{expected unqualified-id}} expected-error {{use of undeclared identifier 'C'}}