4.9.1 Statically Matching Constraints and Subtypes
Static Semantics
A constraint
statically matches
another constraint if:
both are null constraints;
both are static and have equal corresponding bounds
or discriminant values;
A subtype
statically matches
another subtype of the same type if they have statically matching constraints,
and, for access subtypes, either both or neither exclude null. Two anonymous
access-to-object subtypes statically match if their designated subtypes
statically match, and either both or neither exclude null, and either
both or neither are access-to-constant. Two anonymous access-to-subprogram
subtypes statically match if their designated profiles are subtype conformant,
and either both or neither exclude null.
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.
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.