-- { dg-do compile }

package body Discr27 is

   subtype Index is Positive range 1..4096;

   function F return String is
      S : String(1..1) := (others =>'w');
   begin
      return S;
   end;

   type Enum is (One, Two);

   type Rec (D : Enum  := One; Len : Index := 1) is record
      case D is
          when One => I : Integer;
          when Two => A : String(1..Len);
      end case;
   end record;

   procedure Nothing is
      M : constant String := F;
      C : constant Rec := (Two, M'Length, M);
   begin
      null;
   end;

   procedure Proc is begin
      null;
   end;

end Discr27;
