xref: /llvm-project/lldb/test/API/lang/cpp/diamond/main.cpp (revision 78e17e23aa0fe525d00a2e8f0c7469f9a6b94f40)
199451b44SJordan Rupprecht static int g_next_value = 12345;
299451b44SJordan Rupprecht 
3*78e17e23SRaphael Isemann struct VBase {
VBaseVBase499451b44SJordan Rupprecht   VBase() : m_value(g_next_value++) {}
~VBaseVBase599451b44SJordan Rupprecht   virtual ~VBase() {}
699451b44SJordan Rupprecht   int m_value;
799451b44SJordan Rupprecht };
899451b44SJordan Rupprecht 
9*78e17e23SRaphael Isemann struct Derived1 : public virtual VBase {
1099451b44SJordan Rupprecht };
1199451b44SJordan Rupprecht 
12*78e17e23SRaphael Isemann struct Derived2 : public virtual VBase {
1399451b44SJordan Rupprecht };
1499451b44SJordan Rupprecht 
15*78e17e23SRaphael Isemann struct Joiner1 : public Derived1, public Derived2 {
16*78e17e23SRaphael Isemann   long x = 1;
1799451b44SJordan Rupprecht };
1899451b44SJordan Rupprecht 
19*78e17e23SRaphael Isemann struct Joiner2 : public Derived2 {
20*78e17e23SRaphael Isemann   long y = 2;
2199451b44SJordan Rupprecht };
2299451b44SJordan Rupprecht 
main(int argc,const char * argv[])23*78e17e23SRaphael Isemann int main(int argc, const char *argv[]) {
2499451b44SJordan Rupprecht   Joiner1 j1;
2599451b44SJordan Rupprecht   Joiner2 j2;
2699451b44SJordan Rupprecht   Derived2 *d = &j1;
2799451b44SJordan Rupprecht   d = &j2;  // breakpoint 1
2899451b44SJordan Rupprecht   return 0; // breakpoint 2
2999451b44SJordan Rupprecht }
30