(root)/
gcc-13.2.0/
gcc/
testsuite/
gdc.test/
runnable_cxx/
extra-files/
cppb.h
       1  // avoid declaration in cpp file so the C/C++ compiler does no assume
       2  // these are inaccessible from elsewhere
       3  class Cpp15589Base
       4  {
       5  public:
       6      ~Cpp15589Base();
       7  
       8      virtual void nonVirtual() {}
       9      int a;
      10  };
      11  
      12  class Cpp15589Derived : public Cpp15589Base
      13  {
      14  public:
      15      Cpp15589Derived();
      16      ~Cpp15589Derived();
      17      int b;
      18  };
      19  
      20  class Cpp15589BaseVirtual
      21  {
      22  public:
      23      virtual void beforeDtor() {}
      24  
      25      Cpp15589BaseVirtual();
      26      virtual ~Cpp15589BaseVirtual();
      27  
      28      virtual void afterDtor() {}
      29      int c;
      30  };
      31  
      32  class Cpp15589DerivedVirtual : public Cpp15589BaseVirtual
      33  {
      34  public:
      35      Cpp15589DerivedVirtual(); // explicit C++ ctor needed, see https://issues.dlang.org/show_bug.cgi?id=18966
      36      virtual ~Cpp15589DerivedVirtual();
      37  
      38      virtual void afterDtor() {}
      39  
      40      int d;
      41  };
      42  
      43  class Cpp15589IntroducingVirtual : public Cpp15589Base
      44  {
      45  public:
      46      Cpp15589IntroducingVirtual();
      47      virtual void beforeIntroducedVirtual() {}
      48      virtual ~Cpp15589IntroducingVirtual();
      49      virtual void afterIntroducedVirtual(int) {}
      50  
      51      int e;
      52  };
      53  
      54  struct Cpp15589Struct
      55  {
      56      ~Cpp15589Struct();
      57      int s;
      58  };
      59  
      60  class Base18966
      61  {
      62  public:
      63      Base18966();
      64      virtual ~Base18966();
      65      virtual void vf();
      66      int x;
      67  };
      68  
      69  class A18966
      70  {
      71  public:
      72      char calledOverloads[8];
      73      int i;
      74      A18966();
      75      virtual void foo();
      76  };
      77  
      78  class B18966 : public A18966
      79  {
      80  public:
      81      B18966();
      82      void foo() /*override*/;
      83  };