12.5.2 Formal Scalar Types
1/2
{
AI95-00442-01}
A
formal scalar type is one defined by any of the
formal_type_definitions
in this subclause. [The
category class
determined for a formal scalar type is
the category
of all discrete, signed integer, modular, floating point, ordinary
fixed point, or decimal
types.]
1.a/2
Proof: {
AI95-00442-01}
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.
1.b/2
Ramification: {
AI95-00442-01}
The “category of a type” includes any
classes that the type belongs to.
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).
9
Wording Changes from Ada 95
9.a/2
{
AI95-00442-01}
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