Contents   Index   Previous   Next


12.5.2 Formal Scalar Types

1
   A formal scalar type is one defined by any of the formal_type_definitions in this subclause. [The class determined for a formal scalar type is discrete, signed integer, modular, floating point, ordinary fixed point, or decimal.]

Syntax

2
formal_discrete_type_definition ::= (<>)
3
formal_signed_integer_type_definition ::= range <>
4
formal_modular_type_definition ::= mod <>
5
formal_floating_point_definition ::= digits <>
6
formal_ordinary_fixed_point_definition ::= delta <>
7
formal_decimal_fixed_point_definition ::= delta <> digits <>

Legality Rules

8
   The actual type for a formal scalar type shall not be a nonstandard numeric type.
8.a
Reason: This restriction is necessary because nonstandard numeric types have some number of restrictions on their use, which could cause contract model problems in a generic body. Note that nonstandard numeric types can be passed to formal derived and formal private subtypes, assuming they obey all the other rules, and assuming the implementation allows it (being nonstandard means the implementation might disallow anything).
NOTES
9
12  The actual type shall be in the class of types implied by the syntactic category of the formal type definition (see 12.5, ``Formal Types''). For example, the actual for a formal_modular_type_definition shall be a modular type.

Contents   Index   Previous   Next   Legal