type T is limited private;
type R is tagged
record --Illegal!
--This should say "limited record".
X : T;
end record;
private
type T is new Integer; --R becomes nonlimited here.
end P;
type R2(Access_Discrim : access ...) is new R with
record
Y : Some_Task_Type;
end record;
end Q;
type File_Name is limited private;
procedure Close(F : in out File_Name);
procedure Read (F : in File_Name; Item : out Integer);
procedure Write(F : in File_Name; Item : in Integer);
private
type File_Name is
limited record
Internal_Name : Integer := 0;
end record;
end IO_Package;
Limit : constant := 200;
type File_Descriptor is record ... end record;
Directory : array (1 .. Limit) of File_Descriptor;
...
procedure Open (F : in out File_Name) is ... end;
procedure Close(F : in out File_Name) is ... end;
procedure Read (F : in File_Name; Item : out Integer) is ... end;
procedure Write(F : in File_Name; Item : in Integer) is ... end;
begin
...
end IO_Package;