aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-03-29 12:08:32 -0600
committerTom Tromey <tom@tromey.com>2018-04-12 11:03:59 -0600
commit53d7df28bcbaecaf2dca7f8a4bf829e3dd786693 (patch)
treedae1c078395b7771ed0c9469faf824e158883f1d
parent70b33f195b0d76e140921db40c0bea5a7c9abc42 (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--gdb/rust-lang.c25
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;