xref: /llvm-project/lldb/test/API/commands/frame/diagnose/inheritance/main.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <stdio.h>
2*99451b44SJordan Rupprecht #include <stdint.h>
3*99451b44SJordan Rupprecht 
4*99451b44SJordan Rupprecht class A
5*99451b44SJordan Rupprecht {
6*99451b44SJordan Rupprecht public:
A(int a)7*99451b44SJordan Rupprecht     A(int a) :
8*99451b44SJordan Rupprecht         m_a(a)
9*99451b44SJordan Rupprecht     {
10*99451b44SJordan Rupprecht     }
~A()11*99451b44SJordan Rupprecht     virtual ~A(){}
get2() const12*99451b44SJordan Rupprecht     virtual int get2() const { return m_a; }
get() const13*99451b44SJordan Rupprecht     virtual int get() const { return m_a; }
14*99451b44SJordan Rupprecht protected:
15*99451b44SJordan Rupprecht     int m_a;
16*99451b44SJordan Rupprecht };
17*99451b44SJordan Rupprecht 
18*99451b44SJordan Rupprecht class B : public A
19*99451b44SJordan Rupprecht {
20*99451b44SJordan Rupprecht public:
B(int a,int b)21*99451b44SJordan Rupprecht     B(int a, int b) :
22*99451b44SJordan Rupprecht         A(a),
23*99451b44SJordan Rupprecht         m_b(b)
24*99451b44SJordan Rupprecht     {
25*99451b44SJordan Rupprecht     }
26*99451b44SJordan Rupprecht 
~B()27*99451b44SJordan Rupprecht     ~B() override
28*99451b44SJordan Rupprecht     {
29*99451b44SJordan Rupprecht     }
30*99451b44SJordan Rupprecht 
get2() const31*99451b44SJordan Rupprecht     int get2() const override
32*99451b44SJordan Rupprecht     {
33*99451b44SJordan Rupprecht         return m_b;
34*99451b44SJordan Rupprecht     }
get() const35*99451b44SJordan Rupprecht     int get() const override
36*99451b44SJordan Rupprecht     {
37*99451b44SJordan Rupprecht         return m_b;
38*99451b44SJordan Rupprecht     }
39*99451b44SJordan Rupprecht 
40*99451b44SJordan Rupprecht protected:
41*99451b44SJordan Rupprecht     int m_b;
42*99451b44SJordan Rupprecht };
43*99451b44SJordan Rupprecht 
44*99451b44SJordan Rupprecht struct C
45*99451b44SJordan Rupprecht {
CC46*99451b44SJordan Rupprecht     C(int c) : m_c(c){}
~CC47*99451b44SJordan Rupprecht     virtual ~C(){}
48*99451b44SJordan Rupprecht     int m_c;
49*99451b44SJordan Rupprecht };
50*99451b44SJordan Rupprecht 
51*99451b44SJordan Rupprecht class D : public C, public B
52*99451b44SJordan Rupprecht {
53*99451b44SJordan Rupprecht public:
D(int a,int b,int c,int d)54*99451b44SJordan Rupprecht     D(int a, int b, int c, int d) :
55*99451b44SJordan Rupprecht         C(c),
56*99451b44SJordan Rupprecht         B(a, b),
57*99451b44SJordan Rupprecht         m_d(d)
58*99451b44SJordan Rupprecht     {
59*99451b44SJordan Rupprecht     }
60*99451b44SJordan Rupprecht protected:
61*99451b44SJordan Rupprecht     int m_d;
62*99451b44SJordan Rupprecht };
main(int argc,char const * argv[],char const * envp[])63*99451b44SJordan Rupprecht int main (int argc, char const *argv[], char const *envp[])
64*99451b44SJordan Rupprecht {
65*99451b44SJordan Rupprecht     D *good_d = new D(1, 2, 3, 4);
66*99451b44SJordan Rupprecht     D *d = nullptr;
67*99451b44SJordan Rupprecht     return d->get();
68*99451b44SJordan Rupprecht }
69*99451b44SJordan Rupprecht 
70