Commit aecf0203 by Arnaud Charlet

sem_ch3.adb (Process_Subtype): An allocator is a valid construct that can carry…

sem_ch3.adb (Process_Subtype): An allocator is a valid construct that can carry a null exclusion indicator...

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

	* sem_ch3.adb (Process_Subtype): An allocator is a valid construct that
	can carry a null exclusion indicator, and on which an error may be
	posted if the indicator is redundant.

	* sem_ch8.adb (Analyze_Object_Renaming): Verify that a null exclusion
	does not apply to a subtype mark that already excludes null.

	* sem_ch12.adb (Formal_Object_Declaration): Verify that a null
	exclusion does not apply to a subtype mark that already excludes null.

From-SVN: r138728
parent 1f1aa84f
2008-08-05 Ed Schonberg <schonberg@adacore.com>
* freeze.adb:
(Freeze_Entity): A deferred constant does not violate the restriction
No_Default_Initialization,
* sem_ch3.adb (Process_Subtype): An allocator is a valid construct that
can carry a null exclusion indicator, and on which an error may be
posted if the indicator is redundant.
* sem_ch8.adb (Analyze_Object_Renaming): Verify that a null exclusion
does not apply to a subtype mark that already excludes null.
* sem_ch12.adb (Formal_Object_Declaration): Verify that a null
exclusion does not apply to a subtype mark that already excludes null.
2008-08-05 Thomas Quinot <quinot@adacore.com>
* Makefile.rtl: Compile s-oscons.ads as part of the runtime library.
2008-08-05 Doug Rupp <rupp@adacore.com>
* vms_data.ads: Translation for /POINTER_SIZE qualifier.
2008-08-05 Thomas Quinot <quinot@adacore.com> 2008-08-05 Thomas Quinot <quinot@adacore.com>
* gsocket.h: Make this file includable in a Nucleus environment, which * gsocket.h: Make this file includable in a Nucleus environment, which
...@@ -1810,6 +1810,16 @@ package body Sem_Ch12 is ...@@ -1810,6 +1810,16 @@ package body Sem_Ch12 is
Find_Type (Subtype_Mark (N)); Find_Type (Subtype_Mark (N));
T := Entity (Subtype_Mark (N)); T := Entity (Subtype_Mark (N));
-- Verify that there is no redundant null exclusion.
if Null_Exclusion_Present (N)
and then Can_Never_Be_Null (T)
then
Error_Msg_NE
("`NOT NULL` not allowed (& already excludes null)",
N, T);
end if;
-- Ada 2005 (AI-423): Formal object with an access definition -- Ada 2005 (AI-423): Formal object with an access definition
else else
......
...@@ -16507,7 +16507,9 @@ package body Sem_Ch3 is ...@@ -16507,7 +16507,9 @@ package body Sem_Ch3 is
or else or else
Nkind_In (P, N_Derived_Type_Definition, Nkind_In (P, N_Derived_Type_Definition,
N_Discriminant_Specification, N_Discriminant_Specification,
N_Formal_Object_Declaration,
N_Object_Declaration, N_Object_Declaration,
N_Object_Renaming_Declaration,
N_Parameter_Specification, N_Parameter_Specification,
N_Subtype_Declaration); N_Subtype_Declaration);
...@@ -16552,6 +16554,9 @@ package body Sem_Ch3 is ...@@ -16552,6 +16554,9 @@ package body Sem_Ch3 is
Error_Node := Error_Node :=
Subtype_Indication (Component_Definition (Related_Nod)); Subtype_Indication (Component_Definition (Related_Nod));
when N_Allocator =>
Error_Node := Expression (Related_Nod);
when others => when others =>
pragma Assert (False); pragma Assert (False);
Error_Node := Related_Nod; Error_Node := Related_Nod;
......
...@@ -884,6 +884,11 @@ package body Sem_Ch8 is ...@@ -884,6 +884,11 @@ package body Sem_Ch8 is
Error_Msg_N Error_Msg_N
("renamed object does not exclude `NULL` " ("renamed object does not exclude `NULL` "
& "(RM 8.5.1(4.6/2))", N); & "(RM 8.5.1(4.6/2))", N);
elsif Can_Never_Be_Null (Etype (Nam_Ent)) then
Error_Msg_NE
("`NOT NULL` not allowed (type of& already excludes null)",
N, Nam_Ent);
end if; end if;
end if; end if;
end; end;
......
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