Version 1.5 of ai12s/cor15con.txt

Unformatted version of ai12s/cor15con.txt version 1.5
Other versions for file ai12s/cor15con.txt

!comment This file contains Corrigendum conflicts for Amendment 3 (Ada 202x).
!comment Conflicts occur when multiple issues change the same
!comment paragraph of the standard.
!comment This file (and the reading of it in the program) would need to
!comment be changed for a new Corrigendum or Amendment.
!comment The paragraphs must be in sorted order!!
!corrigendum 3.2.4(4/3)
!AI-0071-1
!AI-0099-1
@drepl @xbullet<For a (first) subtype defined by a derived type declaration, the predicates of the parent subtype and the progenitor subtypes apply.> @dby @xbullet<For a (first) subtype defined by a type declaration, any predicates of parent or progenitor subtypes apply.>
!corrigendum 3.2.4(31/3)
!AI-0054-2
!AI-0071-1
@drepl @xindent<On every subtype conversion, the predicate of the target subtype is evaluated, and a check is performed that the predicate is True. This includes all parameter passing, except for certain parameters passed by reference, which are covered by the following rule: After normal completion and leaving of a subprogram, for each @b<in out> or @b<out> parameter that is passed by reference, the predicate of the subtype of the actual is evaluated, and a check is performed that the predicate is True. For an object created by an @fa<object_declaration> with no explicit initialization @fa<expression>, or by an uninitialized @fa<allocator>, if any subcomponents have @fa<default_expression>s, the predicate of the nominal subtype of the created object is evaluated, and a check is performed that the predicate is True. Assertions.Assertion_Error is raised if any of these checks fail.> @dby @xindent<On every subtype conversion, a check is performed that the operand satisfies the predicates of the target subtype. This includes all parameter passing, except for certain parameters passed by reference, which are covered by the following rule: After normal completion and leaving of a subprogram, for each @b<in out> or @b<out> parameter that is passed by reference, a check is performed that the value of the parameter satisfies the predicates of the subtype of the actual. For an object created by an @fa<object_declaration> with no explicit initialization @fa<expression>, or by an uninitialized @fa<allocator>, if any subcomponents have @fa<default_expression>s, a check is performed that the value of the created object satisfies the predicates of the nominal subtype.>
@xindent<If any of the predicate checks fail, Assertion_Error is raised, unless the subtype whose directly-specified predicate aspect evaluated to False also has a directly-specified Predicate_Failure aspect. In that case, the specified Predicate_Failure @fa<expression> is evaluated; if the evaluation of the Predicate_Failure @fa<expression> propagates an exception occurrence, then this occurrence is propagated for the failure of the predicate check; otherwise, Assertion_Error is raised, with an associated message string defined by the value of the Predicate_Failure @fa<expression>. In the absence of such a Predicate_Failure aspect, an implementation-defined message string is associated with the Assertion_Error exception.>
!corrigendum 3.2.4(35/3)
!AI-0054-2
!AI-0071-1
@dinsa @xindent<@s9<6 A Static_Predicate, like a constraint, always remains True for all objects of the subtype, except in the case of uninitialized variables and other invalid values. A Dynamic_Predicate, on the other hand, is checked as specified above, but can become False at other times. For example, the predicate of a record subtype is not checked when a subcomponent is modified.>> @dinss @xindent<@s9<7 No predicates apply to the base subtype of a scalar type; every value of a scalar type @i<T> is considered to satisfy the predicates of @i<T>'Base.>>
@xindent<@s9<8 Predicate_Failure @fa<expression>s are never evaluated during the evaluation of a membership test (see 4.5.2) or Valid attribute (see 13.9.2).>>
@xindent<@s9<9 A Predicate_Failure @fa<expression> can be a @fa<raise_expression> (see 11.3).>>
@s8<@i<Examples>>
@xcode<@b<subtype> Basic_Letter @b<is> Character -- @ft<@I<See A.3.2 for "basic letter".>>
@b<with> Static_Predicate =@> Basic_Letter @b<in> 'A'..'Z' | 'a'..'z' | '@unicode<198>' | '@unicode<230>' | '@unicode<208>' | '@unicode<240>' | '@unicode<222>' | '@unicode<254>' | '@unicode<223>';>
@xcode<@b<subtype> Even_Integer @b<is> Integer
@b<with> Dynamic_Predicate =@> Even_Integer @b<mod> 2 = 0,
Predicate_Failure =@> "Even_Integer must be a multiple of 2";>
@i<Text_IO (see A.10.1) could have used predicates to describe some common exceptional conditions as follows:>
@xcode<@b<with> Ada.IO_Exceptions; @b<package> Ada.Text_IO @b<is>>
@xcode< @b<type> File_Type @b<is limited private>;>
@xcode< @b<subtype> Open_File_Type @b<is> File_Type
@b<with> Dynamic_Predicate =@> Is_Open (Open_File_Type),
Predicate_Failure =@> @b<raise> Status_Error @b<with> "File not open";
@b<subtype> Input_File_Type @b<is> Open_File_Type
@b<with> Dynamic_Predicate =@> Mode (Input_File_Type) = In_File,
Predicate_Failure =@> @b<raise> Mode_Error @b<with> "Cannot read file: " &
Name (Input_File_Type);
@b<subtype> Output_File_Type @b<is> Open_File_Type
@b<with> Dynamic_Predicate =@> Mode (Output_File_Type) /= In_File,
Predicate_Failure =@> @b<raise> Mode_Error @b<with> "Cannot write file: " &
Name (Output_File_Type);>
@xcode< ...>
@xcode< @b<function> Mode (File : @b<in> Open_File_Type) @b<return> File_Mode;
@b<function> Name (File : @b<in> Open_File_Type) @b<return> String; @b<function> Form (File : @b<in> Open_File_Type) @b<return> String;>
@xcode< ...>
@xcode< @b<procedure> Get (File : @b<in> Input_File_Type; Item : @b<out> Character);>
@xcode< @b<procedure> Put (File : @b<in> Output_File_Type; Item : @b<in> Character);>
@xcode< ...>
@xcode< -- @ft<@I<Similarly for all of the other input and output subprograms.>>>
!corrigendum 3.10.2(7/3)
!AI-0067-1
!AI-0089-1
@drepl @xbullet<An entity or view defined by a declaration and created as part of its elaboration has the same accessibility level as the innermost master of the declaration except in the cases of renaming and derived access types described below. Other than for an explicitly aliased parameter, a formal parameter of a callable entity has the same accessibility level as the master representing the invocation of the entity.> @dby @xbullet<An entity or view defined by a declaration and created as part of its elaboration has the same accessibility level as the innermost master of the declaration except in the cases of renaming and derived access types described below. Other than for an explicitly aliased parameter of a function or generic function, a formal parameter of a callable entity has the same accessibility level as the master representing the invocation of the entity.>
!corrigendum 4.4(3/3)
!AI-0022-1
!AI-0039-1
@drepl @xcode<@fa<relation ::=
simple_expression [relational_operator simple_expression] | simple_expression [>@ft<@b<not>>@fa<] >@ft<@b<in>>@fa< membership_choice_list>>
@dby @xcode<@fa<relation ::=
simple_expression [relational_operator simple_expression] | @i<tested_>simple_expression [>@ft<@b<not>>@fa<] >@ft<@b<in>>@fa< membership_choice_list | raise_expression>>
!corrigendum 4.5.2(29/3)
!AI-0039-1
!AI-0071-1
@drepl @xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is scalar, the value of the @fa<simple_expression> belongs to the range of the named subtype, and the predicate of the named subtype evaluates to True.> @dby @xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is scalar, the value of the @i<tested_>@fa<simple_expression> belongs to the range of the named subtype, and the value satisfies the predicates of the named subtype.>
!corrigendum 4.5.2(30/3)
!AI-0039-1
!AI-0071-1
@drepl @xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is not scalar, the value of the @fa<simple_expression> satisfies any constraints of the named subtype, the predicate of the named subtype evaluates to True, and:> @dby @xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is not scalar, the value of the @i<tested_>@fa<simple_expression> satisfies any constraints of the named subtype, the value satisfies the predicates of the named subtype, and:>
!corrigendum 5.5.2(6/3)
!AI-0047-1
!AI-0120-1
@dinsa In a container element iterator whose @i<iterable_>@fa<name> has type @i<T>, if the @i<iterable_>@fa<name> denotes a constant or the Variable_Indexing aspect is not specified for @i<T>, then the Constant_Indexing aspect shall be specified for @i<T>. @dinss The @i<iterator_>@fa<name> or @i<iterable_>@fa<name> of an @fa<iterator_specification> shall not denote a subcomponent that depends on discriminants of an object whose nominal subtype is unconstrained, unless the object is known to be constrained.
A container element iterator is illegal if the call of the default iterator function that creates the loop iterator (see below) is illegal.
A generalized iterator is illegal if the iteration cursor subtype of the @i<iterator_>@fa<name> is a limited type at the point of the generalized iterator. A container element iterator is illegal if the default cursor subtype of the type of the @i<iterable_>@fa<name> is a limited type at the point of the container element iterator.
!corrigendum 7.3.2(10/3)
!AI-0049-1
!AI-0133-1
@drepl @xbullet<After successful default initialization of an object of type @i<T>, the check is performed on the new object;> @dby @xbullet<After successful initialization of an object of type @i<T> by default (see 3.3.1), the check is performed on the new object unless the partial view of @i<T> has unknown discriminants;>
@xbullet<After successful explicit initialization of the completion of a deferred constant with a part of type @i<T>, if the completion is inside the immediate scope of the full view of @i<T>, and the deferred constant is visible outside the immediate scope of @i<T>, the check is performed on the part(s) of type @i<T>;>
!corrigendum 7.3.2(19/3)
!AI-0042-1
!AI-0044-1
@drepl @xinbull<has a result with a part of type @i<T>, or one or more parameters with a part of type @i<T>, or an access to variable parameter whose designated type has a part of type @i<T>.> @dby @xinbull<and either:>
@xi2bull<has a result with a part of type @i<T>, or>
@xi2bull<has one or more @b<out> or @b<in out> parameters with a part of type @i<T>, or>
@xi2bull<has an access-to-object parameter whose designated type has a part of type @i<T>, or>
@xi2bull<is a procedure or entry that has an @b<in> parameter with a part of type @i<T>,>
@xinbull<and either:>
@xi2bull<@i<T> is a private type or a private extension and the subprogram or entry is visible outside the immediate scope of type @i<T> or overrides an inherited operation that is visible outside the immediate scope of @i<T>, or>
@xi2bull<@i<T> is a record extension, and the subprogram or entry is a primitive operation visible outside the immediate scope of type @i<T> or overrides an inherited operation that is visible outside the immediate scope of @i<T>.>
!corrigendum 11.3(4/2)
!AI-0022-1
!AI-0062-1
@drepl To @i<raise an exception> is to raise a new occurrence of that exception, as explained in 11.4. For the execution of a @fa<raise_statement> with an @i<exception_>@fa<name>, the named exception is raised. If a @i<string_>@fa<expression> is present, the @fa<expression> is evaluated and its value is associated with the exception occurrence. For the execution of a re-raise statement, the exception occurrence that caused transfer of control to the innermost enclosing handler is raised again. @dby To @i<raise an exception> is to raise a new occurrence of that exception, as explained in 11.4. For the execution of a @fa<raise_statement> with an @i<exception_>@fa<name>, the named exception is raised. Similarly, for the evaluation of a @fa<raise_expression>, the named exception is raised. In both of these cases, if a @i<string_>@fa<expression> is present, the @fa<expression> is evaluated and its value is associated with the exception occurrence. For the execution of a re-raise statement, the exception occurrence that caused transfer of control to the innermost enclosing handler is raised again.
@xindent<@s9<NOTES@hr 1 If the evaluation of a @i<string_>@fa<expression> raises an exception, that exception is propagated rather than the one denoted by the @i<exception_>@fa<name> of the @fa<raise_statement> or @fa<raise_expression>.>>
!corrigendum 13.13.2(38/3)
!AI-0106-1
!AI-0121-1
@drepl The stream-oriented attributes may be specified for any type via an @fa<attribute_definition_clause>. The subprogram name given in such a clause shall statically denote a subprogram that is not an abstract subprogram. Furthermore, if a stream-oriented attribute is specified for an interface type by an @fa<attribute_definition_clause>, the subprogram name given in the clause shall statically denote a null procedure. @dby The stream-oriented attributes may be specified for any type via an @fa<attribute_definition_clause>. Alternatively, each of the specific stream-oriented attributes may be specified using an @fa<aspect_specification> on any @fa<type_declaration>, with the aspect name being the corresponding attribute name. Each of the class-wide stream-oriented attributes may be specified using an @fa<aspect_specification> for a tagged type @i<T> using the name of the stream-oriented attribute followed by 'Class; such class-wide aspects do not apply to other descendants of @i<T>.
The subprogram name given in such an @fa<attribute_definition_clause> or @fa<aspect_specification> shall statically denote a subprogram that is not an abstract subprogram. Furthermore, if a specific stream-oriented attribute is specified for an interface type, the subprogram name given in the @fa<attribute_definition_clause> or @fa<aspect_specification> shall statically denote a null procedure.
!corrigendum 13.14(5/3)
!AI-0103-1
!AI-0132-1
@dinsa @xbullet<The occurrence of a @fa<generic_instantiation> causes freezing, except that a @fa<name> which is a generic actual parameter whose corresponding generic formal parameter is a formal incomplete type (see 12.5.1) does not cause freezing. In addition, if a parameter of the instantiation is defaulted, the @fa<default_expression> or @fa<default_name> for that parameter causes freezing.> @dinss @xbullet<At the occurrence of an @fa<expression_function_declaration> that is completion, the @fa<expression> of the expression function causes freezing.>
@xbullet<At the occurrence of a renames-as-body whose @i<callable_entity_>@fa<name> denotes an expression function, the @fa<expression> of the expression function causes freezing.>
!corrigendum A(3)
!AI-0052-1
!AI-0114-1
@drepl The implementation shall ensure that each language-defined subprogram is reentrant in the sense that concurrent calls on the same subprogram perform as specified, so long as all parameters that could be passed by reference denote nonoverlapping objects. @dby The implementation shall ensure that each language-defined subprogram is reentrant in the sense that concurrent calls on any language-defined subprogram perform as specified, so long as all objects that are denoted by parameters that could be passed by reference or designated by parameters of an access type are nonoverlapping.
For the purpose of determining whether concurrent calls on text input-output subprograms are required to perform as specified above, when calling a subprogram within Text_IO or its children that implicitly operates on one of the default input/output files, the subprogram is considered to have a parameter of Current_Input or Current_Output (as appropriate).
!corrigendum D.13(6/3)
!AI-0055-1
!AI-0073-1
@drepl @xcode<@b<pragma> Task_Dispatching_Policy (FIFO_Within_Priorities); @b<pragma> Locking_Policy (Ceiling_Locking); @b<pragma> Detect_Blocking; @b<pragma> Restrictions (
No_Abort_Statements, No_Dynamic_Attachment, No_Dynamic_Priorities, No_Implicit_Heap_Allocations, No_Local_Protected_Objects, No_Local_Timing_Events, No_Protected_Type_Allocators, No_Relative_Delay, No_Requeue_Statements, No_Select_Statements, No_Specific_Termination_Handlers, No_Task_Allocators, No_Task_Hierarchy, No_Task_Termination, Simple_Barriers, Max_Entry_Queue_Length =@> 1, Max_Protected_Entries =@> 1, Max_Task_Entries =@> 0, No_Dependence =@> Ada.Asynchronous_Task_Control, No_Dependence =@> Ada.Calendar, No_Dependence =@> Ada.Execution_Time.Group_Budgets, No_Dependence =@> Ada.Execution_Time.Timers, No_Dependence =@> Ada.Task_Attributes, No_Dependence =@> System.Multiprocessors.Dispatching_Domains);>
@dby @xcode<@b<pragma> Task_Dispatching_Policy (FIFO_Within_Priorities); @b<pragma> Locking_Policy (Ceiling_Locking); @b<pragma> Detect_Blocking; @b<pragma> Restrictions (
No_Abort_Statements, No_Dynamic_Attachment, No_Dynamic_CPU_Assignment, No_Dynamic_Priorities, No_Implicit_Heap_Allocations, No_Local_Protected_Objects, No_Local_Timing_Events, No_Protected_Type_Allocators, No_Relative_Delay, No_Requeue_Statements, No_Select_Statements, No_Specific_Termination_Handlers, No_Task_Allocators, No_Task_Hierarchy, No_Task_Termination, Simple_Barriers, Max_Entry_Queue_Length =@> 1, Max_Protected_Entries =@> 1, Max_Task_Entries =@> 0, No_Dependence =@> Ada.Asynchronous_Task_Control, No_Dependence =@> Ada.Calendar, No_Dependence =@> Ada.Execution_Time.Group_Budgets, No_Dependence =@> Ada.Execution_Time.Timers, No_Dependence =@> Ada.Synchronous_Barriers, No_Dependence =@> Ada.Task_Attributes, No_Dependence =@> System.Multiprocessors.Dispatching_Domains);>
!corrigendum E.2.2(17/2)
!AI-0076-1
!AI-0085-1
@drepl @xbullet<The Storage_Pool attribute is not defined for a remote access-to-class-wide type; the expected type for an @fa<allocator> shall not be a remote access-to-class-wide type. A remote access-to-class-wide type shall not be an actual parameter for a generic formal access type. The Storage_Size attribute of a remote access-to-class-wide type yields 0; it is not allowed in an @fa<attribute_definition_clause>.> @dby @xbullet<The Storage_Pool attribute is not defined for a remote access-to-class-wide type; the expected type for an @fa<allocator> shall not be a remote access-to-class-wide type. A remote access-to-class-wide type shall not be an actual parameter for a generic formal access type. The Storage_Size attribute of a remote access-to-class-wide type yields 0. The Storage_Pool and Storage_Size aspects shall not be specified for a remote access-to-class-wide type.>
@s8<@i<Erroneous Execution>>
Execution is erroneous if some operation (other than the initialization or finalization of the object) modifies the value of a constant object declared in the visible part of a remote types package.

Questions? Ask the ACAA Technical Agent