- Extensions to Ada 83
- 31.a
- A pragma Suppress is allowed as a configuration pragma. A pragma Suppress without a name is allowed in a package_specification.
- 31.b
- Additional check names are added. We allow implementations to define their own checks.
- Wording Changes From Ada 83
- 31.c
- We define the checks in a distributed manner. Therefore, the long list of what checks apply to what is merely a NOTE.
- 31.d
- We have removed the detailed rules about what is allowed in a pragma Suppress, and allow implementations to invent their own. The RM83 rules weren't quite right, and such a change is necessary anyway in the presence of implementation-defined checks.
- 31.e
- We make it clear that the difference between a Range_Check and an Overflow_Check is fuzzy. This was true in Ada 83, given RM83-11.6, but it was not clear. We considered removing Overflow_Check from the language or making it obsolescent, just as we did for Numeric_Error. However, we kept it for upward compatibility, and because it may be useful on machines where range checking costs more than overflow checking, but overflow checking still costs something. Different compilers will suppress different checks when asked to suppress Overflow_Check -the non-uniformity in this case is not harmful, and removing it would have a serious impact on optimizers.
- 31.f
- Under Access_Check, dereferences cover the cases of selected_component, indexed_component, slice, and
attribute that are listed in RM83, as well as the new explicit_dereference, which was included in selected_component in RM83.