From 5efcab60b3e785c320640060c054ae37b5466a12 Mon Sep 17 00:00:00 2001 From: charlet Date: Tue, 5 Aug 2008 15:14:29 +0000 Subject: [PATCH] 2008-08-05 Ed Schonberg * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138728 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 24 ++++++++++++++++++++++++ gcc/ada/sem_ch12.adb | 10 ++++++++++ gcc/ada/sem_ch3.adb | 5 +++++ gcc/ada/sem_ch8.adb | 5 +++++ 4 files changed, 44 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a0b29acef30..761c5dad643 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,27 @@ +2008-08-05 Ed Schonberg + + * 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 + + * Makefile.rtl: Compile s-oscons.ads as part of the runtime library. + +2008-08-05 Doug Rupp + + * vms_data.ads: Translation for /POINTER_SIZE qualifier. + 2008-08-05 Thomas Quinot * gsocket.h: Make this file includable in a Nucleus environment, which diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index dc23ddea238..82b47aa17a6 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -1810,6 +1810,16 @@ package body Sem_Ch12 is Find_Type (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 else diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 3720b3b7643..8a44655edf9 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -16507,7 +16507,9 @@ package body Sem_Ch3 is or else Nkind_In (P, N_Derived_Type_Definition, N_Discriminant_Specification, + N_Formal_Object_Declaration, N_Object_Declaration, + N_Object_Renaming_Declaration, N_Parameter_Specification, N_Subtype_Declaration); @@ -16552,6 +16554,9 @@ package body Sem_Ch3 is Error_Node := Subtype_Indication (Component_Definition (Related_Nod)); + when N_Allocator => + Error_Node := Expression (Related_Nod); + when others => pragma Assert (False); Error_Node := Related_Nod; diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 16c79d99f04..9a19b2a8b1e 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -884,6 +884,11 @@ package body Sem_Ch8 is Error_Msg_N ("renamed object does not exclude `NULL` " & "(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; -- 2.11.0