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.