diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2022-07-12 13:18:19 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2022-09-05 09:21:00 +0200 |
commit | 124c5e5c7c3bcfa28a6355a1a6247ea4e94c4a71 (patch) | |
tree | 55f77d71e3ef79840ff87dd1300a6f429d794f77 /gcc | |
parent | bc435abbce8bda16717440c0c5df061466eeada0 (diff) | |
download | gcc-124c5e5c7c3bcfa28a6355a1a6247ea4e94c4a71.zip gcc-124c5e5c7c3bcfa28a6355a1a6247ea4e94c4a71.tar.gz gcc-124c5e5c7c3bcfa28a6355a1a6247ea4e94c4a71.tar.bz2 |
[Ada] Improve pretty-printing of iterated component associations
Pretty-printing used mostly in the debugger now handles more Ada 2022
syntax features. In particular, now it correctly handles expressions like
"[for E of A when E /= X => E]".
gcc/ada/
* sprint.adb (Sprint_Node_Actual): Handle iterator_specification within
iterated_component_association and iterator_filter within
iterator_specification.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/sprint.adb | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ada/sprint.adb b/gcc/ada/sprint.adb index 42a6e4f..243d67a 100644 --- a/gcc/ada/sprint.adb +++ b/gcc/ada/sprint.adb @@ -1341,9 +1341,13 @@ package body Sprint is when N_Iterated_Component_Association => Set_Debug_Sloc; Write_Str (" for "); - Write_Id (Defining_Identifier (Node)); - Write_Str (" in "); - Sprint_Bar_List (Discrete_Choices (Node)); + if Present (Iterator_Specification (Node)) then + Sprint_Node (Iterator_Specification (Node)); + else + Write_Id (Defining_Identifier (Node)); + Write_Str (" in "); + Sprint_Bar_List (Discrete_Choices (Node)); + end if; Write_Str (" => "); Sprint_Node (Expression (Node)); @@ -2307,6 +2311,11 @@ package body Sprint is Sprint_Node (Name (Node)); + if Present (Iterator_Filter (Node)) then + Write_Str (" when "); + Sprint_Node (Iterator_Filter (Node)); + end if; + when N_Itype_Reference => Write_Indent_Str_Sloc ("reference "); Write_Id (Itype (Node)); |