-- { dg-do compile } procedure Limited4 is TBD_Error : exception; type Lim_Rec is limited record A : Integer; B : Boolean; end record; type Lim_Tagged is tagged limited record R : Lim_Rec; N : Natural; end record; type Lim_Ext is new Lim_Tagged with record G : Natural; end record; -- a) initialization expression of a CW object_declaration Obj1 : Lim_Tagged'Class := (raise TBD_Error); Obj2 : Lim_Tagged'Class := Lim_Tagged'Class'(raise TBD_Error); -- b) initialization expression of a CW component_declaration -- ... is illegal: cannot have unconstrained components. -- -- type Rec is record -- Comp01 : Lim_Tagged'Class := (raise TBD_Error); -- Comp02 : Lim_Tagged'Class := Lim_Tagged'Class'((raise TBD_Error)); -- end record; -- c) the expression of a record_component_association Obj : Lim_Tagged := (R => raise TBD_Error, N => 4); -- d) the expression for an ancestor_part of an extension_aggregate Ext1 : Lim_Ext := ((raise TBD_Error) with G => 0); Ext2 : Lim_Ext := (Lim_Tagged'(raise TBD_Error) with G => 0); -- e) default_expression or actual parameter for a formal object of -- mode in function Do_Test1 (Obj : Lim_Tagged) return Boolean is begin return True; end; function Do_Test2 (Obj : Lim_Tagged := (raise TBD_Error)) return Boolean is begin return True; end; Check : Boolean; begin Check := Do_Test1 (raise TBD_Error); Check := Do_Test2; end;