Commit c365eb26 by Ed Schonberg Committed by Pierre-Marie de Rodat

[Ada] Fix position of subprogram body generated for static predicate

2019-07-05  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch13.adb (Build_Predicate_Functions): If a subtype that
	carries a static predicate aspect is frozen immediately after
	its declaration, ensure that the generated function body created
	for predicate checking is inserted after the corresponding
	subprogram declaration, which is created at the point the
	declaration is elaborated.

From-SVN: r273122
parent 9880061b
2019-07-05 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Build_Predicate_Functions): If a subtype that
carries a static predicate aspect is frozen immediately after
its declaration, ensure that the generated function body created
for predicate checking is inserted after the corresponding
subprogram declaration, which is created at the point the
declaration is elaborated.
2019-07-05 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch7.adb (Cleanup_Record): Use the underlying type when
......
......@@ -8902,9 +8902,15 @@ package body Sem_Ch13 is
Expression => Expr))));
-- The declaration has been analyzed when created, and placed
-- after type declaration. Insert body itself after freeze node.
-- after type declaration. Insert body itself after freeze node,
-- unless subprogram declaration is already there, in which case
-- body better be placed afterwards.
Insert_After_And_Analyze (N, FBody);
if FDecl = Next (N) then
Insert_After_And_Analyze (FDecl, FBody);
else
Insert_After_And_Analyze (N, FBody);
end if;
-- The defining identifier of a quantified expression carries the
-- scope in which the type appears, but when unnesting we need
......
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