International Standard ISO/IEC 8652:2012

Programming languages -- Ada
TECHNICAL CORRIGENDUM 1 (Draft 1)

Langages de programmation -- Ada
RECTIFICATIF TECHNIQUE 1

Technical Corrigendum 1 to International Standard ISO/IEC 8652:2012 was prepared by AXE Consultants.

© 2015, AXE Consultants. All Rights Reserved.

This document may be copied, in whole or in part, in any form or by any means, as is, or with alterations, provided that (1) alterations are clearly marked as alterations and (2) this copyright notice is included unmodified in any copy. Any other use or distribution of this document is prohibited without the prior express permission of AXE.

You use this document on the condition that you indemnify and hold harmless AXE, its board, officers, agents, and employees, from any and all liability or damages to yourself or your hardware or software, or third parties, including attorneys' fees, court costs, and other related costs and expenses, arising out of your use of this document irrespective of the cause of said liability.

AXE MAKES THIS DOCUMENT AVAILABLE ON AN "AS IS" BASIS AND MAKES NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE ACCURACY, CAPABILITY, EFFICIENCY MERCHANTABILITY, OR FUNCTIONING OF THIS DOCUMENT. IN NO EVENT WILL AXE BE LIABLE FOR ANY GENERAL, CONSEQUENTIAL, INDIRECT, INCIDENTAL, EXEMPLARY, OR SPECIAL DAMAGES, EVEN IF AXE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Introduction

This corrigendum contains corrections to the Ada 2012 standard [ISO/IEC 8652:2012].

The corrigendum is organized by clauses corresponding to those in the Ada 2012 standard. These clauses include wording changes to the Ada 2012 standard. Subclause headings are given for each subclause that contains a wording change. Other subclauses are omitted. For each change, a reference to the defect report(s) that prompted the wording change is included in the form [8652/0000]. The defect reports have been developed by the ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group to address specific questions about the Ada standard. Refer to the defect reports for details on the issues.

For each change, an anchor paragraph from the original Ada 2012 standard is given. New or revised text and instructions are given with each change. The anchor paragraph can be replaced or deleted, or text can be inserted before or after it. When a heading immediately precedes the anchor paragraph, any text inserted before the paragraph is intended to appear under the heading.

Typographical conventions:

Instructions about the text changes are in this font. The actual text changes are in the same fonts as the Ada 2012 standard - this font for text, this font for syntax, and this font for Ada source code. Note that this document is designed to be viewed with the default font as some Roman font, similar to the Ada 2012 standard. This may require some adjustments to your browser.




Introduction

Replace paragraph 57.15: [8652/0117]

by:

Replace paragraph 57.16: [8652/0117]

by:




Section 1: General


1.1 Scope

Replace paragraph 3: [8652/0118]

by:

1.1.2 Structure

Replace paragraph 24: [8652/0118]

by:




Section 2: Lexical Elements


No changes in this clause.




Section 3: Declarations and Types


3.2.4 Subtype Predicates

Replace paragraph 4: [8652/0119; 8652/0120]

by:

Delete paragraph 6: [8652/0119]

Replace paragraph 12: [8652/0120]

by:

Insert after paragraph 14: [8652/0121]

the new paragraphs:

Replace paragraph 17: [8652/0122]

by:

Replace paragraph 20: [8652/0120]

by:

Insert before paragraph 30: [8652/0119]

the new paragraphs:

Replace paragraph 31: [8652/0121; 8652/0119]

by:

Delete paragraph 32: [8652/0119]

Delete paragraph 33: [8652/0119]

Insert after paragraph 35: [8652/0121; 8652/0119]

the new paragraphs:

3.5 Scalar Types

Insert after paragraph 55: [8652/0123]

the new paragraphs:

3.5.5 Operations of Discrete Types

Replace paragraph 7.1: [8652/0119]

by:

Replace paragraph 7.2: [8652/0119]

by:

Replace paragraph 7.3: [8652/0119]

by:

3.5.9 Fixed Point Types

Replace paragraph 5: [8652/0124]

by:

Insert after paragraph 6: [8652/0125]

the new paragraph:

Replace paragraph 18: [8652/0124]

by:

Replace paragraph 19: [8652/0124]

by:

3.8.1 Variant Parts and Discrete Choices

Replace paragraph 10.1: [8652/0119]

by:

Replace paragraph 15: [8652/0119]

by:

3.9 Tagged Types and Type Extensions

Replace paragraph 12.4: [8652/0118]

by:

3.9.3 Abstract Types and Subprograms

Replace paragraph 6: [8652/0126]

by:

3.10 Access Types

Replace paragraph 22: [8652/0118]

by:

3.10.1 Incomplete Type Declarations

Replace paragraph 2.1: [8652/0127]

by:

3.10.2 Operations of Access Types

Replace paragraph 7: [8652/0128; 8652/0129]

by:

Replace paragraph 10: [8652/0130]

by:

Insert after paragraph 13.1: [8652/0131]

the new paragraph:

Replace paragraph 19.2: [8652/0129; 8652/0132]

by:

Replace paragraph 19.3: [8652/0129; 8652/0132]

by:

Replace paragraph 27.2: [8652/0133]

by:




Section 4: Names and Expressions


4.1.4 Attributes

Replace paragraph 9: [8652/0134; 8652/0125]

by:

4.1.5 User-defined References

Insert before paragraph 6: [8652/0135]

the new paragraph:

4.1.6 User-defined Indexing

Replace paragraph 4: [8652/0136]

by:

Insert after paragraph 5: [8652/0135]

the new paragraph:

Delete paragraph 6: [8652/0135]

Delete paragraph 7: [8652/0135]

Delete paragraph 8: [8652/0135]

Delete paragraph 9: [8652/0135]

Insert after paragraph 17: [8652/0136]

the new paragraph:

4.3.1 Record Aggregates

Replace paragraph 16: [8652/0137]

by:

4.3.3 Array Aggregates

Replace paragraph 11: [8652/0132]

by:

Replace paragraph 23.1: [8652/0138]

by:

4.4 Expressions

Replace paragraph 3: [8652/0139; 8652/0122]

by:

Replace paragraph 3.2: [8652/0122]

by:

4.5.2 Relational Operators and Membership Tests

Replace paragraph 3.1: [8652/0122]

by:

Replace paragraph 4: [8652/0122]

by:

Replace paragraph 4.1: [8652/0122]

by:

Replace paragraph 9.8: [8652/0140]

by:

Replace paragraph 27: [8652/0122]

by:

Replace paragraph 27.1: [8652/0122]

by:

Replace paragraph 28.1: [8652/0122]

by:

Replace paragraph 28.2: [8652/0122]

by:

Replace paragraph 29: [8652/0122; 8652/0119]

by:

Replace paragraph 30: [8652/0122; 8652/0119]

by:

Replace paragraph 30.1: [8652/0122]

by:

Replace paragraph 30.2: [8652/0122]

by:

Replace paragraph 30.3: [8652/0122]

by:

4.5.8 Quantified Expressions

Insert before paragraph 1: [8652/0141]

the new paragraph:

Replace paragraph 6: [8652/0141]

by:

Replace paragraph 8: [8652/0141]

by:

Replace paragraph 9: [8652/0141]

by:

4.6 Type Conversions

Replace paragraph 24.17: [8652/0130]

by:

Replace paragraph 24.21: [8652/0130]

by:

Replace paragraph 51: [8652/0119]

by:

Replace paragraph 56: [8652/0142]

by:

Replace paragraph 57: [8652/0143]

by:

Insert after paragraph 58: [8652/0130]

the new paragraphs:

4.7 Qualified Expressions

Replace paragraph 4: [8652/0144]

by:

4.9 Static Expressions and Static Subtypes

Replace paragraph 11: [8652/0122]

by:

Replace paragraph 32.6: [8652/0122]

by:

4.9.1 Statically Matching Constraints and Subtypes

Replace paragraph 10: [8652/0119]

by:




Section 5: Statements


5.2 Assignment Statements

Replace paragraph 20: [8652/0118]

by:

5.4 Case Statements

Replace paragraph 7: [8652/0119]

by:

5.5 Loop Statements

Replace paragraph 9: [8652/0119]

by:

5.5.1 User-defined Iterator Types

Insert after paragraph 11: [8652/0135]

the new paragraph:

5.5.2 Generalized Loop Iteration

Replace paragraph 5: [8652/0145]

by:

Insert after paragraph 6: [8652/0146; 8652/0147]

the new paragraphs:

Insert after paragraph 13: [8652/0147]

the new paragraph:




Section 6: Subprograms


6.1 Subprogram Declarations

Replace paragraph 39: [8652/0118]

by:

6.1.1 Preconditions and Postconditions

Replace paragraph 1: [8652/0148]

by:

Replace paragraph 7: [8652/0149; 8652/0125]

by:

Insert after paragraph 17: [8652/0150]

the new paragraphs:

Replace paragraph 18: [8652/0149; 8652/0150]

by:

Insert after paragraph 22: [8652/0134]

the new paragraph:

Replace paragraph 26: [8652/0134; 8652/0125]

by:

Insert after paragraph 35: [8652/0134]

the new paragraph:

Replace paragraph 37: [8652/0149; 8652/0125]

by:

Replace paragraph 38: [8652/0149; 8652/0125]

by:

6.2 Formal Parameter Modes

Replace paragraph 10: [8652/0130]

by:

Replace paragraph 13: [8652/0118]

by:

6.3.1 Conformance Rules

Replace paragraph 10.1: [8652/0151]

by:

Replace paragraph 12: [8652/0151; 8652/0125]

by:

Replace paragraph 13: [8652/0151; 8652/0125]

by:

Insert after paragraph 20: [8652/0152]

the new paragraph:

Replace paragraph 21: [8652/0152]

by:

6.4.1 Parameter Associations

Insert after paragraph 5: [8652/0142]

the new paragraph:

Insert after paragraph 6.2: [8652/0133]

the new paragraph:

Replace paragraph 13.1: [8652/0142; 8652/0125]

by:

6.5 Return Statements

Replace paragraph 8: [8652/0153]

by:

6.8 Expression Functions

Replace paragraph 2: [8652/0132]

by:

Replace paragraph 3: [8652/0132]

by:

Replace paragraph 5: [8652/0132]

by:

Replace paragraph 6: [8652/0132]

by:

Replace paragraph 7: [8652/0132]

by:




Section 7: Packages


7.3.1 Private Operations

Replace paragraph 5.2: [8652/0154]

by:

7.3.2 Type Invariants

Replace paragraph 1: [8652/0155]

by:

Replace paragraph 3: [8652/0155; 8652/0156]

by:

Replace paragraph 5: [8652/0156; 8652/0125]

by:

Insert after paragraph 6: [8652/0157]

the new paragraph:

Replace paragraph 9: [8652/0156]

by:

Replace paragraph 10: [8652/0158; 8652/0159]

by:

Replace paragraph 15: [8652/0160]

by:

Replace paragraph 17: [8652/0157]

by:

Delete paragraph 18: [8652/0157]

Replace paragraph 19: [8652/0157; 8652/0161; 8652/0162]

by:

Insert after paragraph 20: [8652/0157]

the new paragraph:

Replace paragraph 21: [8652/0126; 8652/0125]

by:

Insert after paragraph 22: [8652/0156; 8652/0125]

the new paragraph:

7.5 Limited Types

Replace paragraph 2.9: [8652/0132]

by:




Section 8: Visibility Rules


8.1 Declarative Region

Insert after paragraph 2: [8652/0163]

the new paragraph:

8.2 Scope of Declarations

Insert after paragraph 11: [8652/0164]

the new paragraph:

8.6 The Context of Overload Resolution

Replace paragraph 9: [8652/0165]

by:

Insert after paragraph 17: [8652/0166]

the new paragraph:

Replace paragraph 27.1: [8652/0122]

by:




Section 9: Tasks and Synchronization


9.3 Task Dependence - Termination of Tasks

Replace paragraph 2: [8652/0131]

by:

9.4 Protected Units and Protected Objects

Replace paragraph 8: [8652/0167]

by:

9.5.1 Protected Subprograms and Protected Actions

Insert after paragraph 2: [8652/0168]

the new paragraphs:

Replace paragraph 4: [8652/0168]

by:

Replace paragraph 5: [8652/0168]

by:

Replace paragraph 7: [8652/0168]

by:

9.5.3 Entry Calls

Replace paragraph 15: [8652/0168]

by:

Replace paragraph 23: [8652/0168]

by:

9.5.4 Requeue Statements

Insert after paragraph 5: [8652/0169]

the new paragraphs:

Replace paragraph 7: [8652/0169]

by:

Replace paragraph 12: [8652/0169]

by:

9.7.4 Asynchronous Transfer of Control

Insert after paragraph 13: [8652/0170]

the new paragraph:




Section 10: Program Structure and Compilation Issues


10.2.1 Elaboration Control

Insert after paragraph 17: [8652/0171]

the new paragraph:




Section 11: Exceptions


11.2 Exception Handlers

Insert before paragraph 6: [8652/0139]

the new paragraph:

11.3 Raise Statements and Raise Expressions

Insert after paragraph 2: [8652/0139; 8652/0124]

the new paragraphs:

Replace paragraph 3: [8652/0139; 8652/0125]

by:

Replace paragraph 3.1: [8652/0139; 8652/0124; 8652/0125]

by:

Replace paragraph 4: [8652/0139; 8652/0172; 8652/0124; 8652/0000]

by:

11.4.1 The Package Exceptions

Replace paragraph 10.1: [8652/0139; 8652/0124]

by:




Section 12: Generic Units


12.5.1 Formal Private and Derived Types

Replace paragraph 5.1: [8652/0173]

by:

Insert after paragraph 15: [8652/0133]

the new paragraph:




Section 13: Representation Issues


13.1 Operational and Representation Aspects

Replace paragraph 9: [8652/0174]

by:

Replace paragraph 9.1: [8652/0174]

by:

Replace paragraph 10: [8652/0175]

by:

13.1.1 Aspect Specifications

Replace paragraph 18: [8652/0176; 8652/0135]

by:

Replace paragraph 28: [8652/0177]

by:

Replace paragraph 32: [8652/0178]

by:

Delete paragraph 34: [8652/0135]

13.2 Packed Types

Delete paragraph 6.1: [8652/0179]

Insert after paragraph 7: [8652/0179]

the new paragraph:

Replace paragraph 8: [8652/0179]

by:

Replace paragraph 9: [8652/0179]

by:

13.3 Representation Attributes

Replace paragraph 73.4: [8652/0180]

by:

13.9.2 The Valid Attribute

Replace paragraph 3: [8652/0119]

by:

Replace paragraph 12: [8652/0119]

by:

13.11 Storage Management

Replace paragraph 18: [8652/0181]

by:

13.11.2 Unchecked Storage Deallocation

Replace paragraph 10: [8652/0182]

by:

Insert after paragraph 15: [8652/0182]

the new paragraphs:

13.11.3 Default Storage Pools

Replace paragraph 1: [8652/0164]

by:

Replace paragraph 3.1: [8652/0164]

by:

Insert after paragraph 4: [8652/0164]

the new paragraph:

Replace paragraph 4.1: [8652/0164]

by:

Replace paragraph 5: [8652/0164; 8652/0183]

by:

Replace paragraph 6.2: [8652/0164]

by:

Replace paragraph 6.3: [8652/0164]

by:

13.11.4 Storage Subpools

Replace paragraph 20: [8652/0184]

by:

Insert after paragraph 31: [8652/0185]

the new paragraph:

13.11.5 Subpool Reclamation

Insert after paragraph 7: [8652/0182]

the new paragraph:

13.11.6 Storage Subpool Example

Replace paragraph 11: [8652/0186]

by:

Replace paragraph 28: [8652/0126]

by:

13.13.2 Stream-Oriented Attributes

Replace paragraph 38: [8652/0177; 8652/0187]

by:

Replace paragraph 49: [8652/0188]

by:

13.14 Freezing Rules

Replace paragraph 3: [8652/0189]

by:

Insert after paragraph 5: [8652/0189; 8652/0190]

the new paragraphs:

Replace paragraph 5.1: [8652/0132]

by:

Replace paragraph 5.2: [8652/0132]

by:

Replace paragraph 8: [8652/0132]

by:

Replace paragraph 10.1: [8652/0132]

by:

Replace paragraph 10.2: [8652/0132]

by:

Replace paragraph 10.3: [8652/0132]

by:




Annex A: Predefined Language Environment


Replace paragraph 3: [8652/0191; 8652/0192; 8652/0125]

by:

A.4.11 String Encoding

Replace paragraph 54: [8652/0193]

by:

Replace paragraph 55: [8652/0193]

by:

A.8.1 The Generic Package Sequential_IO

Insert after paragraph 10: [8652/0194]

the new paragraph:

A.8.2 File Management

Insert after paragraph 28: [8652/0194]

the new paragraphs:

A.8.4 The Generic Package Direct_IO

Insert after paragraph 10: [8652/0194]

the new paragraph:

A.10.3 Default Input, Output, and Error Files

Replace paragraph 21: [8652/0194]

by:

A.12.1 The Package Streams.Stream_IO

Replace paragraph 5: [8652/0195]

by:

Replace paragraph 28: [8652/0194]

by:

Delete paragraph 28.6: [8652/0194]

A.18 Containers

Insert after paragraph 5: [8652/0196]

the new paragraphs:

A.18.2 The Generic Package Containers.Vectors

Replace paragraph 97.1: [8652/0197]

by:

Replace paragraph 168: [8652/0126]

by:

A.18.3 The Generic Package Containers.Doubly_Linked_Lists

Replace paragraph 69.1: [8652/0197]

by:

A.18.4 Maps

Replace paragraph 15.1: [8652/0197]

by:

A.18.7 Sets

Replace paragraph 14.1: [8652/0197]

by:

A.18.10 The Generic Package Containers.Multiway_Trees

Replace paragraph 2: [8652/0198; 8652/0125]

by:

Replace paragraph 3: [8652/0198]

by:

Replace paragraph 90: [8652/0197]

by:

Replace paragraph 153: [8652/0199]

by:

Replace paragraph 155: [8652/0199]

by:

Replace paragraph 157: [8652/0199]

by:

Replace paragraph 159: [8652/0199]

by:

A.18.11 The Generic Package Containers.Indefinite_Vectors

Insert after paragraph 8: [8652/0196]

the new paragraph:

A.18.12 The Generic Package Containers.Indefinite_Doubly_Linked_Lists

Insert after paragraph 7: [8652/0196]

the new paragraph:

A.18.13 The Generic Package Containers.Indefinite_Hashed_Maps

Insert after paragraph 8: [8652/0196]

the new paragraph:

A.18.14 The Generic Package Containers.Indefinite_Ordered_Maps

Insert after paragraph 8: [8652/0196]

the new paragraph:

A.18.15 The Generic Package Containers.Indefinite_Hashed_Sets

Insert after paragraph 4: [8652/0196]

the new paragraph:

A.18.16 The Generic Package Containers.Indefinite_Ordered_Sets

Insert after paragraph 4: [8652/0196]

the new paragraph:

A.18.17 The Generic Package Containers.Indefinite_Multiway_Trees

Insert after paragraph 7: [8652/0196]

the new paragraph:

A.18.18 The Generic Package Containers.Indefinite_Holders

Replace paragraph 35: [8652/0197]

by:

Replace paragraph 39: [8652/0196]

by:

Replace paragraph 47: [8652/0196]

by:

A.18.25 The Generic Package Containers.Bounded_Multiway_Trees

Replace paragraph 10: [8652/0118]

by:

A.18.26 Array Sorting

Replace paragraph 9.2: [8652/0118]

by:

A.18.32 Example of Container Use

Replace paragraph 29: [8652/0126]

by:

Replace paragraph 31: [8652/0126]

by:

A.19 The Package Locales

Replace paragraph 4: [8652/0200]

by:




Annex B: Interface to Other Languages


B.1 Interfacing Aspects

Insert after paragraph 14: [8652/0201]

the new paragraph:

Replace paragraph 41: [8652/0201]

by:

Replace paragraph 50: [8652/0126]

by:

B.3 Interfacing with C and C++

Replace paragraph 1: [8652/0202]

by:

Insert after paragraph 60.15: [8652/0202]

the new paragraph:

Insert after paragraph 65: [8652/0201]

the new paragraph:

Replace paragraph 75: [8652/0202]

by:




Annex C: Systems Programming


C.5 Aspect Discard_Names

Replace the title: [8652/0203]

by:

Replace paragraph 1: [8652/0203]

by:

Replace paragraph 5: [8652/0203]

by:

Replace paragraph 7: [8652/0203]

by:

Replace paragraph 8: [8652/0203]

by:

C.6 Shared Variable Control

Replace paragraph 8.1: [8652/0179]

by:

Replace paragraph 10: [8652/0179]

by:

Replace paragraph 11: [8652/0179]

by:

Delete paragraph 21: [8652/0179]

Insert after paragraph 24: [8652/0179]

the new paragraph:




Annex D: Real-Time Systems


D.1 Task Priorities

Replace paragraph 17: [8652/0204]

by:

D.3 Priority Ceiling Locking

Replace paragraph 10: [8652/0205]

by:

D.7 Tasking Restrictions

Insert after paragraph 10: [8652/0206]

the new paragraph:

Insert after paragraph 10.8: [8652/0207]

the new paragraph:

D.13 The Ravenscar Profile

Replace paragraph 6: [8652/0206; 8652/0208]

by:

Delete paragraph 8: [8652/0206]

Insert after paragraph 10: [8652/0206]

the new paragraphs:

D.16 Multiprocessor Implementation

Replace paragraph 9: [8652/0204]

by:

D.16.1 Multiprocessor Dispatching Domains

Replace paragraph 7: [8652/0209]

by:

Replace paragraph 9: [8652/0209]

by:

Replace paragraph 16: [8652/0210]

by:

Replace paragraph 20: [8652/0209]

by:

Replace paragraph 22: [8652/0210]

by:

Replace paragraph 23: [8652/0209]

by:

Replace paragraph 24: [8652/0209]

by:

Replace paragraph 25: [8652/0210]

by:

Replace paragraph 26: [8652/0209]

by:

Replace paragraph 27: [8652/0210]

by:

Replace paragraph 29: [8652/0210]

by:

Insert after paragraph 30: [8652/0211]

the new paragraph:




Annex E: Distributed Systems


E.2.1 Shared Passive Library Units

Replace paragraph 7: [8652/0212]

by:

E.2.2 Remote Types Library Units

Replace paragraph 16: [8652/0213]

by:

Replace paragraph 17: [8652/0171; 8652/0214]

by:

E.2.3 Remote Call Interface Library Units

Replace paragraph 19: [8652/0215]

by:




Annex F: Information Systems


No changes in this clause.




Annex G: Numerics


No changes in this clause.




Annex H: Safety and Security


No changes in this clause.




Annex J: Obsolescent Features


J.3 Reduced Accuracy Subtypes

Replace paragraph 2: [8652/0124]

by:

Replace paragraph 3: [8652/0124]

by:

Replace paragraph 4: [8652/0124]

by:

Replace paragraph 7: [8652/0124]

by:

Replace paragraph 8: [8652/0124]

by:

Replace paragraph 9: [8652/0124]

by:

Replace paragraph 10: [8652/0124]

by:




Annex M: Implementation-Defined Characteristics


No changes in this clause.




Annex N: Glossary


N Glossary

Replace paragraph 21.2: [8652/0126]

by:

Insert after paragraph 41: [8652/0126]

the new paragraph:




Annex Q: Language-Defined Entities


No changes in this clause.