CVS difference for ais/ai-00345.txt

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

--- ais/ai-00345.txt	2005/02/08 07:12:35	1.18
+++ ais/ai-00345.txt	2005/04/13 05:37:15	1.19
@@ -1,5 +1,6 @@
 !standard  3.09.01    (03)                             04-11-11  AI95-00345/07
 !standard  2.09       (02)
+!standard  3.09       (02)
 !standard  3.09.03    (01)
 !standard  3.09.03    (02)
 !standard  3.09.04    (01)
@@ -177,7 +178,7 @@
 
 In addition, in the case of a protected type, the first parameter of
 an operation implemented by a protected procedure or entry must have
-mode in or in out (and in the case of an access parameter it must be
+mode out or in out (and in the case of an access parameter it must be
 an access to variable parameter).
 
 If the operation does not fit these rules then it has to be implemented
@@ -203,10 +204,10 @@
 say tagged record type where appropriate.
 
 Furthermore, because a dispatching call might be to an entry or to a
-procedure we now permit what appear to be procedure calls in selective
-entry calls which might dispatch to an entry. We also permit calls on
-entries renamed as procedures and formal subprograms since these might
-also be implemented as entries.
+procedure we now permit what appear to be procedure calls in timed,
+conditional, and triggering entry calls which might dispatch to an entry.
+We also permit calls on entries renamed as procedures and formal
+subprograms since these might also be implemented as entries.
 
 The important point to note of course is that we can as usual assume the
 common properties of the class concerned. Thus in the case of a task
@@ -262,6 +263,29 @@
 
        synchronized
 
+Modify 3.9(2) as:
+
+    A record type or private type that has the
+    reserved word tagged in its declaration is called a tagged type. {In
+    addition, an interface type is a tagged type (see 3.9.4).}
+    Redundant:[When deriving from a tagged type, [additional components
+    may be defined. A]{a}s 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] {its}
+    ancestor type{(s)}, or simply a type extension.
+
+    Every type extension is also a
+    tagged type, and is either a record extension {of some other tagged
+    type,}[ or] a private extension{, or a task or protected type
+    derived from an interface type (a synchronized tagged type -- see 3.9.4)}
+    [of some other tagged type]. A record extension is defined by a
+    derived_type_definition with a record_extension_part{ (see 3.9.1),
+    which may include the definition of additional components}. A
+    private extension, which is a partial view of a record extension {or
+    of a synchronized tagged type}, can be declared in the visible part
+    of a package (see 7.3) or in a generic formal part (see 12.5.1).
+
+
 Modify the first sentence of 3.9.1(3):
 
     The parent type of a record extension shall not be a class-wide type {nor
@@ -292,7 +316,7 @@
 
     An interface type is an abstract tagged type that provides
     a restricted form of multiple inheritance. A tagged {, task,
-    or protected} type have [multiple] {one or more} interface types as
+    or protected} type may have [multiple] {one or more} interface types as
     ancestors.
 
   Change 3.9.4(2) to:
@@ -747,12 +771,12 @@
 
 Having dropped special syntax for task and protected interfaces and the
 associated abstract entries, we felt it was important not to lose the
-ability to use selective entry calls. Hence, we now permit within a
-selective entry call a dispatching call on a primitive of a limited
-interface type, since it might be implemented by an entry. Having
-loosened this rule, it made sense to allow the use of entries renamed
-as procedures and formal subprograms in these contexts as well, since
-they also might be implemented by an entry.
+ability to use timed, conditional, and triggering entry calls. Hence, we
+now permit within a those entry calls dispatching call on a primitive of
+a limited interface type, since it might be implemented by an entry. Having
+loosened this rule, it made sense to allow the use of entries renamed as
+procedures and formal subprograms in these contexts as well, since they also
+might be implemented by an entry.
 
 To allow an interface to require that it be implemented by a task or
 protected type, we have brought back a bit of special syntax.
@@ -903,6 +927,39 @@
 !comment @dinsl
 !comment @b<synchronized>
 
+!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,
+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).
+@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
+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.
+
+Every type extension is also a tagged type, and is either a record
+extension of some other tagged type, a 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),
+which may include the definition of additional components. A private
+extension, which is a partial view of a record extension or of a
+synchronized tagged type, can be declared in the visible part of a
+package (see 7.3) or in a generic formal part (see 12.5.1).
+
 !corrigendum 3.9.1(3)
 
 @drepl
@@ -963,7 +1020,7 @@
 
 @dinsc
 An interface type is an abstract tagged type that provides a restricted
-form of multiple inheritance. A tagged, task, or protected type have
+form of multiple inheritance. A tagged, task, or protected type may have
 one or more interface types as ancestors.
 
 !corrigendum 6.3.1(24)

Questions? Ask the ACAA Technical Agent