aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorManish Goregaokar <manish@mozilla.com>2016-06-25 11:10:38 +0530
committerManish Goregaokar <manish@mozilla.com>2016-06-25 11:26:59 +0530
commitfccb08f8cd2035b50a2b0a5e09983180b7411685 (patch)
tree6d68e0a2118871df9a404501243988e9166b1c34 /gdb
parentb5a4b3c5e711be9096423f9765623eda449d8f4d (diff)
downloadgdb-fccb08f8cd2035b50a2b0a5e09983180b7411685.zip
gdb-fccb08f8cd2035b50a2b0a5e09983180b7411685.tar.gz
gdb-fccb08f8cd2035b50a2b0a5e09983180b7411685.tar.bz2
Add tests for printing of NonZero-optimized enums in Rust
gdb/testsuite/ChangeLog: 2016-06-25 Manish Goregaokar <manish@mozilla.com> PR gdb/20239 * gdb.rust/simple.rs: Add more tests for printing NonZero enums. * gdb.rust/simple.exp: Add test expectations for new NonZero tests.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.rust/simple.exp11
-rw-r--r--gdb/testsuite/gdb.rust/simple.rs17
3 files changed, 34 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 8679965..0db0fc2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-25 Manish Goregaokar <manish@mozilla.com>
+
+ PR gdb/20239
+ * gdb.rust/simple.rs: Add more tests for printing NonZero enums.
+ * gdb.rust/simple.exp: Add test expectations for new NonZero tests.
+
2016-06-24 David Taylor <dtaylor@emc.com>
* gdb.base/offsets.exp: New file.
diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp
index a4a2190..88f1c89 100644
--- a/gdb/testsuite/gdb.rust/simple.exp
+++ b/gdb/testsuite/gdb.rust/simple.exp
@@ -169,6 +169,17 @@ gdb_test "print ..5" " = .*::ops::RangeTo.* \\{end: 5\\}"
gdb_test "print 5.." " = .*::ops::RangeFrom.* \\{start: 5\\}"
gdb_test "print .." " = .*::ops::RangeFull"
+gdb_test "print str_some" \
+ " = core::option::Option<collections::string::String>::Some\\(collections::string::String .*"
+gdb_test "print str_none" " = core::option::Option<collections::string::String>::None"
+gdb_test "print int_some" " = core::option::Option::Some\\(1\\)"
+gdb_test "print int_none" " = core::option::Option::None"
+gdb_test "print box_some" " = core::option::Option<Box<u8>>::Some\\(.*\\)"
+gdb_test "print box_none" " = core::option::Option<Box<u8>>::None"
+gdb_test "print custom_some" \
+ " = simple::NonZeroOptimized::Value\\(collections::string::String .*"
+gdb_test "print custom_none" " = simple::NonZeroOptimized::Empty"
+
proc test_one_slice {svar length base range} {
global hex
diff --git a/gdb/testsuite/gdb.rust/simple.rs b/gdb/testsuite/gdb.rust/simple.rs
index 6d6395a..32da580 100644
--- a/gdb/testsuite/gdb.rust/simple.rs
+++ b/gdb/testsuite/gdb.rust/simple.rs
@@ -38,6 +38,12 @@ enum MoreComplicated {
Four{this: bool, is: u8, a: char, struct_: u64, variant: u32},
}
+// tests the nonzero optimization, but fields are reversed
+enum NonZeroOptimized {
+ Empty,
+ Value(String),
+}
+
fn diff2(x: i32, y: i32) -> i32 {
x - y
}
@@ -92,6 +98,17 @@ fn main () {
let to1 = &w[..3];
let to2 = &slice[..1];
+ // tests for enum optimizations
+
+ let str_some = Some("hi".to_string());
+ let str_none = None::<String>;
+ let box_some = Some(Box::new(1u8));
+ let box_none = None::<Box<u8>>;
+ let int_some = Some(1u8);
+ let int_none = None::<u8>;
+ let custom_some = NonZeroOptimized::Value("hi".into());
+ let custom_none = NonZeroOptimized::Empty;
+
println!("{}, {}", x.0, x.1); // set breakpoint here
println!("{}", diff2(92, 45));
}