diff options
author | Tom Tromey <tom@tromey.com> | 2018-03-29 12:08:32 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-04-12 11:03:59 -0600 |
commit | 53d7df28bcbaecaf2dca7f8a4bf829e3dd786693 (patch) | |
tree | dae1c078395b7771ed0c9469faf824e158883f1d | |
parent | 70b33f195b0d76e140921db40c0bea5a7c9abc42 (diff) | |
download | gdb-53d7df28bcbaecaf2dca7f8a4bf829e3dd786693.zip gdb-53d7df28bcbaecaf2dca7f8a4bf829e3dd786693.tar.gz gdb-53d7df28bcbaecaf2dca7f8a4bf829e3dd786693.tar.bz2 |
Remove old univariant code from rust-lang.c
Since moving Rust enum handling into dwarf2read.c, some old code for
handling univariant enums in rust-lang.c has been obsolete. This
patch removes this code.
Tested on x86-64 Fedora 26, using rustc 1.23 (1.24 emits incorrect
DWARF for enums and so can't be used for this test).
2018-04-12 Tom Tromey <tom@tromey.com>
* rust-lang.c (rust_print_struct_def): Remove univariant code.
(rust_evaluate_subexp): Likewise.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/rust-lang.c | 25 |
2 files changed, 7 insertions, 23 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 66ca520..836ac9e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-04-12 Tom Tromey <tom@tromey.com> + + * rust-lang.c (rust_print_struct_def): Remove univariant code. + (rust_evaluate_subexp): Likewise. + 2018-04-12 Pedro Alves <palves@redhat.com> * procfs.c (procfs_detach): Make forward declaration's prototype diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index 6e0537f..cf8a15e 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -631,7 +631,6 @@ rust_print_struct_def (struct type *type, const char *varstring, bool is_tuple_struct = rust_tuple_struct_type_p (type); bool is_tuple = rust_tuple_type_p (type); bool is_enum = rust_enum_p (type); - bool is_univariant = false; int enum_discriminant_index = -1; @@ -653,12 +652,6 @@ rust_print_struct_def (struct type *type, const char *varstring, = (struct discriminant_info *) discriminant_prop->data.baton; enum_discriminant_index = info->discriminant_index; } - else if (TYPE_CODE (type) == TYPE_CODE_UNION && TYPE_NFIELDS (type) == 1) - { - /* Probably a univariant enum. */ - fputs_filtered ("enum ", stream); - is_univariant = true; - } else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) fputs_filtered ("struct ", stream); else @@ -695,19 +688,12 @@ rust_print_struct_def (struct type *type, const char *varstring, continue; fputs_filtered (TYPE_FIELD_NAME (type, i), stream); } - else if (is_univariant) - { - const char *name - = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (type, i))); - fputs_filtered (name, stream); - } else if (!is_tuple_struct) fprintf_filtered (stream, "%s: ", TYPE_FIELD_NAME (type, i)); rust_internal_print_type (TYPE_FIELD_TYPE (type, i), NULL, - stream, - ((is_enum || is_univariant) ? show : show - 1), - level + 2, flags, is_enum || is_univariant); + stream, (is_enum ? show : show - 1), + level + 2, flags, is_enum); if (!for_rust_enum) fputs_filtered (",\n", stream); else if (i + 1 < TYPE_NFIELDS (type)) @@ -1592,13 +1578,6 @@ rust_evaluate_subexp (struct type *expect_type, struct expression *exp, type = value_type (lhs); - /* Treat a univariant union as if it were an enum. */ - if (TYPE_CODE (type) == TYPE_CODE_UNION && TYPE_NFIELDS (type) == 1) - { - lhs = value_primitive_field (lhs, 0, 0, type); - type = value_type (lhs); - } - if (TYPE_CODE (type) == TYPE_CODE_STRUCT) { struct type *outer_type = NULL; |