CVS difference for ai12s/ai12-0106-1.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai12s/ai12-0106-1.txt

--- ai12s/ai12-0106-1.txt	2014/08/12 00:58:45	1.2
+++ ai12s/ai12-0106-1.txt	2014/10/14 01:29:30	1.3
@@ -1,4 +1,5 @@
-!standard 13.13.2(38/3)                                14-08-11  AI05-0106-1/02
+!standard 13.1.1(28/3)                                 14-10-13  AI05-0106-1/03
+!standard 13.13.2(38/3)
 !class binding interpretation 14-05-14
 !status work item 14-05-14
 !status received 14-04-25
@@ -41,22 +42,25 @@
 are adopted. Note that 13.13.2(38/3) is split into two paragraphs, and
 we only modify the first.]
 
-[IMPORTANT: I've only split the AI as directed; I made no attempt to
-"rationalize" the AI as Tucker volunteered to do. That may change the wording
-and certainly will change the discussion.]
+Modify 13.1.1(28/3):
 
-Modify 13.13.2(38/3):
+   If the aspect_mark includes 'Class {(a /class-wide aspect/)}, then
+   {, unless specified otherwise for a particular class-wide aspect}:
 
-The stream-oriented attributes may be specified for any type via an
-attribute_definition_clause. Redundant[Alternatively, each of the specific
-stream attributes can be specified using an aspect_specification on any
-type_declaration, with the aspect name being the corresponding attribute
-name.]{ Each of the class-wide stream attributes can be specified for a tagged
-type T using the name of the stream attribute followed by 'Class; such
-class-wide aspects are not inherited for other descendants of T.}
+Modify 13.13.2(38/3):
 
-AARM Reason: We need the last sentence to override the blanket rule given in
-13.1.1 that aspect'Class applies to the type and all descendants.
+  The stream-oriented attributes may be specified for any type via an
+  attribute_definition_clause. {Redundant[Alternatively, each of the
+  specific stream attributes can be specified using an
+  aspect_specification on any type_declaration, with the aspect name
+  being the corresponding attribute name.] Each of the class-wide stream
+  attributes can be specified for a tagged type T using the name of the
+  stream attribute followed by 'Class; such class-wide aspects do not
+  apply to other descendants of T.}
+
+    AARM Reason: We need the last sentence to override the blanket rule
+    given in 13.1.1 that aspect'Class applies to the type and all
+    descendants.
 
 [Yet another Editor's note: Add Aspect Descriptions for Read'Class, Write'Class,
 and so on after the existing ones. Probably move the existing ones up below the
@@ -68,15 +72,27 @@
 We want to be able to use aspect_specifications in as many cases as possible,
 so we want some way to specify the class-wide stream aspects. Moreover, both
 the syntax of aspect_specifications and consistency argue that the form of
-such names is <aspect>'Class. So we add an appropriate definition so that there
-can be no doubt about the intent.
+such names is <aspect>'Class. Finally, aspect specifications are associated
+with explicit declarations only, and T'Class is declared implicitly.  So
+we propose that the attribute XYZ of T'Class can be specified by
+specifying the XYZ'Class aspect of T.
 
 Of course, we want this for all four stream attributes.
 
-Note that 13.1.1(29/3) says that a class-wide aspect of a type applies to all
-descendants of the type. We don't want that to happen in this case, so the
-wording says explicitly that this is not the case.
+Note that 13.1.1(29/3) says that a class-wide aspect of a type applies
+to all descendants of the type. We don't want that to happen in this
+case, so we adjust the wording in 13.1.1(28/3) to say "unless specified
+otherwise..." and then in 13.13.2 indicate that it doesn't apply to the
+class-wide stream aspects.
 
+!corrigendum 13.1.1(28/3)
+
+@drepl
+If the @fa<aspect_mark> includes 'Class, then:
+@dby
+If the aspect_mark includes 'Class (a @i<class-wide aspect>), then,
+unless specified otherwise for a particular class-wide aspect:
+
 !corrigendum 13.13.2(38/3)
 
 @drepl
@@ -88,14 +104,20 @@
 clause shall statically denote a null procedure.
 @dby
 The stream-oriented attributes may be specified for any type via an
-@fa<attribute_definition_clause>. Alternatively, each of the specific
-stream attributes can be specified using an @fa<aspect_specification> on any
-@fa<type_declaration> other than an @fa<incomplete_type_declaration>, with the
-aspect name being the corresponding attribute name.] Each of the class-wide
-stream attributes can be specified for a tagged type T using the name of the
-stream attribute followed by 'Class; such class-wide aspects are not inherited
-for other descendants of T.
+@fa<attribute_definition_clause>. Alternatively, each of the
+specific stream attributes can be specified using an
+aspect_specification on any type_declaration, with the aspect name
+being the corresponding attribute name. Each of the class-wide stream
+attributes can be specified for a tagged type @i<T> using the name of the
+stream attribute followed by 'Class; such class-wide aspects do not
+apply to other descendants of @i<T>.
 
+The subprogram name given in such a clause
+shall statically denote a subprogram that is not an abstract subprogram.
+Furthermore, if a stream-oriented attribute is specified for an interface type
+by an @fa<attribute_definition_clause>, the subprogram name given in the
+clause shall statically denote a null procedure.
+
 !ASIS
 
 No ASIS effect.
@@ -164,5 +186,14 @@
 Class'Write =>" but I understand Steve's point.  "with Class'Write" just seems a
 bit too weird to me, and the connection with Pre'Class, Post'Class, etc., seems
 natural, even if the inheritance rules are different.
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Monday, October 13, 2014  2:38 PM
+
+Here is a very modest revision of AI12-0106, indicating that to specify the XYZ
+*attribute* of T'Class, you do so by specifying the XYZ'Class *aspect* of T.
+[This is version /03 of the AI - Editor.]
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent