From: Javier Miranda Date: Tue, 15 Nov 2005 13:58:31 +0000 (+0100) Subject: exp_strm.adb (Build_Stream_Attr_Profile, [...]): Add the null-excluding attribute... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f0eed34cd5defba04459a35da0d6d717bb22696;p=platform%2Fupstream%2Fgcc.git exp_strm.adb (Build_Stream_Attr_Profile, [...]): Add the null-excluding attribute to the first formal. 2005-11-14 Javier Miranda * exp_strm.adb (Build_Stream_Attr_Profile, Build_Stream_Function, Build_Stream_Procedure): Add the null-excluding attribute to the first formal. This has no semantic meaning under Ada95 mode but it is a requirement under Ada05 mode. * par-ch3.adb (P_Access_Definition): Addition of warning message if the null exclusion is used under Ada95 mode (P_Null_Exclusion): The qualifier has no semantic meaning in Ada 95. (P_Access_Definition): Remove assertion that forbids the use of the null-exclusion feature in Ada95. From-SVN: r106977 --- diff --git a/gcc/ada/exp_strm.adb b/gcc/ada/exp_strm.adb index f6e5d5c..84b321e 100644 --- a/gcc/ada/exp_strm.adb +++ b/gcc/ada/exp_strm.adb @@ -1447,11 +1447,15 @@ package body Exp_Strm is Profile : List_Id; begin + -- (Ada 2005: AI-441): Set the null-excluding attribute because it has + -- no semantic meaning in Ada 95 but it is a requirement in Ada2005. + Profile := New_List ( Make_Parameter_Specification (Loc, Defining_Identifier => Make_Defining_Identifier (Loc, Name_S), Parameter_Type => Make_Access_Definition (Loc, + Null_Exclusion_Present => True, Subtype_Mark => New_Reference_To ( Class_Wide_Type (RTE (RE_Root_Stream_Type)), Loc)))); @@ -1483,6 +1487,9 @@ package body Exp_Strm is begin -- Construct function specification + -- (Ada 2005: AI-441): Set the null-excluding attribute because it has + -- no semantic meaning in Ada 95 but it is a requirement in Ada2005. + Spec := Make_Function_Specification (Loc, Defining_Unit_Name => Fnam, @@ -1492,6 +1499,7 @@ package body Exp_Strm is Defining_Identifier => Make_Defining_Identifier (Loc, Name_S), Parameter_Type => Make_Access_Definition (Loc, + Null_Exclusion_Present => True, Subtype_Mark => New_Reference_To ( Class_Wide_Type (RTE (RE_Root_Stream_Type)), Loc)))), @@ -1523,6 +1531,9 @@ package body Exp_Strm is begin -- Construct procedure specification + -- (Ada 2005: AI-441): Set the null-excluding attribute because it has + -- no semantic meaning in Ada 95 but it is a requirement in Ada2005. + Spec := Make_Procedure_Specification (Loc, Defining_Unit_Name => Pnam, @@ -1532,6 +1543,7 @@ package body Exp_Strm is Defining_Identifier => Make_Defining_Identifier (Loc, Name_S), Parameter_Type => Make_Access_Definition (Loc, + Null_Exclusion_Present => True, Subtype_Mark => New_Reference_To ( Class_Wide_Type (RTE (RE_Root_Stream_Type)), Loc))), diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb index d4e84a5..037b4e6 100644 --- a/gcc/ada/par-ch3.adb +++ b/gcc/ada/par-ch3.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005, 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- -- @@ -914,10 +914,13 @@ package body Ch3 is return False; else + -- Ada 2005 (AI-441): The qualifier has no semantic meaning in Ada 95 + -- (all access Parameters Are "not null" in Ada 95). + if Ada_Version < Ada_05 then Error_Msg_SP - ("null-excluding access is an Ada 2005 extension"); - Error_Msg_SP ("\unit must be compiled with -gnat05 switch"); + ("null-excluding access is an Ada 2005 extension?"); + Error_Msg_SP ("\unit should be compiled with -gnat05 switch?"); end if; Scan; -- past NOT @@ -3813,11 +3816,6 @@ package body Ch3 is -- Ada 95 else - -- Ada 2005 (AI-254): The null-exclusion present is never present - -- in Ada 83 and Ada 95 - - pragma Assert (Null_Exclusion_Present = False); - Set_Null_Exclusion_Present (Def_Node, False); Set_Subtype_Mark (Def_Node, P_Subtype_Mark); No_Constraint;