Version 1.3 of ai12s/ai12-0203-1.txt

Unformatted version of ai12s/ai12-0203-1.txt version 1.3
Other versions for file ai12s/ai12-0203-1.txt

!standard 4.1.5(5.1/4)          16-11-10 AI12-0203-1/02
!standard 4.1.5(7/3)
!class presentation 16-10-06
!status Amendment 1-2012 16-11-10
!status ARG Approved 10-0-0 16-10-08
!status work item 16-10-06
!status received 16-09-08
!priority Low
!difficulty Easy
!qualifier Clarification
!subject Overriding a nonoverridable aspect
!summary
Clarify 4.1.5(7/3).
!question
4.1.5(5.1/4) says:
The Implicit_Dereference aspect is nonoverridable (see 13.1.1).
while 4.1.5(7/3) starts:
Given a reference type T, the Implicit_Dereference aspect is inherited by descendants of type T if not overridden.
Since the aspect can't be overridden, why the "if not overridden" above?
!recommendation
A nonoverridable aspect can have a confirming aspect value specified, and that is the case that has to be covered by the 4.1.5(7/3) sentence. A clarification is suggested.
(See Summary.)
!wording
Modify 4.1.5(7/3):
Given a reference type T, the Implicit_Dereference aspect is inherited by descendants of type T if not overridden{ Redundant[(which is only permitted if confirming)]}. If a descendant type constrains the value of the reference discriminant of T by a new discriminant, that new discriminant is the reference discriminant of the descendant. Redundant[If the descendant type constrains the value of the reference discriminant of T by an expression other than the name of a new discriminant, a generalized_reference that identifies an object of the descendant type denotes the object or subprogram designated by the value of this constraining expression.]
!discussion
(See !recommendation.)
!corrigendum 4.1.5(7/3)
Replace the paragraph:
Given a reference type T, the Implicit_Dereference aspect is inherited by descendants of type T if not overridden. If a descendant type constrains the value of the reference discriminant of T by a new discriminant, that new discriminant is the reference discriminant of the descendant. If the descendant type constrains the value of the reference discriminant of T by an expression other than the name of a new discriminant, a generalized_reference that identifies an object of the descendant type denotes the object or subprogram designated by the value of this constraining expression.
by:
Given a reference type T, the Implicit_Dereference aspect is inherited by descendants of type T if not overridden (which is only permitted if confirming). If a descendant type constrains the value of the reference discriminant of T by a new discriminant, that new discriminant is the reference discriminant of the descendant. If the descendant type constrains the value of the reference discriminant of T by an expression other than the name of a new discriminant, a generalized_reference that identifies an object of the descendant type denotes the object or subprogram designated by the value of this constraining expression.
!ASIS
No ASIS effect.
!ACATS test
No ACATS test needed.
!appendix

The original issue was raised privately by Steve Baird; another AdaCore
person independently raised the issue a few days later. The wording was
suggested by Tucker Taft.

****************************************************************

Questions? Ask the ACAA Technical Agent