forked from Imagelibrary/binutils-gdb
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.
89 lines
2.7 KiB
Plaintext
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"
|
|
}
|