| #include "shared.h" | |
| struct WrapperA { | |
| OuterY::Inner<unsigned int> y; | |
| }; | |
| int main() { | |
| // WrapperA refers to the Inner and Outer class DIEs from this CU. | |
| WrapperA a; | |
| // WrapperB refers to the Inner and Outer DIEs from the other.cpp CU. | |
| // It is important that WrapperB is only forward-declared in shared.h. | |
| WrapperB* b = foo(); | |
| // Evaluating 'b' here will parse other.cpp's DIEs for all | |
| // the Inner and Outer classes from shared.h. | |
| // | |
| // Evaluating 'a' here will find and reuse the already-parsed | |
| // versions of the Inner and Outer classes. In the associated test | |
| // we make sure that we can still resolve all the types properly | |
| // by evaluating 'a.y.oY_inner.oX_inner'. | |
| return 0; // break here | |
| } |