1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerextern char *bork; 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerchar *& bar = bork; 55f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 627c8dc06f65d7abcf6a7e7f64a7960c9a150ca01Douglas Gregorint val; 727c8dc06f65d7abcf6a7e7f64a7960c9a150ca01Douglas Gregor 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencervoid foo(int &a) { 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer} 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencertypedef int & A; 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid g(const A aref) { // expected-warning {{'const' qualifier on reference type 'A' (aka 'int &') has no effect}} 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer} 155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 1627c8dc06f65d7abcf6a7e7f64a7960c9a150ca01Douglas Gregorint & const X = val; // expected-error {{'const' qualifier may not be applied to a reference}} 1727c8dc06f65d7abcf6a7e7f64a7960c9a150ca01Douglas Gregorint & volatile Y = val; // expected-error {{'volatile' qualifier may not be applied to a reference}} 1827c8dc06f65d7abcf6a7e7f64a7960c9a150ca01Douglas Gregorint & const volatile Z = val; /* expected-error {{'const' qualifier may not be applied}} \ 195f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer expected-error {{'volatile' qualifier may not be applied}} */ 20743de1f671ee0ef213c7404cfdc85579dd12c56eSebastian Redl 21b3df1386680b3830d2f4d300d4d7eaba134135fcDouglas Gregortypedef int && RV; // expected-warning {{rvalue references are a C++11 extension}} 22