tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

TestNoDuplicateRefCntMember.cpp (1350B)


      1 class C1 {};
      2 
      3 class RC1 {
      4 public:
      5  virtual void AddRef();
      6  virtual void Release();
      7 
      8 private:
      9  int mRefCnt; // expected-note 2 {{Superclass 'RC1' also has an mRefCnt member}} expected-note 3 {{Superclass 'RC1' has an mRefCnt member}}
     10 };
     11 
     12 class RC2 : public RC1 { // expected-error {{Refcounted record 'RC2' has multiple mRefCnt members}}
     13 public:
     14  virtual void AddRef();
     15  virtual void Release();
     16 
     17 private:
     18  int mRefCnt; // expected-note {{Consider using the _INHERITED macros for AddRef and Release here}}
     19 };
     20 
     21 class C2 : public RC1 {};
     22 
     23 class RC3 : public RC1 {};
     24 
     25 class RC4 : public RC3, public C2 {}; // expected-error {{Refcounted record 'RC4' has multiple superclasses with mRefCnt members}}
     26 
     27 class RC5 : public RC1 {};
     28 
     29 class RC6 : public C1, public RC5 { // expected-error {{Refcounted record 'RC6' has multiple mRefCnt members}}
     30 public:
     31  virtual void AddRef();
     32  virtual void Release();
     33 
     34 private:
     35  int mRefCnt; // expected-note {{Consider using the _INHERITED macros for AddRef and Release here}}
     36 };
     37 
     38 class Predecl;
     39 
     40 class OtherRC {
     41 public:
     42  virtual void AddRef();
     43  virtual void Release();
     44 
     45 private:
     46  int mRefCnt; // expected-note {{Superclass 'OtherRC' has an mRefCnt member}}
     47 };
     48 
     49 class MultRCSuper : public RC1, public OtherRC {}; // expected-error {{Refcounted record 'MultRCSuper' has multiple superclasses with mRefCnt members}}