-- { dg-do compile } procedure Discr7 is subtype Index is Natural range 0..5; type BitString is array(Index range <>) of Boolean; pragma Pack(BitString); function Id (I : Integer) return Integer is begin return I; end; type E(D : Index) is record C : BitString(1..D); end record; subtype E0 is E(Id(0)); function F return E0 is begin return E'(D=>0, C=>(1..0=>FALSE)); end; begin null; end;