+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
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