https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118203

            Bug ID: 118203
           Summary: Redefined 'Image (with Put_Image aspect) causes
                    STORAGE_ERROR when in a case expression
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
          Assignee: unassigned at gcc dot gnu.org
          Reporter: 00120260a at gmail dot com
                CC: dkm at gcc dot gnu.org
  Target Milestone: ---

code:

with Ada.Text_IO, Ada.Strings.Text_Buffers;
procedure main is
        use Ada.Text_IO, Ada.Strings.Text_Buffers;
  Ln: Boolean := True;
  type Clicks is (Left, Middle, Right) with Put_Image => My_Put_Image;
  procedure My_Put_Image (Output : in out Root_Buffer_Type'Class; Value :
Clicks);
  procedure My_Put_Image (Output : in out Root_Buffer_Type'Class; Value :
Clicks) is
  begin
    null;
  end My_Put_Image;
        A: clicks := left;
begin
        Put_line ("Works, 'Image on its own statement' : "); Put
(clicks'(left)'Image);
        Put_line ("Good outside a case expression: " & (case LN is when True =>
"a ", when False => "b  " ) & A'Image);
        Put_line ("Fails when inside it: " & (case LN is when True => "a ",
when False => "b  " & A'Image));
end main;

---------

I checked, it matters not that put_image has anything in it or not. It suffices
that the aspect is present. And if expressions don't cause this, only case
expressions.
  • [Bug ada/118203] New: Redefined ... 00120260a at gmail dot com via Gcc-bugs

Reply via email to