CVS difference for ais/ai-00218.txt

Differences between 1.10 and version 1.11
Log of other versions for file ais/ai-00218.txt

--- ais/ai-00218.txt	2001/10/09 00:47:09	1.10
+++ ais/ai-00218.txt	2002/01/19 00:42:36	1.11
@@ -1,5 +1,5 @@
-!standard 8.3(9-13)                                   01-09-11  AI95-00218/06
-!standard 6.1(1)
+!standard 8.3(26)                                      01-09-11  AI95-00218/06
+!status Amendment 200Y 02-17-01
 !class amendment 99-03-23
 !status WG9 approved 01-10-05
 !status ARG approved 7-0-1  01-05-18
@@ -295,6 +295,55 @@
 environment for which they were designed. Thus, generic instantiations are
 checked based on whether pragma Explicit_Overriding applies to the generic
 unit, and not whether it applies to the instantiation.
+!corrigendum 8.3(26)
+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.
+@xindent<The form of a pragma Explicit_Overriding is as follows:@hr
+  @b<pragma> Explicit_Overriding;@hr
+The form of a pragma Overriding is as follows:@hr
+  @b<pragma> Overriding [(@fa<designator>)];@hr
+The form of a pragma Optional_Overriding is as follows:@hr
+  @b<pragma> Optional_Overriding [(@fa<designator>)];@hr
+Pragma Explicit_Overriding is a configuration pragma.>
+@i<@s8<Legality Rules>>@hr
+@fa<Pragma>s Overriding and Optional_Overriding shall immediately follow (except
+for other pragmas) the explicit declaration of a primitive operation. The
+optional @fa<designator> of a @fa<pragma> Overriding or Optional_Overriding shall be
+the same as the @fa<designator> of the operation which it follows. Only one of
+the @fa<pragma>s Overriding and Optional_Overriding shall be given for a single
+primitive operation.
+A primitive operation to which @fa<pragma> Overriding applies shall override another
+operation. In addition to the places where Legality Rules normally
+apply, this rule also applies in the private part of an instance of a generic
+The configuration @fa<pragma> Explicit_Overriding applies to all declarations within
+compilation units to which it applies, except that in an instance of a generic
+unit, Explicit_Overriding applies if and only if it applies to the generic
+unit. At a place where a @fa<pragma> Explicit_Overriding applies, an explicit
+subprogram_declaration to which neither @fa<pragma> Overriding nor
+Optional_Overriding applies shall not be an overriding declaration. In
+addition to the places where Legality Rules normally apply, this rule also
+applies in the private part of an instance of a generic unit.

Questions? Ask the ACAA Technical Agent