Go to the first, previous, next, last section, table of contents.


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 section 4.6 Type Conversions, to its anonymous access type.

    Dynamic Semantics

  7. For the evaluation of a parameter_association:
    1. The actual parameter is first evaluated.
    2. For an access parameter, the access_definition is elaborated, which creates the anonymous access type.
    3. For a parameter (of any mode) that is passed by reference, See section 6.2 Formal Parameter Modes, a view conversion of the actual parameter to the nominal subtype of the formal parameter is evaluated, and the formal parameter denotes that conversion.
    4. For an in or in out parameter that is passed by copy, See section 6.2 Formal Parameter Modes, 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.
    5. For an out parameter that is passed by copy, the formal parameter object is created, and:
      1. For an access type, the formal parameter is initialized from the value of the actual, without a constraint check;
      2. For a composite type with discriminants or that has implicit initial values for any subcomponents, See section 3.3.1 Object Declarations, the behavior is as for an in out parameter passed by copy.
      3. 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.

  1. A formal parameter of mode in out or out with discriminants is constrained if either its nominal subtype or the actual parameter is constrained.
  2. 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.


Go to the first, previous, next, last section, table of contents.