Contents Index Search Previous Next
6.4.1 Parameter Associations
1
A parameter association defines
the association between an actual parameter and a formal parameter.
Name Resolution Rules
2
The formal_parameter_selector_name
of a parameter_association shall
resolve to denote a parameter_specification
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.
Legality Rules
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.
Dynamic Semantics
7
For
the evaluation of a
parameter_association:
8
- The actual parameter is first evaluated.
9
- For an access parameter, the access_definition
is elaborated, which creates the anonymous access type.
10
- For a parameter (of any mode) that
is passed by reference (see 6.2), a view conversion
of the actual parameter to the nominal subtype of the formal parameter
is evaluated, and the formal parameter denotes that conversion.
11
- For an in
or in out parameter that is passed by copy (see 6.2),
the formal parameter object is created, and the value of the actual parameter
is converted to the nominal subtype of the formal parameter and assigned
to the formal.
12
- For
an out parameter that is passed by copy, the formal parameter
object is created, and:
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.
Contents Index Search Previous Next Legal