+2020-02-22 Tom Tromey <tom@tromey.com>
+
+ * valprint.c (generic_val_print_enum_1)
+ (val_print_type_code_flags): Style member names.
+ * rust-lang.c (val_print_struct, rust_print_enum)
+ (rust_print_struct_def, rust_internal_print_type): Style member
+ names.
+ * p-valprint.c (pascal_object_print_value_fields): Style member
+ names. Only call fprintf_symbol_filtered for static members.
+ * m2-typeprint.c (m2_record_fields, m2_enum): Style member names.
+ * f-valprint.c (f_val_print): Style member names.
+ * f-typeprint.c (f_type_print_base): Style member names.
+ * cp-valprint.c (cp_print_value_fields): Style member names. Only
+ call fprintf_symbol_filtered for static members.
+ (cp_print_class_member): Style member names.
+ * c-typeprint.c (c_print_type_1, c_type_print_base_1): Style
+ member names.
+ * ada-valprint.c (ada_print_scalar): Style enum names.
+ (ada_val_print_enum): Likewise.
+ * ada-typeprint.c (print_enum_type): Style enum names.
+
2020-02-21 Tom Tromey <tom@tromey.com>
* psympriv.h (struct partial_symtab): Update comment.
if (i)
fprintf_filtered (stream, ", ");
wrap_here (" ");
- fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
+ fputs_styled (ada_enum_name (TYPE_FIELD_NAME (type, i)),
+ variable_name_style.style (), stream);
if (lastval != TYPE_FIELD_ENUMVAL (type, i))
{
fprintf_filtered (stream, " => %s",
}
if (i < len)
{
- fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
+ fputs_styled (ada_enum_name (TYPE_FIELD_NAME (type, i)),
+ variable_name_style.style (), stream);
}
else
{
const char *name = ada_enum_name (TYPE_FIELD_NAME (type, i));
if (name[0] == '\'')
- fprintf_filtered (stream, "%ld %s", (long) val, name);
+ fprintf_filtered (stream, "%ld %ps", (long) val,
+ styled_string (variable_name_style.style (),
+ name));
else
- fputs_filtered (name, stream);
+ fputs_styled (name, variable_name_style.style (), stream);
}
else
print_longest (stream, 'd', 0, val);
if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
fputs_styled (varstring, function_name_style.style (), stream);
else
- fputs_filtered (varstring, stream);
+ fputs_styled (varstring, variable_name_style.style (), stream);
/* For demangled function names, we have the arglist as part of
the name, so don't print an additional pair of ()'s. */
if (i)
fprintf_filtered (stream, ", ");
wrap_here (" ");
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
if (lastval != TYPE_FIELD_ENUMVAL (type, i))
{
fprintf_filtered (stream, " = %s",
annotate_field_begin (TYPE_FIELD_TYPE (type, i));
if (field_is_static (&TYPE_FIELD (type, i)))
- fputs_filtered ("static ", stream);
- fprintf_symbol_filtered (stream,
- TYPE_FIELD_NAME (type, i),
- current_language->la_language,
- DMGL_PARAMS | DMGL_ANSI);
+ {
+ fputs_filtered ("static ", stream);
+ fprintf_symbol_filtered (stream,
+ TYPE_FIELD_NAME (type, i),
+ current_language->la_language,
+ DMGL_PARAMS | DMGL_ANSI);
+ }
+ else
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
annotate_field_name_end ();
/* We tweak various options in a few cases below. */
else
c_type_print_base (self_type, stream, 0, 0, &type_print_raw_options);
fprintf_filtered (stream, "::");
- fputs_filtered (TYPE_FIELD_NAME (self_type, fieldno), stream);
+ fputs_styled (TYPE_FIELD_NAME (self_type, fieldno),
+ variable_name_style.style (), stream);
}
else
fprintf_filtered (stream, "%ld", (long) val);
f_type_print_base (TYPE_FIELD_TYPE (type, index), stream,
show - 1, level + 4);
fputs_filtered (" :: ", stream);
- fputs_filtered (TYPE_FIELD_NAME (type, index), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, index),
+ variable_name_style.style (), stream);
f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index),
stream, show - 1, 0, 0, 0, false);
fputs_filtered ("\n", stream);
field_name = TYPE_FIELD_NAME (type, index);
if (field_name != NULL)
{
- fputs_filtered (field_name, stream);
+ fputs_styled (field_name, variable_name_style.style (),
+ stream);
fputs_filtered (" = ", stream);
}
QUIT;
print_spaces_filtered (level + 4, stream);
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
fputs_filtered (" : ", stream);
m2_print_type (TYPE_FIELD_TYPE (type, i),
"",
if (i > 0)
fprintf_filtered (stream, ", ");
wrap_here (" ");
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
if (lastval != TYPE_FIELD_ENUMVAL (type, i))
{
fprintf_filtered (stream, " = %s",
annotate_field_begin (TYPE_FIELD_TYPE (type, i));
if (field_is_static (&TYPE_FIELD (type, i)))
- fputs_filtered ("static ", stream);
- fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
- language_cplus,
- DMGL_PARAMS | DMGL_ANSI);
+ {
+ fputs_filtered ("static ", stream);
+ fprintf_symbol_filtered (stream,
+ TYPE_FIELD_NAME (type, i),
+ current_language->la_language,
+ DMGL_PARAMS | DMGL_ANSI);
+ }
+ else
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
annotate_field_name_end ();
fputs_filtered (" = ", stream);
annotate_field_value ();
if (!is_tuple && !is_tuple_struct)
{
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
fputs_filtered (": ", stream);
}
first_field = false;
if (!is_tuple)
- fprintf_filtered (stream, "%s: ",
- TYPE_FIELD_NAME (variant_type, j));
+ fprintf_filtered (stream, "%ps: ",
+ styled_string (variable_name_style.style (),
+ TYPE_FIELD_NAME (variant_type, j)));
val_print (TYPE_FIELD_TYPE (variant_type, j),
(embedded_offset
if (!for_rust_enum || flags->print_offsets)
print_spaces_filtered (level + 2, stream);
if (is_enum)
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i), variable_name_style.style (),
+ stream);
else if (!is_tuple_struct)
- fprintf_filtered (stream, "%s: ", TYPE_FIELD_NAME (type, i));
+ fprintf_filtered (stream, "%ps: ",
+ styled_string (variable_name_style.style (),
+ TYPE_FIELD_NAME (type, i)));
rust_internal_print_type (TYPE_FIELD_TYPE (type, i), NULL,
stream, (is_enum ? show : show - 1),
&& name[len] == ':'
&& name[len + 1] == ':')
name += len + 2;
- fprintfi_filtered (level + 2, stream, "%s,\n", name);
+ fprintfi_filtered (level + 2, stream, "%ps,\n",
+ styled_string (variable_name_style.style (),
+ name));
}
fputs_filtered ("}", stream);
+2020-02-22 Tom Tromey <tom@tromey.com>
+
+ * gdb.rust/rust-style.rs: New file.
+ * gdb.rust/rust-style.exp: New file.
+ * gdb.base/style.exp: Test structure printing.
+ * gdb.base/style.c (struct some_struct): New type.
+ (enum etype): New type.
+ (struct_value): New global.
+
2020-02-21 Tom de Vries <tdevries@suse.de>
PR go/18926
#define SOME_MACRO 23
+enum etype
+{
+ VALUE_ONE = 1,
+ VALUE_TWO = 2
+};
+
+struct some_struct
+{
+ int int_field;
+ char *string_field;
+ enum etype e_field;
+};
+
+struct some_struct struct_value = { 23, "skidoo", VALUE_TWO };
+
int some_called_function (void)
{
return 0;
# Somewhere should see the call to the function.
gdb_test "disassemble main" "[style $hex address].*$func.*"
+ set ifield [style int_field variable]
+ set sfield [style string_field variable]
+ set efield [style e_field variable]
+ set evalue [style VALUE_TWO variable]
+ gdb_test "print struct_value" \
+ "\{$ifield = 23,.*$sfield = .*,.*$efield = $evalue.*"
+
gdb_exit
gdb_spawn
--- /dev/null
+# Copyright 2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test CLI output styling for Rust.
+
+load_lib rust-support.exp
+if {[skip_rust_tests]} {
+ continue
+}
+
+save_vars { env(TERM) } {
+ # We need an ANSI-capable terminal to get the output.
+ setenv TERM ansi
+
+ standard_testfile .rs
+ if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+ {debug rust}]} {
+ return -1
+ }
+
+ set line [gdb_get_line_number "breakpoint"]
+ if {![runto ${srcfile}:$line]} {
+ untested "could not run to breakpoint"
+ return -1
+ }
+
+ set vfield [style value variable]
+ set v2field [style value2 variable]
+ gdb_test "print v" \
+ "Two\{$vfield: 23, $v2field: 97\}"
+
+}
--- /dev/null
+// Copyright (C) 2020 Free Software Foundation, Inc.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_assignments)]
+
+enum EnumType {
+ One(i32),
+ Two{value: i32, value2: i32},
+}
+
+fn main() {
+ let v = EnumType::Two{ value: 23, value2: 97 };
+
+ println!(""); // breakpoint
+}
}
if (i < len)
{
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i), variable_name_style.style (),
+ stream);
}
else if (TYPE_FLAG_ENUM (type))
{
fputs_filtered (" | ", stream);
val &= ~TYPE_FIELD_ENUMVAL (type, i);
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ fputs_styled (TYPE_FIELD_NAME (type, i),
+ variable_name_style.style (), stream);
}
}
&& TYPE_FIELD_BITSIZE (type, field) == 1)
{
if (val & ((ULONGEST)1 << TYPE_FIELD_BITPOS (type, field)))
- fprintf_filtered (stream, " %s",
- TYPE_FIELD_NAME (type, field));
+ fprintf_filtered
+ (stream, " %ps",
+ styled_string (variable_name_style.style (),
+ TYPE_FIELD_NAME (type, field)));
}
else
{
if (field_len < sizeof (ULONGEST) * TARGET_CHAR_BIT)
field_val &= ((ULONGEST) 1 << field_len) - 1;
- fprintf_filtered (stream, " %s=",
- TYPE_FIELD_NAME (type, field));
+ fprintf_filtered (stream, " %ps=",
+ styled_string (variable_name_style.style (),
+ TYPE_FIELD_NAME (type, field)));
if (TYPE_CODE (field_type) == TYPE_CODE_ENUM)
generic_val_print_enum_1 (field_type, field_val, stream);
else