CVS difference for ais/ai-00345.txt

Differences between 1.20 and version 1.21
Log of other versions for file ais/ai-00345.txt

--- ais/ai-00345.txt	2005/05/03 03:54:44	1.20
+++ ais/ai-00345.txt	2005/06/16 23:47:31	1.21
@@ -1,6 +1,9 @@
-!standard  3.09.01    (03)                             05-04-05  AI95-00345/08
+!standard  3.09.01    (03)                             05-06-05  AI95-00345/09
 !standard  2.09       (02)
+!standard  3.02       (12)
+!standard  3.02       (13)
 !standard  3.09       (02)
+!standard  3.09.02    (20)
 !standard  3.09.03    (01)
 !standard  3.09.03    (02)
 !standard  3.09.04    (01)
@@ -263,6 +266,52 @@
 
        synchronized
 
+Replace 3.2(12-13) by:
+
+    all types
+       elementary
+          scalar
+             discrete
+                enumeration
+                   character
+                   boolean
+                   other enumeration
+                integer
+                   signed integer
+                   modular integer
+             real
+                floating point
+                fixed point
+                   ordinary fixed point
+                   decimal fixed point
+          access
+             access-to-object
+             access-to-subprogram
+       composite
+          noninterface
+             array
+                string
+                other array
+             record
+             task
+             protected
+          interface
+             nonlimited interface
+             limited interface
+                synchronized interface
+                   task interface
+                   protected interface
+
+
+    There are other classes, such as "numeric" and "tagged", which
+    represent other classification dimensions, but do not fit
+    into the above strictly hierarchical picture.
+
+Add a note after 3.4(35):
+
+    It is illegal for the parent type of a derived_type_definition to be a
+    synchronized tagged type.
+
 Modify 3.9(2) as:
 
     A record type or private type that has the
@@ -291,6 +340,21 @@
     The parent type of a record extension shall not be a class-wide type {nor
     shall it be a synchronized tagged type (see 3.9.4)}.
 
+Change 3.9.2(20) as follows:
+
+    For the execution of a call on a dispatching operation, the body executed
+    is the one for the corresponding primitive subprogram of the specific type
+    identified by the controlling tag value. The body for an explicitly
+    declared dispatching operation is the corresponding explicit body for the
+    subprogram. The body for an implicitly declared dispatching operation that
+    is overridden is the body for the overriding subprogram, Redunant[even if
+    the overriding occurs in a private part.] {Similarly, the body for an
+    implicitly declared dispatching operation that is implemented by an
+    entry (see 9.1) or protected operation (see 9.4) is the body for the
+    implemented entry or operation.} The body for an inherited dispatching
+    operation that is not overridden {or implemented} is the body of the
+    corresponding subprogram of the parent or ancestor type.
+
 Replace the first sentence of 3.9.3(1) with:
 
     An abstract type is a tagged type intended for use as an ancestor of
@@ -403,7 +467,7 @@
     For each primitive subprogram inherited by the type declared by a
     task_type_declaration, at most one of the following shall apply:
 
-      - the inherited subprogram shall be overridden with a primitive
+      - the inherited subprogram is overridden with a primitive
         subprogram of the task type, in which case the overriding
         subprogram shall be subtype conformant with the inherited
         subprogram and not abstract; or
@@ -468,7 +532,7 @@
 of mode OUT or IN OUT, or an access-to-variable parameter.
 
 
-Add at end of 9.7.2(1):
+Add at end of 9.7.2(1) and 9.7.3(1):
 
     A procedure call may appear rather than an entry call for cases
     where the procedure might be implemented by an entry.
@@ -515,7 +579,7 @@
     a call on a procedure implemented by an entry,} the entry call is then
     issued. {Otherwise, the call proceeds as described in 6.4 for a procedure
     call, followed by the sequence_of_statements of the entry_call_alternative,
-    and the delay_alternative sequence_of_statements is ignored.}
+    and the sequence_of_statements of the delay_alternative is ignored.}
 
 Modify 9.7.4(4): change "entry_call_statement" to "procedure_or_entry_call"
 
@@ -927,31 +991,117 @@
 !comment @dinsl
 !comment @b<synchronized>
 
+!corrigendum 3.2(12)
+
+@drepl
+@xindent<@s9<all types@hr
+@ @ elementary@hr
+@ @ @ @ scalar@hr
+@ @ @ @ @ @ discrete@hr
+@ @ @ @ @ @ @ @ enumeration@hr
+@ @ @ @ @ @ @ @ @ @ character@hr
+@ @ @ @ @ @ @ @ @ @ boolean@hr
+@ @ @ @ @ @ @ @ @ @ other enumeration@hr
+@ @ @ @ @ @ @ @ integer@hr
+@ @ @ @ @ @ @ @ @ @ signed integer@hr
+@ @ @ @ @ @ @ @ @ @ modular integer@hr
+@ @ @ @ @ @ real@hr
+@ @ @ @ @ @ @ @ floating point@hr
+@ @ @ @ @ @ @ @ fixed point@hr
+@ @ @ @ @ @ @ @ @ @ ordinary fixed point@hr
+@ @ @ @ @ @ @ @ @ @ decimal fixed point@hr
+@ @ @ @ access@hr
+@ @ @ @ @ @ access-to-object@hr
+@ @ @ @ @ @ access-to-subprogram@hr
+@ @ @ @ composite@hr
+@ @ @ @ @ @ array@hr
+@ @ @ @ @ @ @ @ string@hr
+@ @ @ @ @ @ @ @ other array@hr
+@ @ @ @ @ @ untagged record@hr
+@ @ @ @ @ @ tagged@hr
+@ @ @ @ @ @ task@hr
+@ @ @ @ @ @ protected>>
+@dby
+@xindent<@s9<all types@hr
+@ @ elementary@hr
+@ @ @ @ scalar@hr
+@ @ @ @ @ @ discrete@hr
+@ @ @ @ @ @ @ @ enumeration@hr
+@ @ @ @ @ @ @ @ @ @ character@hr
+@ @ @ @ @ @ @ @ @ @ boolean@hr
+@ @ @ @ @ @ @ @ @ @ other enumeration@hr
+@ @ @ @ @ @ @ @ integer@hr
+@ @ @ @ @ @ @ @ @ @ signed integer@hr
+@ @ @ @ @ @ @ @ @ @ modular integer@hr
+@ @ @ @ @ @ real@hr
+@ @ @ @ @ @ @ @ floating point@hr
+@ @ @ @ @ @ @ @ fixed point@hr
+@ @ @ @ @ @ @ @ @ @ ordinary fixed point@hr
+@ @ @ @ @ @ @ @ @ @ decimal fixed point@hr
+@ @ @ @ access@hr
+@ @ @ @ @ @ access-to-object@hr
+@ @ @ @ @ @ access-to-subprogram@hr
+@ @ @ @ composite@hr
+@ @ @ @ @ @ noninterface@hr
+@ @ @ @ @ @ @ @ array@hr
+@ @ @ @ @ @ @ @ @ @ string@hr
+@ @ @ @ @ @ @ @ @ @ other array@hr
+@ @ @ @ @ @ @ @ record@hr
+@ @ @ @ @ @ @ @ task@hr
+@ @ @ @ @ @ @ @ protected@hr
+@ @ @ @ @ @ interface@hr
+@ @ @ @ @ @ @ @ nonlimited interface@hr
+@ @ @ @ @ @ @ @ limited interface@hr
+@ @ @ @ @ @ @ @ @ @ synchronized interface@hr
+@ @ @ @ @ @ @ @ @ @ @ @ task interface@hr
+@ @ @ @ @ @ @ @ @ @ @ @ protected interface>>
+
+!corrigendum 3.2(13)
+
+@drepl
+@xindent<@s9<The classes "numeric" and "nonlimited" represent other
+classification dimensions and do not fit into the above strictly hierarchical
+picture.>>
+@dby
+@xindent<@s9<There are other classes, such as "numeric" and "tagged", which
+represent other classification dimensions, but do not fit
+into the above strictly hierarchical picture.>>
+
+!corrigendum 3.4(35)
+
+@dinsa
+@xindent<@s9<17  If the reserved word @b<abstract> is given in the declaration
+of a type, the type is abstract (see 3.9.3).>>
+@dinst
+@xindent<@s9<18  It is illegal for the parent type of a
+@fa<derived_type_definition> to be a synchronized tagged type.>>
+
+
 !corrigendum 3.9(2)
 
 @drepl
 A record type or private type that has the reserved word @b<tagged> in its
-declaration is called a @i<tagged type>. When deriving from a tagged type,
+declaration is called a @i<tagged> type. When deriving from a tagged type,
 additional components may be defined. As for any derived type, additional
 primitive subprograms may be defined, and inherited primitive subprograms may
-be overridden. The derived type is called an extension of the ancestor type, or
-simply a type extension. Every type extension is also a tagged type, and is
-either a record extension or a private extension of some other tagged type. A
-record extension is defined by a @fa<derived_type_definition> with a
-@fa<record_extension_part>. A private extension, which is a partial view of a
-record extension, can be declared in the visible part of a package (see 7.3) or
-in a generic formal part (see 12.5.1).
+be overridden. The derived type is called an @i<extension> of the ancestor type,
+or simply a @i<type extension>. Every type extension is also a tagged type,
+and is either a @i<record extension> or a @i<private extension> of some other
+tagged type. A record extension is defined by a @fa<derived_type_definition>
+with a @fa<record_extension_part>. A private extension, which is a partial
+view of a record extension, can be declared in the visible part of a package
+(see 7.3) or in a generic formal part (see 12.5.1).
 @dby
 A record type or private type that has the reserved word @b<tagged> in
-its declaration is called a @i<tagged type>. In addition, an interface
+its declaration is called a @i<tagged> type. In addition, an interface
 type is a tagged type (see 3.9.4). When deriving from a tagged
 type, as for any derived type, additional primitive subprograms may
 be defined, and inherited primitive subprograms may be overridden.
-The derived type is called an extension of its ancestor type(s), or
-simply a type extension.
+The derived type is called an @i<extension> of its ancestor type(s), or
+simply a @i<type extension>.
 
-Every type extension is also a tagged type, and is either a record
-extension of some other tagged type, a private extension, or a
+Every type extension is also a tagged type, and is either a @i<record
+extension> of some other tagged type, a @i<private extension>, or a
 task or protected type derived from an interface type (a synchronized tagged
 type @emdash see 3.9.4). A record extension is defined by a
 @fa<derived_type_definition> with a @fa<record_extension_part> (see 3.9.1),
@@ -980,6 +1130,33 @@
 12.3), these rules apply also in the private part of an instance of a generic
 unit.
 
+!corrigendum 3.9.2(20)
+
+@drepl
+For the execution of a call on a dispatching operation, the body executed
+is the one for the corresponding primitive subprogram of the specific type
+identified by the controlling tag value. The body for an explicitly
+declared dispatching operation is the corresponding explicit body for the
+subprogram. The body for an implicitly declared dispatching operation that
+is overridden is the body for the overriding subprogram, even if
+the overriding occurs in a private part. The body for an inherited dispatching
+operation that is not overridden is the body of the
+corresponding subprogram of the parent or ancestor type.
+@dby
+For the execution of a call on a dispatching operation, the body executed
+is the one for the corresponding primitive subprogram of the specific type
+identified by the controlling tag value. The body for an explicitly
+declared dispatching operation is the corresponding explicit body for the
+subprogram. The body for an implicitly declared dispatching operation that
+is overridden is the body for the overriding subprogram, even if
+the overriding occurs in a private part. Similarly, the body for an
+implicitly declared dispatching operation that is implemented by an
+entry (see 9.1) or protected operation (see 9.4) is the body for the
+implemented entry or operation. The body for an inherited dispatching
+operation that is not overridden or implemented is the body of the
+corresponding subprogram of the parent or ancestor type.
+
+
 !corrigendum 3.9.3(1)
 
 @drepl
@@ -1084,7 +1261,7 @@
 For each primitive subprogram inherited by the type declared by a
 @fa<task_type_declaration>, at most one of the following shall apply:
 
-@xbullet<the inherited subprogram shall be overridden with a primitive
+@xbullet<the inherited subprogram is overridden with a primitive
 subprogram of the task type, in which case the overriding
 subprogram shall be subtype conformant with the inherited
 subprogram and not abstract; or>
@@ -1231,8 +1408,20 @@
 call is an entry call or a call on a procedure implemented by an entry, the
 entry call is then issued. Otherwise, the call proceeds as described in 6.4 for
 a procedure call, followed by the @fa<sequence_of_statements> of the
-@fa<entry_call_alternative>, and the @fa<delay_alternative>
-@fa<sequence_of_statements> is ignored.
+@fa<entry_call_alternative>, and the @fa<sequence_of_statements> of the
+@fa<delay_alternative> is ignored.
+
+!corrigendum 9.7.3(1)
+
+@drepl
+A @fa<conditional_entry_call> issues an entry call that is then cancelled if it
+is not selected immediately (or if a requeue-with-abort of the call is not
+selected immediately).
+@dby
+A @fa<conditional_entry_call> issues an entry call that is then cancelled if it
+is not selected immediately (or if a requeue-with-abort of the call is not
+selected immediately). A procedure call may appear rather than an entry call
+for cases where the procedure might be implemented by an entry.
 
 !corrigendum 9.7.4(4)
 
@@ -5327,6 +5516,59 @@
 
 But I think that in this case it is awful late for such a change in the
 language, and even later for the more general root types.
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Saturday, May 7, 2005  9:49 AM
+
+Just adding interface under tagged doesn't seem right.
+I would suggest redoing the type hierarchy. (This is related
+to AI-251.) [Editor's note: Really to AI-345, since it mentions synchronized
+interfaces.]
+
+!wording
+
+Replace 3.2(12/2-13) with the following:
+
+    all types
+       elementary
+          scalar
+             discrete
+                enumeration
+                   character
+                   boolean
+                   other enumeration
+                integer
+                   signed integer
+                   modular integer
+             real
+                floating point
+                fixed point
+                   ordinary fixed point
+                   decimal fixed point
+          access
+             access-to-object
+             access-to-subprogram
+       composite
+          noninterface
+             array
+                string
+                other array
+             record
+             task
+             protected
+          interface
+             nonlimited interface
+             limited interface
+                synchronized interface
+                   task interface
+                   protected interface
+
+
+    There are other classes, such as "numeric" and "tagged," which
+    represent other classification dimensions, but do not fit
+    into the above strictly hierarchical picture.
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent