blob: 613ac9b200f17447155d74c2efc4a2b39183af52 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Cedric Venet3d658642009-02-14 20:20:19 +00002
Richard Smithd37b3602012-02-10 11:05:11 +00003void f() const; // expected-error {{non-member function cannot have 'const' qualifier}}
4void (*pf)() const; // expected-error {{pointer to function type cannot have 'const' qualifier}}
5extern void (&rf)() const; // expected-error {{reference to function type cannot have 'const' qualifier}}
Cedric Venet3d658642009-02-14 20:20:19 +00006
Richard Smithd37b3602012-02-10 11:05:11 +00007typedef void cfn() const;
8cfn f2; // expected-error {{non-member function of type 'cfn' (aka 'void () const') cannot have 'const' qualifier}}
Cedric Venet3d658642009-02-14 20:20:19 +00009
10class C {
11 void f() const;
12 cfn f2;
Richard Smithd37b3602012-02-10 11:05:11 +000013 static void f3() const; // expected-error {{static member function cannot have 'const' qualifier}}
14 static cfn f4; // expected-error {{static member function of type 'cfn' (aka 'void () const') cannot have 'const' qualifier}}
Cedric Venet3d658642009-02-14 20:20:19 +000015
16 void m1() {
17 x = 0;
18 }
19
20 void m2() const {
21 x = 0; // expected-error {{read-only variable is not assignable}}
22 }
23
24 int x;
25};
Sebastian Redlf9ea1f32010-07-12 23:11:43 +000026
27void (C::*mpf)() const;
28cfn C::*mpg;
Richard Smithe9253222012-10-24 23:51:56 +000029
30// Don't crash!
31void (PR14171)() const; // expected-error {{non-member function cannot have 'const' qualifier}}
Reid Kleckner12df2462013-06-24 17:51:48 +000032
33// Test template instantiation of decayed array types. Not really related to
34// type quals.
35template <typename T> void arrayDecay(const T a[]) { }
36void instantiateArrayDecay() {
37 int a[1];
38 arrayDecay(a);
39}