| -- { dg-do compile } |
| -- { dg-options "-O" } |
| |
| with Return2_Pkg; use Return2_Pkg; |
| |
| package body Return2 is |
| |
| function Value_Internal (Image : String) return Result_Internal_T is |
| begin |
| return (Member => False); |
| end; |
| |
| type Result_T is array (1 .. 2) of Result_Internal_T; |
| |
| function Value (Img : String) return T is |
| My_F : constant String := F; |
| Result : Result_T; |
| Value : T; |
| begin |
| for I in Result'Range loop |
| if G (My_F, I) /= "" then |
| Result (I) := Value_Internal (G (My_F, I)); |
| if Result (I).Member then |
| Value (Result (I).Data) := True; |
| else |
| raise Program_Error; |
| end if; |
| end if; |
| end loop; |
| return Value; |
| end; |
| |
| end Return2; |