1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s
23d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet
3d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smithvoid f() const; // expected-error {{non-member function cannot have 'const' qualifier}}
4d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smithvoid (*pf)() const; // expected-error {{pointer to function type cannot have 'const' qualifier}}
5d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smithextern void (&rf)() const; // expected-error {{reference to function type cannot have 'const' qualifier}}
63d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet
7d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smithtypedef void cfn() const;
8d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smithcfn f2; // expected-error {{non-member function of type 'cfn' (aka 'void () const') cannot have 'const' qualifier}}
93d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet
103d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venetclass C {
113d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  void f() const;
123d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  cfn f2;
13d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smith  static void f3() const; // expected-error {{static member function cannot have 'const' qualifier}}
14d37b360bf9f954af119c9805fdc79ab9d30e06c6Richard Smith  static cfn f4; // expected-error {{static member function of type 'cfn' (aka 'void () const') cannot have 'const' qualifier}}
153d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet
163d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  void m1() {
173d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet    x = 0;
183d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  }
193d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet
203d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  void m2() const {
213d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet    x = 0; // expected-error {{read-only variable is not assignable}}
223d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  }
233d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet
243d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet  int x;
253d658640abc128dcc84a5a5201456395c86c4fa6Cedric Venet};
26f9ea1f392ab8946f7bfc3f98802a8e5e6fe073f3Sebastian Redl
27f9ea1f392ab8946f7bfc3f98802a8e5e6fe073f3Sebastian Redlvoid (C::*mpf)() const;
28f9ea1f392ab8946f7bfc3f98802a8e5e6fe073f3Sebastian Redlcfn C::*mpg;
29