1
A parameter association defines the association between an actual parameter and a formal parameter.
2
The formal_parameter_selector_name of a parameter_association (see 6.4) shall resolve to denote a parameter_specification (see 6.1) of the view being called.
3
The actual parameter is either the explicit_actual_parameter given in a parameter_association for a given formal parameter, or the corresponding default_expression if no parameter_association is given for the formal parameter. The expected type for an actual parameter is the type of the corresponding formal parameter.
4
If the mode is in, the actual is interpreted as an expression; otherwise, the actual is interpreted only as a name, if possible.
5
If the mode is in out or out, the actual shall be a name that denotes a variable.
6
The type of the actual parameter associated with an access parameter shall be convertible (see 4.6) to its anonymous access type.
7
For the evaluation of a parameter_association:
8
9
10
11
12
13
- For an access type, the formal parameter is initialized from the value of the actual, without a constraint check;
14
- For a composite type with discriminants or that has implicit initial values for any subcomponents (see 3.3.1), the behavior is as for an in out parameter passed by copy.
15
- For any other type, the formal parameter is uninitialized. If composite, a view conversion of the actual parameter to the nominal subtype of the formal is evaluated (which might raise Constraint_Error), and the actual subtype of the formal is that of the view conversion. If elementary, the actual subtype of the formal is given by its nominal subtype.
16
A formal parameter of mode in out or out with discriminants is constrained if either its nominal subtype or the actual parameter is constrained.
17
After normal completion and leaving of a subprogram, for each in out or out parameter that is passed by copy, the value of the formal parameter is converted to the subtype of the variable given as the actual parameter and assigned to it. These conversions and assignments occur in an arbitrary order.