gdb: don't show deprecated aliases

I don't think it's very useful to show deprecated aliases to the
user.  It encourages the user to use them, when the goal is the
opposite.

For example, before:

    (gdb) help set index-cache enabled
    set index-cache enabled, set index-cache off, set index-cache on
      alias set index-cache off = set index-cache enabled off
      alias set index-cache on = set index-cache enabled on
    Enable the index cache.
    When on, enable the use of the index cache.

    (gdb) help set index-cache on
    Warning: 'set index-cache on', an alias for the command 'set index-cache enabled', is deprecated.
    Use 'set index-cache enabled on'.

    set index-cache enabled, set index-cache off, set index-cache on
      alias set index-cache off = set index-cache enabled off
      alias set index-cache on = set index-cache enabled on
    Enable the index cache.
    When on, enable the use of the index cache.

After:

    (gdb) help set index-cache enabled
    Enable the index cache.
    When on, enable the use of the index cache.
    (gdb) help set index-cache on
    Warning: 'set index-cache on', an alias for the command 'set index-cache enabled', is deprecated.
    Use 'set index-cache enabled on'.

    Enable the index cache.
    When on, enable the use of the index cache.

Change-Id: I989b618a5ad96ba975367e9d16db95523cd57a4c
This commit is contained in:
Simon Marchi 2021-11-01 00:30:25 -04:00
parent a3e9c2f9da
commit e34e391824
2 changed files with 48 additions and 3 deletions

View file

@ -1345,7 +1345,7 @@ fput_aliases_definition_styled (const cmd_list_element &cmd,
struct ui_file *stream)
{
for (const cmd_list_element &alias : cmd.aliases)
if (!alias.default_args.empty ())
if (!alias.cmd_deprecated && !alias.default_args.empty ())
fput_alias_definition_styled (alias, stream);
}
@ -1361,17 +1361,40 @@ fput_command_names_styled (const cmd_list_element &c,
bool always_fput_c_name, const char *postfix,
struct ui_file *stream)
{
if (always_fput_c_name || !c.aliases.empty ())
/* First, check if we are going to print something. That is, either if
ALWAYS_FPUT_C_NAME is true or if there exists at least one non-deprecated
alias. */
auto print_alias = [] (const cmd_list_element &alias)
{
return !alias.cmd_deprecated;
};
bool print_something = always_fput_c_name;
if (!print_something)
for (const cmd_list_element &alias : c.aliases)
{
if (!print_alias (alias))
continue;
print_something = true;
break;
}
if (print_something)
fput_command_name_styled (c, stream);
for (const cmd_list_element &alias : c.aliases)
{
if (!print_alias (alias))
continue;
fputs_filtered (", ", stream);
wrap_here (" ");
fput_command_name_styled (alias, stream);
}
if (always_fput_c_name || !c.aliases.empty ())
if (print_something)
fputs_filtered (postfix, stream);
}

View file

@ -709,6 +709,27 @@ maintenance deprecate set qqq_aaa"
file delete $file1
}
# Test that the help for a command does not show deprecated aliases.
proc_with_prefix deprecated_command_alias_help_test {} {
gdb_test_multiline "define real_command" \
"define real_command" "End with a line saying just \"end\".." \
"print 1" "" \
"end" ""
gdb_test_no_output "alias alias_command = real_command"
gdb_test_no_output "alias alias_with_args_command = real_command 123"
gdb_test "help real_command" \
"real_command, alias_with_args_command, alias_command\r\n alias alias_with_args_command = real_command 123\r\nUser-defined." \
"help real_command, before"
gdb_test_no_output "maintenance deprecate alias_command"
gdb_test_no_output "maintenance deprecate alias_with_args_command"
gdb_test "help real_command" \
"User-defined." \
"help real_command, after"
}
proc_with_prefix bp_deleted_in_command_test {} {
global gdb_prompt
@ -1203,6 +1224,7 @@ user_defined_command_manyargs_test
watchpoint_command_test
test_command_prompt_position
deprecated_command_test
deprecated_command_alias_help_test
bp_deleted_in_command_test
temporary_breakpoint_commands
stray_arg0_test