xref: /llvm-project/lldb/test/API/commands/expression/top-level/test.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht class MyClass
2*99451b44SJordan Rupprecht {
3*99451b44SJordan Rupprecht public:
memberResult()4*99451b44SJordan Rupprecht   int memberResult()
5*99451b44SJordan Rupprecht   {
6*99451b44SJordan Rupprecht     return 1;
7*99451b44SJordan Rupprecht   }
staticResult()8*99451b44SJordan Rupprecht   static int staticResult()
9*99451b44SJordan Rupprecht   {
10*99451b44SJordan Rupprecht     return 1;
11*99451b44SJordan Rupprecht   }
12*99451b44SJordan Rupprecht   int externResult();
13*99451b44SJordan Rupprecht };
14*99451b44SJordan Rupprecht 
15*99451b44SJordan Rupprecht // --
16*99451b44SJordan Rupprecht 
externResult()17*99451b44SJordan Rupprecht int MyClass::externResult()
18*99451b44SJordan Rupprecht {
19*99451b44SJordan Rupprecht   return 1;
20*99451b44SJordan Rupprecht }
21*99451b44SJordan Rupprecht 
22*99451b44SJordan Rupprecht // --
23*99451b44SJordan Rupprecht 
24*99451b44SJordan Rupprecht MyClass m;
25*99451b44SJordan Rupprecht 
26*99451b44SJordan Rupprecht // --
27*99451b44SJordan Rupprecht 
28*99451b44SJordan Rupprecht enum MyEnum {
29*99451b44SJordan Rupprecht   myEnumOne = 1,
30*99451b44SJordan Rupprecht   myEnumTwo,
31*99451b44SJordan Rupprecht   myEnumThree
32*99451b44SJordan Rupprecht };
33*99451b44SJordan Rupprecht 
34*99451b44SJordan Rupprecht // --
35*99451b44SJordan Rupprecht 
36*99451b44SJordan Rupprecht class AnotherClass
37*99451b44SJordan Rupprecht {
38*99451b44SJordan Rupprecht public:
complicatedFunction()39*99451b44SJordan Rupprecht     __attribute__ ((always_inline)) int complicatedFunction()
40*99451b44SJordan Rupprecht     {
41*99451b44SJordan Rupprecht         struct {
42*99451b44SJordan Rupprecht             int i;
43*99451b44SJordan Rupprecht         } s = { 15 };
44*99451b44SJordan Rupprecht 
45*99451b44SJordan Rupprecht         int numbers[4] = { 2, 3, 4, 5 };
46*99451b44SJordan Rupprecht 
47*99451b44SJordan Rupprecht         for (signed char number: numbers)
48*99451b44SJordan Rupprecht         {
49*99451b44SJordan Rupprecht             s.i -= number;
50*99451b44SJordan Rupprecht         }
51*99451b44SJordan Rupprecht 
52*99451b44SJordan Rupprecht         return s.i;
53*99451b44SJordan Rupprecht     }
54*99451b44SJordan Rupprecht };
55*99451b44SJordan Rupprecht 
56*99451b44SJordan Rupprecht // --
57*99451b44SJordan Rupprecht 
58*99451b44SJordan Rupprecht class DiamondA
59*99451b44SJordan Rupprecht {
60*99451b44SJordan Rupprecht private:
61*99451b44SJordan Rupprecht   struct {
62*99451b44SJordan Rupprecht     int m_i;
63*99451b44SJordan Rupprecht   };
64*99451b44SJordan Rupprecht public:
DiamondA(int i)65*99451b44SJordan Rupprecht   DiamondA(int i) : m_i(i) { }
accessor()66*99451b44SJordan Rupprecht   int accessor() { return m_i; }
67*99451b44SJordan Rupprecht };
68*99451b44SJordan Rupprecht 
69*99451b44SJordan Rupprecht // --
70*99451b44SJordan Rupprecht 
71*99451b44SJordan Rupprecht class DiamondB : public virtual DiamondA
72*99451b44SJordan Rupprecht {
73*99451b44SJordan Rupprecht public:
DiamondB(int i)74*99451b44SJordan Rupprecht   DiamondB(int i) : DiamondA(i) { }
75*99451b44SJordan Rupprecht };
76*99451b44SJordan Rupprecht 
77*99451b44SJordan Rupprecht // --
78*99451b44SJordan Rupprecht 
79*99451b44SJordan Rupprecht class DiamondC : public virtual DiamondA
80*99451b44SJordan Rupprecht {
81*99451b44SJordan Rupprecht public:
DiamondC(int i)82*99451b44SJordan Rupprecht   DiamondC(int i) : DiamondA(i) { }
83*99451b44SJordan Rupprecht };
84*99451b44SJordan Rupprecht 
85*99451b44SJordan Rupprecht // --
86*99451b44SJordan Rupprecht 
87*99451b44SJordan Rupprecht class DiamondD : public DiamondB, public DiamondC
88*99451b44SJordan Rupprecht {
89*99451b44SJordan Rupprecht public:
DiamondD(int i)90*99451b44SJordan Rupprecht   DiamondD(int i) : DiamondA(i), DiamondB(i), DiamondC(i) { }
91*99451b44SJordan Rupprecht };
92*99451b44SJordan Rupprecht 
93*99451b44SJordan Rupprecht // --
94*99451b44SJordan Rupprecht 
doTest()95*99451b44SJordan Rupprecht int doTest()
96*99451b44SJordan Rupprecht {
97*99451b44SJordan Rupprecht     int accumulator = m.memberResult();
98*99451b44SJordan Rupprecht     accumulator += MyClass::staticResult();
99*99451b44SJordan Rupprecht     accumulator += m.externResult();
100*99451b44SJordan Rupprecht     accumulator += MyEnum::myEnumThree;
101*99451b44SJordan Rupprecht     accumulator += myEnumOne;
102*99451b44SJordan Rupprecht     accumulator += AnotherClass().complicatedFunction();
103*99451b44SJordan Rupprecht     accumulator += DiamondD(3).accessor();
104*99451b44SJordan Rupprecht     return accumulator;
105*99451b44SJordan Rupprecht }
106*99451b44SJordan Rupprecht 
107*99451b44SJordan Rupprecht // --
108