Contents Index Previous Next
4.9.1 Statically Matching Constraints and Subtypes
Static Semantics
1
A constraint
statically
matches another constraint if both are null constraints, both are
static and have equal corresponding bounds or discriminant values, or
both are nonstatic and result from the same elaboration of a
constraint
of a
subtype_indication or the same
evaluation of a
range of a
discrete_subtype_definition.
2
A subtype
statically matches
another subtype of the same type if they have statically matching constraints.
Two anonymous access subtypes statically match if their designated subtypes
statically match.
2.a
Ramification: Statically
matching constraints and subtypes are the basis for subtype conformance
of profiles (see 6.3.1).
3
Two ranges of the same type
statically match if both result from the same evaluation of a
range, or if both are static and
have equal corresponding bounds.
3.a
Ramification: The notion
of static matching of ranges is used in 12.5.3,
``Formal Array Types''; the index ranges
of formal and actual constrained array subtypes have to statically match.
4
A constraint is
statically
compatible with a scalar subtype if it statically matches the constraint
of the subtype, or if both are static and the constraint is compatible
with the subtype.
A constraint is
statically compatible
with an access or composite subtype if it statically matches the constraint
of the subtype, or if the subtype is unconstrained.
One
subtype is
statically compatible with a second subtype if the
constraint of the first is statically compatible with the second subtype.
4.a
Discussion: Static compatibility
is required when constraining a parent subtype with a discriminant from
a new discriminant_part. See 3.7.
Static compatibility is also used in matching generic formal derived
types.
4.b
Note that statically compatible
with a subtype does not imply compatible with a type. It is OK since
the terms are used in different contexts.
Wording Changes from Ada 83
4.c
This subclause is new to Ada 95.
Contents Index Previous Next Legal