| 1 | #include "shared.h" |
| 2 | |
| 3 | struct WrapperA { |
| 4 | OuterY::Inner<unsigned int> y; |
| 5 | }; |
| 6 | |
| 7 | int main() { |
| 8 | // WrapperA refers to the Inner and Outer class DIEs from this CU. |
| 9 | WrapperA a; |
| 10 | // WrapperB refers to the Inner and Outer DIEs from the other.cpp CU. |
| 11 | // It is important that WrapperB is only forward-declared in shared.h. |
| 12 | WrapperB* b = foo(); |
| 13 | |
| 14 | // Evaluating 'b' here will parse other.cpp's DIEs for all |
| 15 | // the Inner and Outer classes from shared.h. |
| 16 | // |
| 17 | // Evaluating 'a' here will find and reuse the already-parsed |
| 18 | // versions of the Inner and Outer classes. In the associated test |
| 19 | // we make sure that we can still resolve all the types properly |
| 20 | // by evaluating 'a.y.oY_inner.oX_inner'. |
| 21 | return 0; // break here |
| 22 | } |
| 23 | |