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 determined for a formal scalar type
is the category of all 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
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).
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).
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe