summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/lazy-loading/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/lazy-loading/main.cpp')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/lazy-loading/main.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/lazy-loading/main.cpp b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/lazy-loading/main.cpp
new file mode 100644
index 00000000000..34d62b483b6
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/lazy-loading/main.cpp
@@ -0,0 +1,69 @@
+//----------------------------------------------------------------------------//
+// Struct loading declarations.
+
+struct StructFirstMember { int i; };
+struct StructBehindPointer { int i; };
+struct StructBehindRef { int i; };
+struct StructMember { int i; };
+
+StructBehindRef struct_instance;
+
+struct SomeStruct {
+ StructFirstMember *first;
+ StructBehindPointer *ptr;
+ StructMember member;
+ StructBehindRef &ref = struct_instance;
+};
+
+struct OtherStruct {
+ int member_int;
+};
+
+//----------------------------------------------------------------------------//
+// Class loading declarations.
+
+struct ClassMember { int i; };
+struct UnusedClassMember { int i; };
+struct UnusedClassMemberPtr { int i; };
+
+namespace NS {
+class ClassInNamespace {
+ int i;
+};
+class ClassWeEnter {
+public:
+ int dummy; // Prevent bug where LLDB always completes first member.
+ ClassMember member;
+ UnusedClassMember unused_member;
+ UnusedClassMemberPtr *unused_member_ptr;
+ int enteredFunction() {
+ return member.i; // Location: class function
+ }
+};
+};
+
+//----------------------------------------------------------------------------//
+// Function we can stop in.
+
+int functionWithOtherStruct() {
+ OtherStruct other_struct_var;
+ other_struct_var.member_int++; // Location: other struct function
+ return other_struct_var.member_int;
+}
+
+int functionWithMultipleLocals() {
+ SomeStruct struct_var;
+ OtherStruct other_struct_var;
+ NS::ClassInNamespace namespace_class;
+ other_struct_var.member_int++; // Location: multiple locals function
+ return other_struct_var.member_int;
+}
+
+int main(int argc, char **argv) {
+ NS::ClassWeEnter c;
+ c.enteredFunction();
+
+ functionWithOtherStruct();
+ functionWithMultipleLocals();
+ return 0;
+}