The Valid Attribute
Author: JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor

Ada Reference Manual — Legal Information

# 13.9.2 The Valid Attribute

1
The Valid attribute can be used to check the validity of data produced by unchecked conversion, input, interface to foreign languages, and the like.

#### Static Semantics

2
For a prefix X that denotes a scalar object (after any implicit dereference), the following attribute is defined:
3
X'Valid
Yields True if and only if the object denoted by X is normal and has a valid representation. The value of this attribute is of the predefined type Boolean.
NOTES
4
19 Invalid data can be created in the following cases (not counting erroneous or unpredictable execution):
5

- an uninitialized scalar object,

6

- the result of an unchecked conversion,

7

- input,

8

- interface to another language (including machine code),

9

- aborting an assignment,

10

- disrupting an assignment due to the failure of a language-defined check (see 11.6), and

11

- use of an object whose Address has been specified.

12
20 X'Valid is not considered to be a read of X; hence, it is not an error to check the validity of invalid data.
13/2
21 The Valid attribute may be used to check the result of calling an instance of Unchecked_Conversion (or any other operation that can return invalid values). However, an exception handler should also be provided because implementations are permitted to raise Constraint_Error or Program_Error if they detect the use of an invalid representation (see 13.9.1).

Sponsored by Ada-Europe