!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) @drepl Given a reference type @i, the Implicit_Dereference aspect is inherited by descendants of type @i if not overridden. If a descendant type constrains the value of the reference discriminant of @i 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 @i by an @fa other than the @fa of a new discriminant, a @fa that identifies an object of the descendant type denotes the object or subprogram designated by the value of this constraining expression. @dby Given a reference type @i, the Implicit_Dereference aspect is inherited by descendants of type @i if not overridden (which is only permitted if confirming). If a descendant type constrains the value of the reference discriminant of @i 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 @i by an @fa other than the @fa of a new discriminant, a @fa 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. ****************************************************************