[multiple changes]

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_One): Refine categorization of statement
	SCOs.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Remove aspects Ada_2005 and Ada_2012,
	Pure_05, Pure_12 and Preelaborate_05.
	* gnat_rm.texi: Update accordingly.
	* sem_prag.adb: Document one argument form of Ada_05/Ada_2005
	pragmas Document one argument form of Ada_12/Ada_2012 pragmas
	Recognize one argument form of these pragmas only in GNAT mode
	(-gnatg).

From-SVN: r208072
This commit is contained in:
Arnaud Charlet 2014-02-24 16:52:45 +01:00
parent 1037b0f462
commit e19137bce2
6 changed files with 78 additions and 47 deletions

View File

@ -1,3 +1,18 @@
2014-02-24 Thomas Quinot <quinot@adacore.com>
* par_sco.adb (Traverse_One): Refine categorization of statement
SCOs.
2014-02-24 Robert Dewar <dewar@adacore.com>
* aspects.ads, aspects.adb: Remove aspects Ada_2005 and Ada_2012,
Pure_05, Pure_12 and Preelaborate_05.
* gnat_rm.texi: Update accordingly.
* sem_prag.adb: Document one argument form of Ada_05/Ada_2005
pragmas Document one argument form of Ada_12/Ada_2012 pragmas
Recognize one argument form of these pragmas only in GNAT mode
(-gnatg).
2014-02-24 Ed Schonberg <schonberg@adacore.com>
* s-dimmks.ads: Replace symbol for temperature, previously the

View File

@ -492,8 +492,6 @@ package body Aspects is
Canonical_Aspect : constant array (Aspect_Id) of Aspect_Id :=
(No_Aspect => No_Aspect,
Aspect_Abstract_State => Aspect_Abstract_State,
Aspect_Ada_2005 => Aspect_Ada_2005,
Aspect_Ada_2012 => Aspect_Ada_2005,
Aspect_Address => Aspect_Address,
Aspect_Alignment => Aspect_Alignment,
Aspect_All_Calls_Remote => Aspect_All_Calls_Remote,
@ -557,12 +555,9 @@ package body Aspects is
Aspect_Precondition => Aspect_Pre,
Aspect_Predicate => Aspect_Predicate,
Aspect_Preelaborate => Aspect_Preelaborate,
Aspect_Preelaborate_05 => Aspect_Preelaborate_05,
Aspect_Preelaborable_Initialization => Aspect_Preelaborable_Initialization,
Aspect_Priority => Aspect_Priority,
Aspect_Pure => Aspect_Pure,
Aspect_Pure_05 => Aspect_Pure_05,
Aspect_Pure_12 => Aspect_Pure_12,
Aspect_Pure_Function => Aspect_Pure_Function,
Aspect_Refined_Depends => Aspect_Refined_Depends,
Aspect_Refined_Global => Aspect_Refined_Global,

View File

@ -146,10 +146,7 @@ package Aspects is
Aspect_Compiler_Unit, -- GNAT
Aspect_Elaborate_Body,
Aspect_Preelaborate,
Aspect_Preelaborate_05, -- GNAT
Aspect_Pure,
Aspect_Pure_05, -- GNAT
Aspect_Pure_12, -- GNAT
Aspect_Remote_Call_Interface,
Aspect_Remote_Types,
Aspect_Shared_Passive,
@ -162,8 +159,6 @@ package Aspects is
-- the aspect value is inherited from the parent, in which case, we do
-- not allow False if we inherit a True value from the parent.
Aspect_Ada_2005, -- GNAT
Aspect_Ada_2012, -- GNAT
Aspect_Async_Readers, -- GNAT
Aspect_Async_Writers, -- GNAT
Aspect_Asynchronous,
@ -220,8 +215,6 @@ package Aspects is
Implementation_Defined_Aspect : constant array (Aspect_Id) of Boolean :=
(Aspect_Abstract_State => True,
Aspect_Ada_2005 => True,
Aspect_Ada_2012 => True,
Aspect_Async_Readers => True,
Aspect_Async_Writers => True,
Aspect_Compiler_Unit => True,
@ -239,9 +232,6 @@ package Aspects is
Aspect_Object_Size => True,
Aspect_Persistent_BSS => True,
Aspect_Predicate => True,
Aspect_Preelaborate_05 => True,
Aspect_Pure_05 => True,
Aspect_Pure_12 => True,
Aspect_Pure_Function => True,
Aspect_Remote_Access_Type => True,
Aspect_Scalar_Storage_Order => True,
@ -282,7 +272,7 @@ package Aspects is
-- aspect is enabled. If it is False, the aspect is disabled.
subtype Boolean_Aspects is
Aspect_Id range Aspect_Ada_2005 .. Aspect_Id'Last;
Aspect_Id range Aspect_Async_Readers .. Aspect_Id'Last;
subtype Pre_Post_Aspects is
Aspect_Id range Aspect_Post .. Aspect_Precondition;
@ -377,8 +367,6 @@ package Aspects is
Aspect_Names : constant array (Aspect_Id) of Name_Id :=
(No_Aspect => No_Name,
Aspect_Abstract_State => Name_Abstract_State,
Aspect_Ada_2005 => Name_Ada_2005,
Aspect_Ada_2012 => Name_Ada_2012,
Aspect_Address => Name_Address,
Aspect_Alignment => Name_Alignment,
Aspect_All_Calls_Remote => Name_All_Calls_Remote,
@ -443,11 +431,8 @@ package Aspects is
Aspect_Predicate => Name_Predicate,
Aspect_Preelaborable_Initialization => Name_Preelaborable_Initialization,
Aspect_Preelaborate => Name_Preelaborate,
Aspect_Preelaborate_05 => Name_Preelaborate_05,
Aspect_Priority => Name_Priority,
Aspect_Pure => Name_Pure,
Aspect_Pure_05 => Name_Pure_05,
Aspect_Pure_12 => Name_Pure_12,
Aspect_Pure_Function => Name_Pure_Function,
Aspect_Read => Name_Read,
Aspect_Refined_Depends => Name_Refined_Depends,
@ -646,11 +631,8 @@ package Aspects is
Aspect_Predicate => Always_Delay,
Aspect_Preelaborable_Initialization => Always_Delay,
Aspect_Preelaborate => Always_Delay,
Aspect_Preelaborate_05 => Always_Delay,
Aspect_Priority => Always_Delay,
Aspect_Pure => Always_Delay,
Aspect_Pure_05 => Always_Delay,
Aspect_Pure_12 => Always_Delay,
Aspect_Pure_Function => Always_Delay,
Aspect_Read => Always_Delay,
Aspect_Refined_Depends => Always_Delay,
@ -681,8 +663,6 @@ package Aspects is
Aspect_Write => Always_Delay,
Aspect_Abstract_State => Never_Delay,
Aspect_Ada_2005 => Never_Delay,
Aspect_Ada_2012 => Never_Delay,
Aspect_Convention => Never_Delay,
Aspect_Dimension => Never_Delay,
Aspect_Dimension_System => Never_Delay,

View File

@ -279,8 +279,6 @@ Implementation Defined Pragmas
Implementation Defined Aspects
* Aspect Abstract_State::
* Aspect Ada_2005::
* Aspect Ada_2012::
* Aspect Compiler_Unit::
* Aspect Contract_Cases::
* Aspect Depends::
@ -1188,6 +1186,7 @@ either Ada 83 or Ada 95 programs.
Syntax:
@smallexample @c ada
pragma Ada_05;
pragma Ada_05 (local_NAME);
@end smallexample
@noindent
@ -1197,6 +1196,17 @@ This pragma is useful when writing a reusable component that
itself uses Ada 2005 features, but which is intended to be usable from
either Ada 83 or Ada 95 programs.
The one argument form (which is not a configuration pragma)
is used for managing the transition from
Ada 95 to Ada 2005 in the run-time library. If an entity is marked
as Ada_2005 only, then referencing the entity in Ada_83 or Ada_95
mode will generate a warning. In addition, in Ada_83 or Ada_95
mode, a preference rule is established which does not choose
such an entity unless it is unambiguously specified. This avoids
extra subprograms marked this way from generating ambiguities in
otherwise legal pre-Ada_2005 programs. The one argument form is
intended for exclusive use in the GNAT run-time library.
@node Pragma Ada_2005
@unnumberedsec Pragma Ada_2005
@findex Ada_2005
@ -1217,6 +1227,7 @@ same syntax and effect.
Syntax:
@smallexample @c ada
pragma Ada_12;
pragma Ada_12 (local_NAME);
@end smallexample
@noindent
@ -1228,6 +1239,17 @@ contexts. This pragma is useful when writing a reusable component that
itself uses Ada 2012 features, but which is intended to be usable from
Ada 83, Ada 95, or Ada 2005 programs.
The one argument form, which is not a configuration pragma,
is used for managing the transition from Ada
2005 to Ada 2012 in the run-time library. If an entity is marked
as Ada_201 only, then referencing the entity in any pre-Ada_2012
mode will generate a warning. In addition, in any pre-Ada_2012
mode, a preference rule is established which does not choose
such an entity unless it is unambiguously specified. This avoids
extra subprograms marked this way from generating ambiguities in
otherwise legal pre-Ada_2012 programs. The one argument form is
intended for exclusive use in the GNAT run-time library.
@node Pragma Ada_2012
@unnumberedsec Pragma Ada_2012
@findex Ada_2005
@ -7640,8 +7662,6 @@ clause.
@menu
* Aspect Abstract_State::
* Aspect Ada_2005::
* Aspect Ada_2012::
* Aspect Compiler_Unit::
* Aspect Contract_Cases::
* Aspect Depends::
@ -7686,18 +7706,6 @@ clause.
@noindent
This aspect is equivalent to pragma @code{Abstract_State}.
@node Aspect Ada_2005
@unnumberedsec Aspect Ada_2005
@findex Ada_2005
@noindent
This aspect is equivalent to the one argument form of pragma @code{Ada_2005}.
@node Aspect Ada_2012
@unnumberedsec Aspect Ada_2012
@findex Ada_2012
@noindent
This aspect is equivalent to the one argument form of pragma @code{Ada_2012}.
@node Aspect Compiler_Unit
@unnumberedsec Aspect Compiler_Unit
@findex Compiler_Unit

View File

@ -1544,12 +1544,17 @@ package body Par_SCO is
Set_Statement_Entry;
Traverse_Package_Body (N);
-- Subprogram declaration
-- Subprogram declaration or subprogram body stub
when N_Subprogram_Declaration | N_Subprogram_Body_Stub =>
Process_Decisions_Defer
(Parameter_Specifications (Specification (N)), 'X');
-- Entry declaration
when N_Entry_Declaration =>
Process_Decisions_Defer (Parameter_Specifications (N), 'X');
-- Generic subprogram declaration
when N_Generic_Subprogram_Declaration =>
@ -1600,7 +1605,7 @@ package body Par_SCO is
-- any decisions in the exit statement expression.
when N_Exit_Statement =>
Extend_Statement_Sequence (N, ' ');
Extend_Statement_Sequence (N, 'E');
Process_Decisions_Defer (Condition (N), 'E');
Set_Statement_Entry;
@ -2002,7 +2007,7 @@ package body Par_SCO is
-- want one entry in the SCOs, so we take the first, for which
-- Prev_Ids is False.
when N_Object_Declaration =>
when N_Object_Declaration | N_Number_Declaration =>
if not Prev_Ids (N) then
Extend_Statement_Sequence (N, 'o');
@ -2033,10 +2038,11 @@ package body Par_SCO is
-- no SCO should be generated for this node.
declare
NK : constant Node_Kind := Nkind (N);
Typ : Character;
begin
case Nkind (N) is
case NK is
when N_Full_Type_Declaration |
N_Incomplete_Type_Declaration |
N_Private_Type_Declaration |
@ -2060,8 +2066,15 @@ package body Par_SCO is
N_Protected_Body_Stub =>
Typ := ASCII.NUL;
when others =>
when N_Procedure_Call_Statement =>
Typ := ' ';
when others =>
if NK in N_Statement_Other_Than_Procedure_Call then
Typ := ' ';
else
Typ := 'd';
end if;
end case;
if Typ /= ASCII.NUL then

View File

@ -10673,6 +10673,16 @@ package body Sem_Prag is
-- Note: these pragmas also have some specific processing in Par.Prag
-- because we want to set the Ada 2005 version mode during parsing.
-- The one argument form is used for managing the transition from
-- Ada 95 to Ada 2005 in the run-time library. If an entity is marked
-- as Ada_2005 only, then referencing the entity in Ada_83 or Ada_95
-- mode will generate a warning. In addition, in Ada_83 or Ada_95
-- mode, a preference rule is established which does not choose
-- such an entity unless it is unambiguously specified. This avoids
-- extra subprograms marked this way from generating ambiguities in
-- otherwise legal pre-Ada_2005 programs. The one argument form is
-- intended for exclusive use in the GNAT run-time library.
when Pragma_Ada_05 | Pragma_Ada_2005 => declare
E_Id : Node_Id;
@ -10722,6 +10732,16 @@ package body Sem_Prag is
-- Note: these pragmas also have some specific processing in Par.Prag
-- because we want to set the Ada 2012 version mode during parsing.
-- The one argument form is used for managing the transition from Ada
-- 2005 to Ada 2012 in the run-time library. If an entity is marked
-- as Ada_201 only, then referencing the entity in any pre-Ada_2012
-- mode will generate a warning. In addition, in any pre-Ada_2012
-- mode, a preference rule is established which does not choose
-- such an entity unless it is unambiguously specified. This avoids
-- extra subprograms marked this way from generating ambiguities in
-- otherwise legal pre-Ada_2012 programs. The one argument form is
-- intended for exclusive use in the GNAT run-time library.
when Pragma_Ada_12 | Pragma_Ada_2012 => declare
E_Id : Node_Id;