aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.rust
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-02-03 22:11:46 -0700
committerTom Tromey <tom@tromey.com>2017-02-03 22:14:36 -0700
commitf0fd41c1926984fd1a524ff551286cba694539a0 (patch)
tree7c41be8737477ed41b8498af6e68ef06c18202d7 /gdb/testsuite/gdb.rust
parente25dae2ce112305078ae7593da30ababfff53612 (diff)
downloadgdb-f0fd41c1926984fd1a524ff551286cba694539a0.zip
gdb-f0fd41c1926984fd1a524ff551286cba694539a0.tar.gz
gdb-f0fd41c1926984fd1a524ff551286cba694539a0.tar.bz2
Fix ptype of single-member Rust enums
While looking into PR rust/21097, I found that ptype of a single-element enum in Rust did not always format the result properly. In particular, it would leave out the members of a tuple struct. Further testing showed that it also did the wrong thing for ordinary struct members as well. This patch fixes these problems. I'm marking it as being associated with the PR, since that is where the discovery was made; but this doesn't actually fix that PR (which I think ultimately is due to a Rust compiler bug). Built and regtested on x86-64 Fedora 25, using the system Rust compiler. I'm checking this in. 2017-02-03 Tom Tromey <tom@tromey.com> PR rust/21097: * rust-lang.c (rust_print_type) <TYPE_CODE_UNION>: Handle enums with a single member. 2017-02-03 Tom Tromey <tom@tromey.com> PR rust/21097: * gdb.rust/simple.exp: Add new tests.
Diffstat (limited to 'gdb/testsuite/gdb.rust')
-rw-r--r--gdb/testsuite/gdb.rust/simple.exp12
1 files changed, 12 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp
index 50ed70b..0bcc83e 100644
--- a/gdb/testsuite/gdb.rust/simple.exp
+++ b/gdb/testsuite/gdb.rust/simple.exp
@@ -110,6 +110,18 @@ gdb_test "print univariant.a" " = 1"
gdb_test "print univariant_anon" " = simple::UnivariantAnon::Foo\\(1\\)"
gdb_test "print univariant_anon.0" " = 1"
+gdb_test_sequence "ptype simple::Univariant" "" {
+ "type = enum simple::Univariant \\{"
+ " Foo\\{a: u8\\},"
+ "\\}"
+}
+
+gdb_test_sequence "ptype simple::UnivariantAnon" "" {
+ "type = enum simple::UnivariantAnon \\{"
+ " Foo\\(u8\\),"
+ "\\}"
+}
+
gdb_test_sequence "ptype simple::ByeBob" "" {
" = struct simple::ByeBob \\("
" i32,"