From e34e391824570f822e0122503efd484fae8437ff Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 1 Nov 2021 00:30:25 -0400 Subject: [PATCH] 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 --- gdb/cli/cli-decode.c | 29 ++++++++++++++++++++++++++--- gdb/testsuite/gdb.base/commands.exp | 22 ++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index b8be3f54921..9b965ea9989 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -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); } diff --git a/gdb/testsuite/gdb.base/commands.exp b/gdb/testsuite/gdb.base/commands.exp index 6785f9532b1..1dca419f0fb 100644 --- a/gdb/testsuite/gdb.base/commands.exp +++ b/gdb/testsuite/gdb.base/commands.exp @@ -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 -- 2.30.2