-- { dg-do compile } -- { dg-options "-gnatdm -gnatws" } with Discr6_Pkg; procedure Discr6 is type T_Bit is range 0..1; type T_Entier_16 is range -2**15 .. 2**15-1; package My_Q is new Discr6_Pkg(T_Entier_16); type T_Valeur is (BIT, Entier_16); type R(D : T_Valeur) is record case D is when BIT => V_BIT : T_Bit; when Entier_16 => V_E16 : T_Entier_16; end case; end record; for R use record V_BIT at 0 range 0..7; V_E16 at 0 range 0..15; D at 8 range 0..7; end record; for R'size use 128; A : R(Entier_16); I : Integer; begin I := My_Q.X(A.V_E16); end;