-- { dg-do compile } procedure Discr38 is type Enum is (OK, NOT_CONNECTED, DISCONNECTED, REQUEST_Q_EMPTY, SERVER_UNAVAILABLE, BUFFER_TOO_SMALL, NO_FREE_SLOT, RAISE_EXCEPTION, REQUEST_CANCELLED, REQUEST_IN_PROGRESS, SERVER_BUSY, BLOCK_ACKNOWLEDGE); type R (Status : Enum := OK) is record Status_Block : Integer; case Status is when RAISE_EXCEPTION => I : Integer; when OK => Length : Natural; Data : Integer; when others => null; end case; end record; for R use record Status at 0 range 0 .. 7; Status_Block at 4 range 0 .. 31; Length at 8 range 0 .. 31; end record; Nil : constant R := (OK, 1, 0, 1); begin null; end;