- (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.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12