Browse Source
Ada 2022 includes a "delta aggregates" feature that can sometimes simplify aggregate creation. This patch implements this feature for GDB.master
8 changed files with 197 additions and 5 deletions
@ -0,0 +1,49 @@ |
|||
# Copyright 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 main |
|||
|
|||
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } { |
|||
return -1 |
|||
} |
|||
|
|||
clean_restart ${testfile} |
|||
|
|||
set bp_location [gdb_get_line_number "STOP" ${testdir}/main.adb] |
|||
runto "main.adb:$bp_location" |
|||
|
|||
gdb_test "print local := (pck.v1 with delta b => 23)" \ |
|||
[string_to_regexp " = (a => 23, b => 23)"] \ |
|||
"delta aggregate record" |
|||
|
|||
gdb_test "print local := (pck.v1 with delta others => 23)" \ |
|||
"'others' invalid in delta aggregate" \ |
|||
"invalid record delta aggregate" |
|||
|
|||
gdb_test "print local := (pck.v3 with delta b => 19)" \ |
|||
"Type mismatch in delta aggregate" \ |
|||
"wrong type in delta aggregate" |
|||
|
|||
gdb_test "print a := (pck.a1 with delta 2 => 7)" \ |
|||
[string_to_regexp " = (2, 7, 6)"] \ |
|||
"delta aggregate array" |
|||
|
|||
gdb_test "print a := (pck.a1 with delta others => 88)" \ |
|||
"'others' invalid in delta aggregate" \ |
|||
"invalid array delta aggregate" |
|||
@ -0,0 +1,24 @@ |
|||
-- Copyright 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/>. |
|||
|
|||
with pck; use pck; |
|||
|
|||
procedure Main is |
|||
Local : Record_Type := (A => 1, B => 2); |
|||
A : Array_Type := (1, 3, 5); |
|||
begin |
|||
Do_Nothing (Local'Address); -- STOP |
|||
Do_Nothing (A'Address); |
|||
end Main; |
|||
@ -0,0 +1,23 @@ |
|||
-- Copyright 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/>. |
|||
|
|||
package body Pck is |
|||
|
|||
procedure Do_Nothing (A : System.Address) is |
|||
begin |
|||
null; |
|||
end Do_Nothing; |
|||
|
|||
end Pck; |
|||
@ -0,0 +1,42 @@ |
|||
-- Copyright 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/>. |
|||
|
|||
with System; |
|||
|
|||
package Pck is |
|||
|
|||
type Record_Type is record |
|||
A : Integer; |
|||
B : Integer; |
|||
end record; |
|||
|
|||
V1 : Record_Type := (A => 23, B => 24); |
|||
V2 : Record_Type := (A => 47, B => 91); |
|||
|
|||
type Other_Record_Type is record |
|||
A : Integer; |
|||
B : Integer; |
|||
C : Integer; |
|||
end record; |
|||
|
|||
V3 : Other_Record_Type := (A => 47, B => 91, C => 102); |
|||
|
|||
type Array_Type is array (1 .. 3) of Integer; |
|||
|
|||
A1 : Array_Type := (2, 4, 6); |
|||
|
|||
procedure Do_Nothing (A : System.Address); |
|||
|
|||
end Pck; |
|||
Loading…
Reference in new issue