summary refs log tree commit diff
path: root/src/test/debuginfo
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-01-25 18:46:33 +0000
committerbors <bors@rust-lang.org>2015-01-25 18:46:33 +0000
commitc80e556e159af38f86eea5ee2ba796d7c724c92b (patch)
tree96e77c61152fa22f7d7144da19064c738d9a0df7 /src/test/debuginfo
parentd15192317aa025ff06faa56ca00950fb7ce6ff4b (diff)
parent75ad1161dd598ba0e61b9215a08216e744dd9f4c (diff)
downloadrust-c80e556e159af38f86eea5ee2ba796d7c724c92b.tar.gz
rust-c80e556e159af38f86eea5ee2ba796d7c724c92b.zip
Auto merge of #21519 - michaelwoerister:misc, r=eddyb
Two minor improvements that have been on my TODO list for a while:
* Clang uses a size of `-1` for arrays of unknown size and we should do that too as it will tell LLVM to omit the size information in debuginfo.
* There was no LLDB test case for handling the optimized enum representation introduced by @luqmana. This PR finally adds one.
Diffstat (limited to 'src/test/debuginfo')
-rw-r--r--src/test/debuginfo/option-like-enum.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/debuginfo/option-like-enum.rs b/src/test/debuginfo/option-like-enum.rs
index 71c235c878c..fdfbcda7421 100644
--- a/src/test/debuginfo/option-like-enum.rs
+++ b/src/test/debuginfo/option-like-enum.rs
@@ -36,6 +36,12 @@
 // gdb-command:print void_droid_gdb->internals
 // gdb-check:$6 = (isize *) 0x0
 
+// gdb-command:print nested_non_zero_yep
+// gdb-check:$7 = {RUST$ENCODED$ENUM$1$2$Nope = {10.5, {a = 10, b = 20, c = [...]}}}
+
+// gdb-command:print nested_non_zero_nope
+// gdb-check:$8 = {RUST$ENCODED$ENUM$1$2$Nope = {[...], {a = [...], b = [...], c = 0x0}}}
+
 // gdb-command:continue
 
 
@@ -67,6 +73,12 @@
 // lldb-command:print none_str
 // lldb-check:[...]$7 = None
 
+// lldb-command:print nested_non_zero_yep
+// lldb-check:[...]$8 = Yep(10.5, NestedNonZeroField { a: 10, b: 20, c: &[...] })
+
+// lldb-command:print nested_non_zero_nope
+// lldb-check:[...]$9 = Nope
+
 
 #![omit_gdb_pretty_printer_section]
 
@@ -102,6 +114,17 @@ struct NamedFieldsRepr<'a> {
     internals: &'a isize
 }
 
+struct NestedNonZeroField<'a> {
+    a: u16,
+    b: u32,
+    c: &'a char,
+}
+
+enum NestedNonZero<'a> {
+    Yep(f64, NestedNonZeroField<'a>),
+    Nope
+}
+
 fn main() {
 
     let some_str: Option<&'static str> = Some("abc");
@@ -124,6 +147,17 @@ fn main() {
     let void_droid = NamedFields::Void;
     let void_droid_gdb: &NamedFieldsRepr = unsafe { std::mem::transmute(&NamedFields::Void) };
 
+    let x = 'x';
+    let nested_non_zero_yep = NestedNonZero::Yep(
+        10.5,
+        NestedNonZeroField {
+            a: 10,
+            b: 20,
+            c: &x
+        });
+
+    let nested_non_zero_nope = NestedNonZero::Nope;
+
     zzz(); // #break
 }