Files
binutils-gdb/gdb/testsuite/gdb.ada/fun_overload_menu.exp
Tom Tromey 7253760b5a Fixes to gdb.ada/fun_overload_menu.exp
This patch applies a few fixes to gdb.ada/fun_overload_menu.exp.

It adds some comments to the source and uses this to extract line
numbers.  This is used to ensure that two otherwise-equivalent results
are in fact different, so that the test really checks that the result
is correct.

It also changes the test_menu proc to accept a list of possible
results.  This lets the test work regardless of the order in which the
menu items are presented by gdb.

Finally, like an earlier patch, it changes the test to optionally
accept unqualified names from gdb.
2025-03-06 14:17:17 -07:00

89 lines
2.7 KiB
Plaintext

# Copyright 2015-2024 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/>.
load_lib "ada.exp"
require allow_ada_tests
standard_ada_testfile foo
if {[gdb_compile_ada "$srcfile" "$binfile" executable [list debug]] != "" } {
return -1
}
clean_restart ${testfile}
set bp_location [gdb_get_line_number "BREAK" ${testdir}/foo.adb]
runto "foo.adb:$bp_location"
set line1 [gdb_get_line_number "LINE 1" ${testdir}/foo.adb]
set line2 [gdb_get_line_number "LINE 2" ${testdir}/foo.adb]
proc test_menu {expr function first second selection output} {
set menu1 [multi_line "Multiple matches for $function" \
"\\\[0\\\] cancel" \
"\\\[1\\\] $first" \
"\\\[2\\\] $second" \
"> $"]
set menu2 [multi_line "Multiple matches for $function" \
"\\\[0\\\] cancel" \
"\\\[1\\\] $second" \
"\\\[2\\\] $first" \
"> $"]
set test_name "multiple matches for $function {$expr}"
gdb_test_multiple "print $expr" "$test_name" {
-re "$menu1" {
pass "$test_name"
}
-re "$menu2" {
pass "$test_name"
# Make sure we pick the correct one.
set selection [expr {3 - $selection}]
}
default {
fail "$test_name"
}
}
gdb_test "$selection" "$output"
}
# Check that function signatures in overload menus are displayed as expected.
# 1. Test with overloaded functions
with_test_prefix "func" {
test_menu "f (1, null)" "f" \
"foo\\.f \\(integer; (foo\\.)?integer_access\\) return boolean at .*foo.adb:.*" \
"foo\\.f \\((foo\\.)?new_integer; (foo\\.)?integer_access\\) return boolean at .*foo.adb:.*" \
"1" "= true"
}
# 2. Test with overloaded procedures
with_test_prefix "proc" {
test_menu "p (1, null)" "p" \
"foo\\.p \\(integer; (foo\\.)?integer_access\\) at .*foo.adb:.*" \
"foo\\.p \\((foo\\.)?new_integer; (foo\\.)?integer_access\\) at .*foo.adb:.*" \
"1" "= (void)"
}
# 3. Test with signatures disabled
gdb_test "set ada print-signatures off" ""
with_test_prefix "signatures disabled" {
test_menu "f (1, null)" "f" \
"foo\\.f at .*foo.adb:$line1.*" \
"foo\\.f at .*foo.adb:$line2.*" \
"1" "= true"
}