summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp
diff options
context:
space:
mode:
authorRaphael Isemann <teemperor@gmail.com>2019-10-02 13:46:17 +0000
committerRaphael Isemann <teemperor@gmail.com>2019-10-02 13:46:17 +0000
commit5c375ed66945f64bcad3f8d4178dc79315a3ee68 (patch)
tree0c0a8c16cb1c95bf0abdb89bf71a0f7c2f50b21b /lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp
parent45297645aaba19e0cd2e6a4d331b661e1d79c272 (diff)
downloadbcm5719-llvm-5c375ed66945f64bcad3f8d4178dc79315a3ee68.tar.gz
bcm5719-llvm-5c375ed66945f64bcad3f8d4178dc79315a3ee68.zip
[lldb] Fix evaluation of nested classes with parent from other CU
This makes sure that we associate DIEs that are imported from other CUs with the appropriate decl context. Without this fix, nested classes can be dumped directly into their CU context if their parent was imported from another CU. Reviewed By: teemperor, labath Differential Revision: https://reviews.llvm.org/D68278 Patch by Jaroslav Sevcik! llvm-svn: 373470
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp
new file mode 100644
index 00000000000..8a6e6ff81d2
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/nested-class-other-compilation-unit/main.cpp
@@ -0,0 +1,22 @@
+#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
+}
OpenPOWER on IntegriCloud