- (1)
- A generic formal object can be used to pass a value or variable to a
generic unit.
(2)
formal_object_declaration ::=
defining_identifier_list : mode subtype_mark [:= default_expression];
Name Resolution Rules
- (3)
- The expected type for the default_expression, if any, of a formal object
is the type of the formal object.
- (4)
- For a generic formal object of mode in, the expected type for the actual
is the type of the formal.
- (5)
- For a generic formal object of mode in out, the type of the actual shall
resolve to the type of the formal.
Legality Rules
- (6)
- If a generic formal object has a default_expression, then the mode shall
be in (either explicitly or by default); otherwise, its mode shall be either
in or in out.
- (7)
- For a generic formal object of mode in, the actual shall be an expression.
For a generic formal object of mode in out, the actual shall be a name that
denotes a variable for which renaming is allowed (see
8.5.1).
- (8)
- The type of a generic formal object of mode in shall be nonlimited.
Static Semantics
- (9)
- A formal_object_declaration declares a generic formal object. The
default mode is in. For a formal object of mode in, the nominal subtype is
the one denoted by the subtype_mark in the declaration of the formal. For a
formal object of mode in out, its type is determined by the subtype_mark in
the declaration; its nominal subtype is nonstatic, even if the subtype_mark
denotes a static subtype.
- (10)
- In an instance, a formal_object_declaration of mode in declares a new
stand-alone constant object whose initialization expression is the actual,
whereas a formal_object_declaration of mode in out declares a view whose
properties are identical to those of the actual.
Dynamic Semantics
- (11)
- For the evaluation of a generic_association for a formal object of mode
in, a constant object is created, the value of the actual parameter is converted
to the nominal subtype of the formal object, and assigned to the object, including
any value adjustment -- see 7.6.
-
- (12)
(6) The constraints that apply to a generic formal object of mode in out
are those of the corresponding generic actual parameter (not those
implied by the subtype_mark that appears in the formal_object_declaration). Therefore, to avoid confusion, it is recommended that the
name of a first subtype be used for the declaration of such a formal
object.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12