blob: 6a54e606712bfc03ee31718b844e7687fc07e53b [file]
# Copyright 2019-2026 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 ptype of an unchecked union.
load_lib "ada.exp"
require allow_ada_tests
standard_ada_testfile unchecked_union
proc multi_line_string {str} {
set result {}
foreach line $str {
lappend result [string_to_regexp $line]
}
set res [multi_line {*}$result]
verbose -log "RES: '$res'"
return $res
}
set inner_string \
[list \
" case ? is" \
" when 0 =>" \
" small: range 0 .. 255;" \
" second: range 0 .. 255;" \
" when ? =>" \
" bval: range 0 .. 255;" \
" when others =>" \
" large: range 255 .. 510;" \
" more: range 255 .. 510;" \
" end case;"]
set inner_full \
[concat \
[list "type = record (?) is"] \
$inner_string \
[list "end record"]]
set pair_string \
[list \
" case ? is" \
" when ? =>" \
" field_one: range 0 .. 255;" \
" when ? =>" \
" field_two: range 255 .. 510;" \
" end case;"]
set pair_full \
[concat \
[list "type = record"] \
$inner_string \
$pair_string \
[list "end record"]]
foreach_gnat_encoding scenario flags {none all minimal} {
lappend flags debug
if {[gdb_compile_ada "${srcfile}" "${binfile}-${scenario}" executable $flags] != ""} {
return
}
clean_restart ${testfile}-${scenario}
set bp_location [gdb_get_line_number "BREAK" ${testdir}/unchecked_union.adb]
runto "unchecked_union.adb:$bp_location"
gdb_test "ptype Pair" [multi_line_string $pair_full]
gdb_test "ptype Inner" [multi_line_string $inner_full]
}