OSDN Git Service

cp/:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / warn / Wnvdtor-2.C
1 // PR c++/7302
2 // { dg-do compile }
3 // { dg-options "-Wnon-virtual-dtor" }
4
5 // Warn when a class has virtual functions and accessible non-virtual
6 // destructor, in which case it would be possible but unsafe to delete
7 // an instance of a derived class through a pointer to the base class.
8
9 struct A
10 { // { dg-bogus "non-virtual destructor" }
11 protected:
12   ~A();
13 public:
14   virtual void f() = 0;
15 };
16
17 struct B
18 { // { dg-bogus "non-virtual destructor" }
19 private:
20   ~B();
21 public:
22   virtual void f() = 0;
23 };
24
25 struct C
26 { // { dg-warning "non-virtual destructor" }
27   virtual void f() = 0;
28 };
29
30 struct D
31 { // { dg-warning "non-virtual destructor" }
32   ~D();
33   virtual void f() = 0;
34 };
35
36 struct E;
37
38 struct F
39 { // { dg-warning "non-virtual destructor" }
40 protected:
41   friend class E;
42   ~F();
43 public:
44   virtual void f() = 0;
45 };
46
47 struct G
48 { // { dg-warning "non-virtual destructor" }
49 private:
50   friend class E;
51   ~G();
52 public:
53   virtual void f() = 0;
54 };