CVS difference for ais/ai-00326.txt

Differences between 1.15 and version 1.16
Log of other versions for file ais/ai-00326.txt

--- ais/ai-00326.txt	2005/01/28 02:10:47	1.15
+++ ais/ai-00326.txt	2005/02/08 07:12:34	1.16
@@ -1,7 +1,8 @@
-!standard 03.02      (04)                            04-11-12  AI95-00326/08
+!standard 03.02      (04)                            05-01-31  AI95-00326/09
 !standard 03.02      (05)
 !standard 03.02.01   (08)
 !standard 03.07      (01)
+!standard 03.09      (30)
 !standard 03.10.01   (02)
 !standard 03.10.01   (04)
 !standard 03.10.01   (05)
@@ -77,8 +78,8 @@
   very restricted usage, providing support for recursive data structures. A
   private type or private extension represents a partial view (see 7.3) of a
   type, providing support for data abstraction. The full view (see 3.2.1) of a
-  type provides its complete declaration. An incomplete or partial view is
-  considered a composite type.
+  type represents its complete definition. An incomplete or partial view is
+  considered a composite type, even if the full view is not.
 
 AARM: Only the first and last sentences really define anything; the real
   definitions of the views are in the referenced paragraphs.
@@ -89,7 +90,8 @@
 
 Add to 3.2.1(8) after the first sentence:
 
-  A full type defines the full view of a type.
+  The declaration of a full type also declares the
+  full view of the type.
 
 AARM Change: All types have full views in this model. The penultimate sentence
   of 7.3(4) gets square brackets in the AARM (but I'd recommend leaving it
@@ -101,6 +103,9 @@
   should reflect that. Since full views cannot have unknown_discriminant_parts,
   "view of a type" is enough here.
 
+Delete 3.9(30). The second sentence is obsolescent, and the first part is
+too obscure to discuss.
+
 Replace 3.10.1(2):
 
    incomplete_type_declaration ::=
@@ -110,9 +115,9 @@
 
    An incomplete_type_declaration declares an incomplete view of a type,
    and its first subtype; the first subtype is unconstrained if a
-   known_discriminant_part appears. If the incomplete_type_declaration includes
-   the reserved word tagged, it declares a tagged incomplete view. An incomplete
-   view of a type is a limited view of the type (see 7.5).
+   discriminant_part appears. If the incomplete_type_declaration includes
+   the reserved word tagged, it declares a tagged incomplete view. An
+   incomplete view of a type is a limited view of the type (see 7.5).
 
 AARM Change: We define "incomplete view" and "tagged incomplete view" here.
 We explicitly say that "incomplete view"s do not have assignment.
@@ -120,8 +125,8 @@
   Given an access type A whose designated type T is an incomplete view,
   a dereference of a value of type A also has this incomplete view
   except when:
-    * it occurs in the immediate scope of the completion of T, or
-    * it occurs in the scope of a nonlimited_with_clause that mentions
+    * it occurs within the immediate scope of the completion of T, or
+    * it occurs within the scope of a nonlimited_with_clause that mentions
       a library package in whose visible part the completion of T is declared.
   In these cases, the dereference has the full view of T.
 
@@ -162,7 +167,7 @@
 
 Replace 3.10.1(5-9):
 
-  A name that denotes an incomplete view of a type may be used as follows:
+  A name that denotes an incomplete view of a type shall only be used as follows:
 
     * as the subtype_mark in the subtype_indication of an
       access_to_object_definition; the only form of constraint allowed in
@@ -197,6 +202,9 @@
 requiring access to the controlling tag without access to the representation of
 the type.
 
+  No other uses of a @fa<name> that denotes an incomplete view of a type are
+  allowed.
+
 Replace 3.10.1(10):
 
   A prefix shall not be of an incomplete view.
@@ -424,8 +432,8 @@
 very restricted usage, providing support for recursive data structures. A
 @i<private> type or @i<private extension> represents a partial view (see 7.3)
 of a type, providing support for data abstraction. The full view (see 3.2.1) of
-a type provides its complete declaration. An incomplete or partial view is
-considered a composite type.
+a type represents its complete definition. An incomplete or partial view is
+considered a composite type, even if the full view is not.
 
 !corrigendum 3.2(5)
 
@@ -453,7 +461,8 @@
 @dby
 A named type that is declared by a @fa<full_type_declaration>, or an anonymous
 type that is defined as part of declaring an object of the type, is called a
-@i<full type>. A full type defines the @i<full view> of a type. The
+@i<full type>. The declaration of a full type also declares the
+@i<full view> of the type. The
 @fa<type_definition>, @fa<task_definition>, @fa<protected_definition>, or
 @fa<access_definition> that defines a full type is called a @i<full type
 definition>. Types declared by other forms of @fa<type_declaration> are not
@@ -478,6 +487,19 @@
 specifies that the discriminants of the type are unknown for the given view;
 all subtypes of such a view are indefinite subtypes.
 
+!corrigendum 3.9(30)
+
+@ddel
+@xindent<@s9<65  If S denotes an untagged private type
+whose full type is tagged,
+then S'Class is also allowed before the full type definition,
+but only in the private part of the package in which the type is
+declared (see 7.3.1).
+Similarly, the Class attribute is defined
+for incomplete types whose full type is tagged, but only within
+the library unit in which the incomplete type is declared
+(see 3.10.1).>>
+
 !corrigendum 3.10.1(2)
 
 @drepl
@@ -489,15 +511,15 @@
 
 An @fa<incomplete_type_declaration> declares an @i<incomplete view> of a type,
 and its first subtype; the first subtype is unconstrained if a
-@fa<known_discriminant_part> appears. If the @fa<incomplete_type_declaration>
+@fa<discriminant_part> appears. If the @fa<incomplete_type_declaration>
 includes the reserved word @b<tagged>, it declares a @i<tagged incomplete view>.
 An incomplete view of a type is a limited view of the type (see 7.5).
 
 Given an access type @i<A> whose designated type @i<T> is an incomplete view,
 a dereference of a value of type @i<A> also has this incomplete view
 except when:
-@xbullet<it occurs in the immediate scope of the completion of @i<T>, or>
-@xbullet<it occurs in the scope of a @fa<nonlimited_with_clause> that mentions
+@xbullet<it occurs within the immediate scope of the completion of @i<T>, or>
+@xbullet<it occurs within the scope of a @fa<nonlimited_with_clause> that mentions
 a library package in whose visible part the completion of @i<T> is declared.>
 In these cases, the dereference has the full view of @i<T>.
 !corrigendum 3.10.1(4)
@@ -572,6 +594,9 @@
 within the private part of a package, then the completion of the incomplete
 view shall also occur immediately within the private part; it may not be
 deferred to the package body.
+
+No other uses of a @fa<name> that denotes an incomplete view of a type are
+allowed.
 
 !corrigendum 3.10.1(10)
 

Questions? Ask the ACAA Technical Agent