Rationale for Ada 2005

John Barnes
Table of Contents   Index   References   Search   Previous   Next 

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
108
Inheritance of stream attributes for type extensions
(108 was actually in the 2001 Corrigendum)
133
Controlling bit ordering
195
Streams (this covers many issues regarding streams)
220
Subprograms withing private compilation units
225
Aliased current instance for limited types
229
Accessibility rules and generics
238
Lower bound of Ada.Strings.Bounded_Slice
240
Stream attributes for limited types in Annex E
242
Surprise behavior of Update
246
Conversions between arrays of a by-reference type
253
Pragmas Attach_Handler and Interrupt_Handler
268
Rounding of real static expressions
279
Tag read by T'Class'Input
283
Truncation of stream files by Close and Reset
306
Class-wide extension aggregate expressions
341
Primitive subprograms are frozen with a tagged type
360
Types that need finalization
377
Naming of generic child packages
378
The bounds of Ada.Exceptions.Exception_Name
403
Preelaboration checks and formal objects
435
Storage pools for access-to-subprogram types
446
Raise_Exception for Null_Id 
These are briefly discussed in the following subsections.

Table of Contents   Index   References   Search   Previous   Next 
© 2005, 2006 John Barnes Informatics.
Sponsored in part by:
The Ada Resource Association and its member companies: ARA Members AdaCore Polyspace Technologies Praxis Critical Systems IBM Rational Sofcheck and   Ada-Europe:
Ada-Europe