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