brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · c26b30d Raw
62 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3struct X0 {4  void f0();5  void f1() const;6  void f2() volatile;7  void f3() const volatile;8};9 10void test_object_cvquals(void (X0::*pm)(),11                         void (X0::*pmc)() const,12                         void (X0::*pmv)() volatile,13                         void (X0::*pmcv)() const volatile,14                         X0 *p,15                         const X0 *pc,16                         volatile X0 *pv,17                         const volatile X0 *pcv,18                         X0 &o,19                         const X0 &oc,20                         volatile X0 &ov,21                         const volatile X0 &ocv) {22  (p->*pm)();23  (p->*pmc)();24  (p->*pmv)();25  (p->*pmcv)();26 27  (pc->*pm)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}}' drops 'const' qualifier}}28  (pc->*pmc)();29  (pc->*pmv)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} volatile' drops 'const' qualifier}}30  (pc->*pmcv)();31 32  (pv->*pm)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}}' drops 'volatile' qualifier}}33  (pv->*pmc)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} const' drops 'volatile' qualifier}}34  (pv->*pmv)();35  (pv->*pmcv)();36 37  (pcv->*pm)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}}' drops 'const volatile' qualifiers}}38  (pcv->*pmc)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} const' drops 'volatile' qualifier}}39  (pcv->*pmv)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} volatile' drops 'const' qualifier}}40  (pcv->*pmcv)();41 42  (o.*pm)();43  (o.*pmc)();44  (o.*pmv)();45  (o.*pmcv)();46 47  (oc.*pm)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}}' drops 'const' qualifier}}48  (oc.*pmc)();49  (oc.*pmv)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} volatile' drops 'const' qualifier}}50  (oc.*pmcv)();51 52  (ov.*pm)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}}' drops 'volatile' qualifier}}53  (ov.*pmc)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} const' drops 'volatile' qualifier}}54  (ov.*pmv)();55  (ov.*pmcv)();56 57  (ocv.*pm)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}}' drops 'const volatile' qualifiers}}58  (ocv.*pmc)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} const' drops 'volatile' qualifier}}59  (ocv.*pmv)(); // expected-error-re{{call to pointer to member function of type 'void (){{( __attribute__\(\(thiscall\)\))?}} volatile' drops 'const' qualifier}}60  (ocv.*pmcv)();61}62