Commit 40b93859 by Robert Dewar Committed by Arnaud Charlet

sem_ch4.adb: Minor reformatting.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Check_Conformance): Check null exclusion match for full
	conformance.

From-SVN: r165153
parent d7bab7e6
2010-10-08 Robert Dewar <dewar@adacore.com>
* sem_ch4.adb: Minor reformatting.
2010-10-08 Robert Dewar <dewar@adacore.com>
* sem_ch6.adb (Check_Conformance): Check null exclusion match for full
conformance.
2010-10-08 Thomas Quinot <quinot@adacore.com>
* sem_ch12.adb (Instantiate_Object): Rename Formal_Id to Gen_Obj, for
......
......@@ -507,7 +507,7 @@ package body Sem_Ch4 is
-- be a null object, and we can insert an unconditional raise
-- before the allocator.
-- Ada2012 (AI-104) : a not null indication here is altogether
-- Ada2012 (AI-104): a not null indication here is altogether
-- illegal.
if Can_Never_Be_Null (Type_Id) then
......@@ -515,6 +515,7 @@ package body Sem_Ch4 is
Not_Null_Check : constant Node_Id :=
Make_Raise_Constraint_Error (Sloc (E),
Reason => CE_Null_Not_Allowed);
begin
if Ada_Version >= Ada_12 then
Error_Msg_N
......@@ -524,6 +525,7 @@ package body Sem_Ch4 is
elsif Expander_Active then
Insert_Action (N, Not_Null_Check);
Analyze (Not_Null_Check);
else
Error_Msg_N ("null value not allowed here?", E);
end if;
......
......@@ -3711,7 +3711,6 @@ package body Sem_Ch6 is
Error_Msg_Name_1 := Chars (New_Id);
Error_Msg_Name_2 :=
Name_Ada + Convention_Id'Pos (Convention (New_Id));
Conformance_Error ("\prior declaration for% has convention %!");
else
......@@ -3771,6 +3770,29 @@ package body Sem_Ch6 is
Set_Error_Posted (New_Formal);
return;
end if;
-- Null exclusion must match
if Null_Exclusion_Present (Parent (Old_Formal))
/=
Null_Exclusion_Present (Parent (New_Formal))
then
-- Only give error if both come from source. This should be
-- investigated some time, since it should not be needed ???
if Comes_From_Source (Old_Formal)
and then
Comes_From_Source (New_Formal)
then
Conformance_Error
("\null exclusion for & does not match", New_Formal);
-- Mark error posted on the new formal to avoid duplicated
-- complaint about types not matching.
Set_Error_Posted (New_Formal);
end if;
end if;
end if;
-- Ada 2005 (AI-423): Possible access [sub]type and itype match. This
......@@ -3912,6 +3934,11 @@ package body Sem_Ch6 is
or else
Is_Access_Constant (Etype (Old_Formal)) /=
Is_Access_Constant (Etype (New_Formal)))
-- Do not complain if error already posted on New_Formal. This
-- avoids some redundant error messages.
and then not Error_Posted (New_Formal)
then
-- It is allowed to omit the null-exclusion in case of stream
-- attribute subprograms. We recognize stream subprograms
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment