12.5.2 Formal Scalar Types
A formal scalar type
is one defined by any of the formal_type_definition
in this subclause. [The category class
determined for a formal scalar type is the category
discrete, signed integer, modular, floating point, ordinary
fixed point, or decimal types
The second rule follows from the rule in 12.5
that says that the category is determined by the one given in the name
of the syntax production. The effect of the rule is repeated here to
give a capsule summary of what this subclause is about.
The “category of a type” includes any
classes that the type belongs to.
formal_signed_integer_type_definition ::= range
formal_modular_type_definition ::= mod
formal_floating_point_definition ::= digits
formal_ordinary_fixed_point_definition ::= delta
formal_decimal_fixed_point_definition ::= delta
The actual type for a formal scalar type shall not
be a nonstandard numeric type.
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).
12 The actual type shall be in the class
of types implied by the syntactic category of the formal type definition
”). For example, the actual for a formal_modular_type_definition
shall be a modular type.
Wording Changes from Ada 95
We change to “determines a category”
as that is the new terminology (it avoids confusion, since not all interesting
properties form a class).