Rationale for Ada 2005
9.2 Retrospective changes to Ada 95
In the course of the development of Ada 2005, a number
of small changes were deemed to apply also to Ada 95 and thus were classified
as binding interpretations rather than amendments. Accordingly they are
not (generally) covered by the changes discussed in the previous chapters.
Note however, that
AI-241
on exceptions was discussed in chapter
6 even
though it was eventually classified as a binding interpretation. Moreover,
AI-329
was split and the part stating that Raise_Exception never returns (also
applying to Ada 95) was formed into
AI-446.
AI-438
adds subprograms
Read_Exception_Occurrence
and
Write_Exception_Occurence plus corresponding
attribute definition clauses for streams to the package
Ada.Exceptions
thus
procedure Read_Exception_Occurrence
(Stream: not null access Root_Stream_Type'Class; Item: out Exception_Occurrence);
procedure Write_Exception_Occurrence
(Stream: not null access Root_Stream_Type'Class; Item: in Exception_Occurrence);
for Exception_Occurrence'Read use Read_Exception_Occurrence;
for Exception_Occurrence'Write use Write_Exception_Occurrence;
These attributes enable the type Exception_Occurrence
to be streamed. Note that this is a limited type and so streaming is
only possible if predefined. A survey of other existing and new predefined
limited types showed that no others needed to be treated in this way.
No other retrospective
AIs actually affect the specification of any units but typically add
or correct a number of rules. Of these some are of special interest because
they introduce minor incompatibilities or inconsistencies. They are
Inheritance of stream attributes for type extensions
(108 was actually in the 2001 Corrigendum)
Controlling bit ordering
Streams (this covers many issues regarding streams)
Subprograms withing private compilation units
Aliased current instance for limited types
Accessibility rules and generics
Lower bound of Ada.Strings.Bounded_Slice
Stream attributes for limited types in Annex E
Surprise behavior of Update
Conversions between arrays of a by-reference type
Pragmas Attach_Handler and Interrupt_Handler
Rounding of real static expressions
Tag read by T'Class'Input
Truncation of stream files by Close and Reset
Class-wide extension aggregate expressions
Primitive subprograms are frozen with a tagged type
Types that need finalization
Naming of generic child packages
The bounds of Ada.Exceptions.Exception_Name
Preelaboration checks and formal objects
Storage pools for access-to-subprogram types
Raise_Exception for Null_Id
These are briefly discussed in the following subsections.
© 2005, 2006 John Barnes Informatics.
Sponsored in part by: