CVS difference for arm/source/08.mss

Differences between 1.26 and version 1.27
Log of other versions for file arm/source/08.mss

--- arm/source/08.mss	2001/04/05 22:12:03	1.26
+++ arm/source/08.mss	2004/11/05 05:47:50	1.27
@@ -1,10 +1,10 @@
 @Part(08, Root="ada.mss")
-@Comment{$Date: 2001/04/05 22:12:03 $}
+@Comment{$Date: 2004/11/05 05:47:50 $}
 @LabeledSection{Visibility Rules}
 @Comment{$Source: e:\\cvsroot/ARM/Source/08.mss,v $}
-@Comment{$Revision: 1.26 $}
+@Comment{$Revision: 1.27 $}
 @redundant[The rules defining the scope of declarations and the rules defining
@@ -673,7 +673,7 @@
 @PDefn{type conformance}
 @redundant[An inner declaration hides any outer homograph from direct visibility.]
 @leading@Redundant[Two homographs are not generally allowed
 immediately within the same declarative region unless one
 @i{overrides} the other (see Legality Rules below).]
@@ -685,12 +685,12 @@
 immediately within the same declarative region in the
 following cases:
 @Chg{New=[A declaration that is not overridable overrides one that is overridable],
 Old=[An explicit declaration overrides an implicit declaration of a primitive
 subprogram]}, @Redundant[regardless of which declaration occurs first];
 And regardless of whether the @Chg{New=[non-overriddable],Old=[explicit]}
 declaration is overloadable or not.
 @Chg{New=[For example, @nt{statement_identifier}s are covered by this rule.],Old=[]}
@@ -887,7 +887,7 @@
 @Chg{New=[A non-overridable],Old=[An explicit]} declaration is illegal if there is a
 homograph occurring immediately within the same
 declarative region that is visible at the place of the
@@ -957,7 +957,7 @@
 homographs, which is something compilers have never before been
 required to do.
 @Chg{New=[@Leading@;If a @nt{type_extension} contains a component with
 the same name as a component in an ancestor type, there must be no place
 where both components are visible. For instance:],Old=[]}
@@ -1010,7 +1010,7 @@
    I3 : Integer := A.T(X).I;   -- @RI{A.T.I}
 @key[end] A.E;],Old=[]}
 @Chg{New=[@Noprefix@;D.NT3 can have a component I because the component I of
 the parent type is never visible. The parent component exists, of course, but
 is never declared for the type D.NT3. In the child package A.E, the component
@@ -1151,6 +1151,18 @@
 Visibility is defined only for declarations.
+@Chg{Version=[2],New=[@b<Corrigendum:> Clarified the overriding rules so that
+"/=" and @nt{statement_identifier}s are covered.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Clarified that is it never possible
+for two components with the same name to be visible; any such program is
 @LabeledClause{Use Clauses}
@@ -1457,6 +1469,7 @@
 irrelevant, since failing these tests is highly unlikely.
 @LabeledSubClause{Object Renaming Declarations}
@@ -1505,7 +1518,7 @@
 The renamed entity shall be an object.
 The renamed entity shall not be a subcomponent that depends on
 discriminants of a variable whose nominal subtype is unconstrained,
 unless this subtype is indefinite, or the variable is aliased.
@@ -1522,7 +1535,7 @@
 disappear, which might leave dangling references.
 Similar restrictions exist for the Access attribute.
 @Chg{New=[@Leading@;The "recheck on instantiation" and "assume-the-worst in the body"
 restrictions on generics are necessary to avoid renaming of components which
 could disappear even when the nominal subtype would prevent the problem:],Old=[]}
@@ -1612,6 +1625,12 @@
 unconstrained nominal subtype.
+@Chg{Version=[2],New=[@b<Corrigendum:> Fixed to forbid renamings of
+depends-on-discriminant components if the type @i{might} be definite.],Old=[]}
 @LabeledSubClause{Exception Renaming Declarations}
@@ -1698,7 +1717,7 @@
 shall be mode-conformant with that of the renamed callable entity.
 @Defn2{Term=[mode conformance],Sec=(required)}
 The profile of a renaming-as-body
 @Chg{New=[],Old=[shall be subtype-conformant with that of the renamed
 callable entity, and ]}shall conform fully to that of the declaration it
@@ -1730,7 +1749,7 @@
 jump is needed. Note that the name is evaluated at renaming time, not at
 call time.)
 @Chg{New=[The first part of the second sentence is intended to allow
 renaming-as-body of predefined operators before the @nt{subprogram_declaration}
 is frozen. For some types (such as integer types), the parameter type for
@@ -1757,7 +1776,7 @@
 involved in the conformance rules.
 @Chg{New=[Circular renames before freezing is illegal, as the compiler
 would not be able to determine the convention of the subprogram. Other
 circular renames are handled below; see @BoundedTitle.],Old=[]}
@@ -1802,7 +1821,7 @@
 But what looks like a procedure call will do things like barrier
 @Chg{New=[All properties of the renamed entity are inherited by the new view
 unless otherwise stated by this International Standard.
 In particular, if the renamed entity is abstract or requires overridding
@@ -1813,7 +1832,7 @@
 @Chg{New=[For a call to a subprogram whose body is given as a renaming-as-body,
 the execution of the renaming-as-body is equivalent to the execution of a
 @nt{subprogram_body} that simply calls the renamed subprogram with its formal
@@ -1861,14 +1880,14 @@
 @Chg{New=[@Defn2{Term=[Program_Error],Sec=(raised by failure of run-time check)}
 @Defn2{Term=[Storage_Error],Sec=(raised by failure of run-time check)}
 If a subprogram directly or indirectly renames itself, then it is a bounded
 error to call that subprogram. Possible consequences are that Program_Error or
 Storage_Error is raised, or that the call results in infinite recursion.],Old=[]}
 @Chg{New=[This has to be a bounded error, as it is possible for a
 renames-as-body appearing in a package body to cause this problem. Thus it is
 not possible in general to detect this problem at compile time.],Old=[]}
@@ -1953,6 +1972,24 @@
 @key[function] Minimum(L : Link := Head) @key[return] Cell @key[renames] Min_Cell; --@RI{ see @RefSecNum{Subprogram Declarations}}
+@Chg{Version=[2],New=[@Defn{extensions to Ada 95}
+@b<Corrigendum:> Allowed a renames-as-body to be just
+mode conformant with the specification if the subprogram is not yet frozen.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Described the semantics of
+renames-as-body, so that the location of elaboration checks is clear.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Clarified that circular renames-as-body
+is illegal (if it can be detected in time) or a bounded error.],Old=[]}
 @LabeledSubClause{Generic Renaming Declarations}

Questions? Ask the ACAA Technical Agent