[multiple changes]

2011-08-05  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation,
	Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA
	mode.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Specific_Type): in an instance, the type-specific
	operand of an equality check that involves null may have a private
	type. Use full view to determine legality of construct.

From-SVN: r177444
This commit is contained in:
Arnaud Charlet 2011-08-05 16:24:40 +02:00
parent 822868aa56
commit 5f9cdefe6b
3 changed files with 25 additions and 0 deletions

View file

@ -1,3 +1,15 @@
2011-08-05 Yannick Moy <moy@adacore.com>
* sem_ch12.adb (Analyze_Package_Instantiation,
Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA
mode.
2011-08-05 Ed Schonberg <schonberg@adacore.com>
* sem_type.adb (Specific_Type): in an instance, the type-specific
operand of an equality check that involves null may have a private
type. Use full view to determine legality of construct.
2011-08-05 Vincent Celier <celier@adacore.com>
* gnatcmd.adb (Get_Closure): Do not crash when it is not possible to

View file

@ -3400,6 +3400,7 @@ package body Sem_Ch12 is
or else Might_Inline_Subp)
and then not Is_Actual_Pack
and then not Inline_Now
and then not ALFA_Mode
and then (Operating_Mode = Generate_Code
or else (Operating_Mode = Check_Semantics
and then ASIS_Mode));
@ -4015,6 +4016,7 @@ package body Sem_Ch12 is
if (Is_In_Main_Unit (N)
or else Is_Inlined (Subp)
or else Is_Inlined (Alias (Subp)))
and then not ALFA_Mode
and then (Operating_Mode = Generate_Code
or else (Operating_Mode = Check_Semantics
and then ASIS_Mode))

View file

@ -3198,6 +3198,17 @@ package body Sem_Type is
then
return T1;
-- In an instance, the specific type may have a private view. Use full
-- view to check legality.
elsif T2 = Any_Access
and then Is_Private_Type (T1)
and then Present (Full_View (T1))
and then Is_Access_Type (Full_View (T1))
and then In_Instance
then
return T1;
elsif T2 = Any_Composite
and then Is_Aggregate_Type (T1)
then