@@ -11097,6 +11097,9 @@ package body Sem_Ch12 is
Expression => New_Copy_Tree
(Default_Expression (Formal)));
+ Set_Corresponding_Generic_Association
+ (Decl_Node, Expression (Decl_Node));
+
Append (Decl_Node, List);
Set_Analyzed (Expression (Decl_Node), False);
@@ -1106,9 +1106,11 @@ package Sinfo is
-- Corresponding_Generic_Association (Node5-Sem)
-- This field is defined for object declarations and object renaming
-- declarations. It is set for the declarations within an instance that
- -- map generic formals to their actuals. If set, the field points to
- -- a generic_association which is the original parent of the expression
- -- or name appearing in the declaration. This simplifies ASIS queries.
+ -- map generic formals to their actuals. If set, the field points either
+ -- to a copy of a default expression for an actual of mode IN or to a
+ -- generic_association which is the original parent of the expression or
+ -- name appearing in the declaration. This simplifies ASIS and GNATprove
+ -- queries.
-- Corresponding_Integer_Value (Uint4-Sem)
-- This field is set in real literals of fixed-point types (it is not
new file mode 100644
@@ -0,0 +1,18 @@
+-- { dg-do compile }
+-- { dg-options "-gnatd.F" }
+
+procedure Generic_Actuals with SPARK_Mode is
+ generic
+ X : Integer;
+ Y : Integer := 0;
+ package Q with Initializes => (XX => X, YY => Y) is
+ -- Both X and Y actuals can appear in the Initializes contract,
+ -- i.e. the default expression of Y should not matter.
+ XX : Integer := X;
+ YY : Integer := Y;
+ end Q;
+
+ package Inst is new Q (X => 0);
+begin
+ null;
+end Generic_Actuals;