with Ada.Text_IO; use Ada.Text_IO;

procedure What is
   type Enum is (A, 'B', C);
   generic
      with function J return Enum is A;
      with function I return ENum is 'B';
   package P is
      procedure Foo;
   end P;

   package body P is
      procedure Foo is
      begin
         Put_Line (J'Img);
         Put_Line (I'Img);
      end Foo;
   end P;

   package Inst is new P;

begin
   Inst.Foo;
end What;
