-- { 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;