DocAda(tm) is a productivity tool of KSCE

Prev | Up | Next | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

3.2.2 Subtype Declarations

A subtype_declaration declares a subtype of some previously declared type, as defined by a subtype_indication.

Syntax

   
       subtype_declaration ::=
          subtype defining_identifier is subtype_indication;

       subtype_indication ::=  subtype_mark [constraint]

       subtype_mark ::= subtype_name

       constraint ::= scalar_constraint | composite_constraint

       scalar_constraint ::=
            range_constraint | digits_constraint | delta_constraint

       composite_constraint ::=
            index_constraint | discriminant_constraint

Name Resolution Rules

A subtype_mark shall resolve to denote a subtype. The type determined by a subtype_mark is the type of the subtype denoted by the subtype_mark.

Dynamic Semantics

The elaboration of a subtype_declaration consists of the elaboration of the subtype_indication. The elaboration of a subtype_indication creates a new subtype. If the subtype_indication does not include a constraint, the new subtype has the same (possibly null) constraint as that denoted by the subtype_mark. The elaboration of a subtype_indication that includes a constraint proceeds as follows:

The condition imposed by a constraint is the condition obtained after elaboration of the constraint. The rules defining compatibility are given for each form of constraint in the appropriate subclause. These rules are such that if a constraint is compatible with a subtype, then the condition imposed by the constraint cannot contradict any condition already imposed by the subtype on its values. The exception Constraint_Error is raised if any check of compatibility fails.

Examples

Examples of subtype declarations:

    
       subtype Rainbow   is Color range Red .. Blue;        --  see 3.2.1
       subtype Red_Blue  is Rainbow;
       subtype Int       is Integer;
       subtype Small_Int is Integer range -10 .. 10;
       subtype Up_To_K   is Column range 1 .. K;            --  see 3.2.1
       subtype Square    is Matrix(1 .. 10, 1 .. 10);       --  see 3.6
       subtype Male      is Person(Sex => M);               --  see 3.10.1

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | Up | Next | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com