CVS difference for ais/ai-20218.txt
--- ais/ai-20218.txt 2003/09/19 01:42:29 1.7
+++ ais/ai-20218.txt 2003/10/29 00:42:07 1.8
@@ -1,5 +1,13 @@
-!standard 8.3(26) 03-09-17 AI95-00218-03/02
+!standard 8.3(26) 03-10-21 AI95-00218-03/03
+!standard 2.9(3)
+!standard 6.1(2)
+!standard 6.1(3)
+!standard 6.3(2)
+!standard 8.5.4(2)
+!standard 12.3(2)
!class amendment 03-06-06
+!status Amendment 200Y 03-10-21
+!status ARG Approved 10-0-0 03-10-03
!status work item 03-06-06
!status received 03-06-06
!priority Medium
@@ -123,16 +131,16 @@
Change the first two lines of 6.3(2) to read:
subprogram_body ::=
- [overriding_indicator] subprogram_specification
+ [overriding_indicator] subprogram_specification is
Add to 8.3 after paragraph 26:
-If an explicit declaration of an operation by a subprogram_declaration,
-abstract_subprogram_declaration, subprogram_body, subprogram_renaming_declaration or
-generic_instantiation of a subprogram has an overriding_indicator, then:
+If a subprogram_declaration, abstract_subprogram_declaration, subprogram_body,
+subprogram_renaming_declaration, or generic_instantiation of a subprogram has an
+overriding_indicator, then:
* the operation shall be a primitive operation for some type;
* if the overriding_indicator is "overriding", then it shall override
- another homograph at the point of the declaration;
+ another homograph at the point of the declaration or body;
* if the overriding_indicator is "not overriding", then it shall not override
another homograph (at any point).
In addition to the places where Legality Rules normally apply, these rules also
@@ -601,12 +609,121 @@
"overloaded") suffer from the same problem, and no programmer is likely to
mistake the meaning of "not".
+!corrigendum 2.9(03)
+@drepl
+NOTES@hr
+6 The reserved words appear in @b<lower case boldface> in this International
+Standard, except when used in the @fa<designator> of an attribute (see
+4.1.4). Lower case boldface is also used for a reserved word
+in a @fa<string_literal> used as an @fa<operator_symbol>. This is merely a
+convention @emdash programs may be written in whatever typeface is desired and
+available.
+@dby
+@b<Overriding> is a nonreserved keyword.
+
+NOTES@hr
+6 The reserved words appear in @b<lower case boldface> in this International
+Standard, except when used in the @fa<designator> of an attribute (see
+4.1.4). Lower case boldface is also used for a reserved word
+in a @fa<string_literal> used as an @fa<operator_symbol>. This is merely a
+convention @emdash programs may be written in whatever typeface is desired and
+available.
+
+!corrigendum 6.1(02)
+
+@drepl
+@xcode<@fa<subprogram_declaration ::= subprogram_specification ;>>
+@dby
+@xcode<@fa<overriding_indicator ::= [>@ft<@b<not>>@fa<] >@ft<@b<overriding>>@fa<
+subprogram_declaration ::=
+ [overriding_indicator] subprogram_specification ;>>
+
+!corrigendum 6.1(03)
+@drepl
+@xcode<@fa<abstract_subprogram_declaration ::= subprogram_specification >@ft<@b<is abstract>>@fa<;>>
+@dby
+@xcode<@fa<abstract_subprogram_declaration ::=
+ [overriding_indicator] subprogram_specification >@ft<@b<is abstract>>@fa<;>>
+
+!corrigendum 6.3(02)
+
+@drepl
+@xcode<@fa<subprogram_body ::=
+ subprogram_specification >@ft<@b<is>>@fa<
+ declarative_part
+ >@ft<@b<begin>>@fa<
+ handled_sequence_of_statements
+ >@ft<@b<end>>@fa< [designator];>>
+@dby
+@xcode<@fa<subprogram_body ::=
+ [overriding_indicator] subprogram_specification >@ft<@b<is>>@fa<
+ declarative_part
+ >@ft<@b<begin>>@fa<
+ handled_sequence_of_statements
+ >@ft<@b<end>>@fa< [designator];>>
+
!corrigendum 8.3(26)
+
+@dinsa
+A non-overridable declaration is illegal if there is a homograph occurring
+immediately within the same declarative region that is visible at the place
+of the declaration, and is not hidden from all visibility by the non-overridable
+declaration. In addition, a type extension is illegal if somewhere within
+its immediate scope it has two visible components with the same name. Similarly,
+the @fa<context_clause> for a @fa<subunit> is illegal if it
+mentions (in a @fa<with_clause>) some library unit, and there is a homograph of
+the library unit that is visible at the place of the corresponding stub, and
+the homograph and the mentioned library unit are both declared immediately
+within the same declarative region. These rules also apply to dispatching
+operations declared in the visible part of an instance of a generic unit.
+However, they do not apply to other overloadable declarations in an instance;
+such declarations may have type conformant profiles in the instance, so long
+as the corresponding declarations in the generic were not type conformant.
+@dinss
+If a @fa<subprogram_declaration>, @fa<abstract_subprogram_declaration>,
+@fa<subprogram_body>, @fa<subprogram_renaming_declaration>, or
+@fa<generic_instantiation> of a subprogram has an
+@fa<overriding_indicator>, then:
+@xbullet<the operation shall be a primitive operation for some type;>
+@xbullet<if the @fa<overriding_indicator> is @b<overriding>, then it shall
+override another homograph at the point of the declaration or body;>
+@xbullet<if the @fa<overriding_indicator> is @b<not overriding>, then it shall
+not override another homograph (at any point).>
+In addition to the places where Legality Rules normally apply, these rules also
+apply in the private part of an instance of a generic unit.
+
+!corrigendum 8.5.4(2)
+
+@drepl
+@xcode<@fa<subprogram_renaming_declaration ::= subprogram_specification >@ft<@b<renames> @i<callable_entity_>>@fa<name;>>
+@dby
+@xcode<@fa<subprogram_renaming_declaration ::= [overriding_indicator]
+ subprogram_specification >@ft<@b<renames> @i<callable_entity_>>@fa<name;>>
+
+!corrigendum 12.3(2)
+
+@drepl
+@xcode<@fa<generic_instantiation ::=
+ >@ft<@b<package>>@fa< defining_program_unit_name >@ft<@b<is>
+ @b<new> @i<generic_package_>>@fa<name [generic_actual_part];
+ | >@ft<@b<procedure>>@fa< defining_program_unit_name >@ft<@b<is>
+ @b<new> @i<generic_procedure_>>@fa<name [generic_actual_part];
+ | >@ft<@b<function>>@fa< defining_designator >@ft<@b<is>
+ <@b<new> @i<generic_function_>>@fa<name [generic_actual_part];>>
+@dby
+@xcode<@fa<generic_instantiation ::=
+ >@ft<@b<package>>@fa< defining_program_unit_name >@ft<@b<is>
+ @b<new> @i<generic_package_>>@fa<name [generic_actual_part];
+ | [overriding_indicator] >@ft<@b<procedure>>@fa< defining_program_unit_name >@ft<@b<is>
+ @b<new> @i<generic_procedure_>>@fa<name [generic_actual_part];
+ | [overriding_indicator]>@ft<@b<function>>@fa< defining_designator >@ft<@b<is>
+ <@b<new> @i<generic_function_>>@fa<name [generic_actual_part];>>
-To be done.
+!ACATS test
+Tests should be created to check on the implementation of this feature.
!appendix
Questions? Ask the ACAA Technical Agent