tor-browser

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

TestTrivialDtor.cpp (1396B)


      1 #define MOZ_TRIVIAL_DTOR __attribute__((annotate("moz_trivial_dtor")))
      2 
      3 struct MOZ_TRIVIAL_DTOR EmptyClass{};
      4 
      5 template <class T>
      6 struct MOZ_TRIVIAL_DTOR TemplateEmptyClass{};
      7 
      8 struct MOZ_TRIVIAL_DTOR NonEmptyClass {
      9  void *m;
     10 };
     11 
     12 template <class T>
     13 struct MOZ_TRIVIAL_DTOR TemplateNonEmptyClass {
     14  T* m;
     15 };
     16 
     17 struct MOZ_TRIVIAL_DTOR BadUserDefinedDtor { // expected-error {{class 'BadUserDefinedDtor' must have a trivial destructor}}
     18  ~BadUserDefinedDtor() {}
     19 };
     20 
     21 struct MOZ_TRIVIAL_DTOR BadVirtualDtor { // expected-error {{class 'BadVirtualDtor' must have a trivial destructor}}
     22  virtual ~BadVirtualDtor() {}
     23 };
     24 
     25 struct MOZ_TRIVIAL_DTOR OkVirtualMember {
     26  virtual void f();
     27 };
     28 
     29 void foo();
     30 struct MOZ_TRIVIAL_DTOR BadNonEmptyCtorDtor { // expected-error {{class 'BadNonEmptyCtorDtor' must have a trivial destructor}}
     31  BadNonEmptyCtorDtor() { foo(); }
     32  ~BadNonEmptyCtorDtor() { foo(); }
     33 };
     34 
     35 struct NonTrivialDtor {
     36  ~NonTrivialDtor() { foo(); }
     37 };
     38 
     39 struct VirtualMember {
     40  virtual void f();
     41 };
     42 
     43 struct MOZ_TRIVIAL_DTOR BadNonTrivialDtorInBase : NonTrivialDtor { // expected-error {{class 'BadNonTrivialDtorInBase' must have a trivial destructor}}
     44 };
     45 
     46 struct MOZ_TRIVIAL_DTOR BadNonTrivialDtorInMember { // expected-error {{class 'BadNonTrivialDtorInMember' must have a trivial destructor}}
     47  NonTrivialDtor m;
     48 };
     49 
     50 struct MOZ_TRIVIAL_DTOR OkVirtualMemberInMember {
     51  VirtualMember m;
     52 };