Commit 6a04272a by Thomas Quinot Committed by Arnaud Charlet

sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post aspect that applies…

sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post aspect that applies to a library subprogram...

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post
	aspect that applies to a library subprogram, prepend corresponding
	pragma to the Pragmas_After list, in order for split AND THEN
	sections to be processed in the expected order.

From-SVN: r194783
parent c5d00db0
2013-01-02 Thomas Quinot <quinot@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post
aspect that applies to a library subprogram, prepend corresponding
pragma to the Pragmas_After list, in order for split AND THEN
sections to be processed in the expected order.
2013-01-02 Thomas Quinot <quinot@adacore.com>
* exp_prag.adb (Expand_Pragma_Check): The statements generated
for the pragma must have the sloc of the pragma, not the
sloc of the condition, otherwise this creates anomalies in the
......
......@@ -1602,10 +1602,21 @@ package body Sem_Ch13 is
-- with delay of visibility for the expression analysis.
-- If the entity is a library-level subprogram, the pre/
-- postconditions must be treated as late pragmas.
-- postconditions must be treated as late pragmas. Note
-- that they must be prepended, not appended, to the list,
-- so that split AND THEN sections are processed in the
-- correct order.
if Nkind (Parent (N)) = N_Compilation_Unit then
Add_Global_Declaration (Aitem);
declare
Aux : constant Node_Id := Aux_Decls_Node (Parent (N));
begin
if No (Pragmas_After (Aux)) then
Set_Pragmas_After (Aux, New_List);
end if;
Prepend (Aitem, Pragmas_After (Aux));
end;
-- If it is a subprogram body, add pragmas to list of
-- declarations in body.
......@@ -1930,7 +1941,7 @@ package body Sem_Ch13 is
else
if No (Pragmas_After (Aux)) then
Set_Pragmas_After (Aux, Empty_List);
Set_Pragmas_After (Aux, New_List);
end if;
Append (Aitem, Pragmas_After (Aux));
......
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