[multiple changes]

2004-01-12  Javier Miranda  <miranda@gnat.com>

	* sem_ch12.adb: Addition of Component_Definition node.

2004-01-12  Ed Schonberg  <schonberg@gnat.com>

	PR ada/13417
	* sem_ch12.adb (Analyze_Formal_Package): Diagnose properly an attempt
	to use a generic package G as a formal package for another generic
	declared within G.

From-SVN: r75713
This commit is contained in:
Arnaud Charlet 2004-01-12 12:38:15 +01:00
parent 5fb1788b9b
commit 16bf3959da
1 changed files with 25 additions and 3 deletions

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2003, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2004, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -1214,12 +1214,13 @@ package body Sem_Ch12 is
Error_Msg_N ("premature usage of incomplete type", Def);
elsif Is_Internal (Component_Type (T))
and then Nkind (Original_Node (Subtype_Indication (Def)))
and then Nkind (Original_Node
(Subtype_Indication (Component_Definition (Def))))
/= N_Attribute_Reference
then
Error_Msg_N
("only a subtype mark is allowed in a formal",
Subtype_Indication (Def));
Subtype_Indication (Component_Definition (Def)));
end if;
end Analyze_Formal_Array_Type;
@ -1604,6 +1605,27 @@ package body Sem_Ch12 is
Gen_Id);
Restore_Env;
return;
elsif In_Open_Scopes (Gen_Unit) then
if Is_Compilation_Unit (Gen_Unit)
and then Is_Child_Unit (Current_Scope)
then
-- Special-case the error when the formal is a parent, and
-- continue analysis to minimize cascaded errors.
Error_Msg_N
("generic parent cannot be used as formal package "
& "of a child unit",
Gen_Id);
else
Error_Msg_N
("generic package cannot be used as a formal package "
& "within itself",
Gen_Id);
Restore_Env;
return;
end if;
end if;
-- Check for a formal package that is a package renaming.