diff options
-rw-r--r-- | src/grt/grt-disp_rti.adb | 5 | ||||
-rw-r--r-- | src/grt/grt-rtis_utils.adb | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/grt/grt-disp_rti.adb b/src/grt/grt-disp_rti.adb index 7aa97d1f8..b3b595668 100644 --- a/src/grt/grt-disp_rti.adb +++ b/src/grt/grt-disp_rti.adb @@ -226,13 +226,16 @@ package body Grt.Disp_Rti is -- FIXME: need to update bounds. else for I in 1 .. Length loop - Bounds2 := Bounds; if I /= 1 then Put (Stream, ", "); end if; if Index = Last_Idx then + -- Humm, not always an array, and BOUNDS may not be followed + -- by subelement bounds. + Bounds2 := Array_Layout_To_Bounds (Bounds); Disp_Value (Stream, El_Rti, Ctxt, Obj, Bounds2, Is_Sig); else + Bounds2 := Bounds; Disp_Array_Value_1 (Stream, Arr_Rti, Ctxt, Index + 1, Obj, Bounds2, Is_Sig); end if; diff --git a/src/grt/grt-rtis_utils.adb b/src/grt/grt-rtis_utils.adb index b3780801f..8f30aba43 100644 --- a/src/grt/grt-rtis_utils.adb +++ b/src/grt/grt-rtis_utils.adb @@ -354,12 +354,14 @@ package body Grt.Rtis_Utils is Cur_Bounds := Bounds; for I in 1 .. Len loop - Bounds := Cur_Bounds; Pos_To_Vstring (Name, Base_Type, Rng, I - 1); if Index = Last_Index then + -- FIXME: not always needed. + Bounds := Array_Layout_To_Bounds (Cur_Bounds); Append (Name, ')'); Handle_Any (El_Rti); else + Bounds := Cur_Bounds; Handle_Array_1 (Arr_Rti, Index + 1); end if; Truncate (Name, P + 1); |