-- { dg-do compile } -- { dg-options "-gnatws -O3" } with Discr21_Pkg; use Discr21_Pkg; package body Discr21 is type Index is new Natural range 0 .. 100; type Arr is array (Index range <> ) of Position; type Rec(Size : Index := 1) is record A : Arr(1 .. Size); end record; Data : Rec; function To_V(pos : Position) return VPosition is begin return To_Position(pos.x, pos.y, pos.z); end; procedure Read(Data : Rec) is pos : VPosition := To_V (Data.A(1)); begin null; end; procedure Test is begin Read (Data); end; end Discr21;