Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help


4.7 Qualified Expressions

(1)
A qualified_expression is used to state explicitly the type, and to verify the subtype, of an operand that is either an expression or an aggregate.
Syntax
(2)
       qualified_expression ::=
          subtype_mark'(expression) | subtype_mark'aggregate
Name Resolution Rules
(3)
The operand (the expression or aggregate) shall resolve to be of the type determined by the subtype_mark, or a universal type that covers it.
Dynamic Semantics
(4)
The evaluation of a qualified_expression evaluates the operand (and if of a universal type, converts it to the type determined by the subtype_mark) and checks that its value belongs to the subtype denoted by the subtype_mark. The exception Constraint_Error is raised if this check fails.

(5)
Examples
(6)
Examples of disambiguating expressions using qualification:
(7)
       type Mask is (Fix, Dec, Exp, Signif);
       type Code is (Fix, Cla, Dec, Tnz, Sub);
(8)
       Print (Mask'(Dec));  --  Dec is of type Mask
       Print (Code'(Dec));  --  Dec is of type Code
(9)
       for J in Code'(Fix) .. Code'(Dec) loop ... -- qualification needed for either Fix or Dec
       for J in Code range Fix .. Dec loop ...    -- qualification unnecessary
       for J in Code'(Fix) .. Dec loop ...        -- qualification unnecessary forDec
(10)
       Dozen'(1 | 3 | 5 | 7 => 2, others => 0) -- see 4.6


Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help

Ada WWW Home -- Email comments, additions, corrections, gripes, kudos, etc. to:

Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12