CVS difference for arm/source/12.mss

Differences between 1.56 and version 1.57
Log of other versions for file arm/source/12.mss

--- arm/source/12.mss	2005/10/25 05:47:11	1.56
+++ arm/source/12.mss	2005/10/28 05:45:37	1.57
@@ -1,10 +1,10 @@
 @Part(12, Root="ada.mss")
 
-@Comment{$Date: 2005/10/25 05:47:11 $}
+@Comment{$Date: 2005/10/28 05:45:37 $}
 @LabeledSection{Generic Units}
 
 @Comment{$Source: e:\\cvsroot/ARM/Source/12.mss,v $}
-@Comment{$Revision: 1.56 $}
+@Comment{$Revision: 1.57 $}
 
 @begin{Intro}
 @Defn{generic unit}
@@ -714,7 +714,9 @@
 declares a view of the actual,
 the name will denote a view of the actual.
 
-Other properties of the copy (for example, staticness, classes to
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+Other properties of the copy (for example, staticness,
+@Chg{Version=[2],New=[categories],Old=[classes]} to
 which types belong) are recalculated for each instance;
 this is implied by the fact that it's a copy.
 
@@ -723,7 +725,7 @@
 the declarations in the @nt{generic_formal_part} are only visible
 outside the instance in the case of a generic formal package whose
 @nt{formal_package_actual_part} @Chg{Version=[2],New=[includes one or more
-<>],Old=[is (<>)]}
+<> indicators],Old=[is (<>)]}
 @em see @RefSecNum{Formal Packages}.
 @end{Discussion}
 
@@ -787,8 +789,8 @@
 declaration of the actual.
 @begin{Ramification}
   In an instance,
-  there are no @lquotes@;properties@rquotes@; of types and subtypes that come from
-  the formal.
+  there are no @lquotes@;properties@rquotes@; of types and subtypes
+  that come from the formal.
   The primitive operations of the type come from the
   formal, but these are declarations in their own right,
   and are therefore handled separately.
@@ -903,8 +905,10 @@
 
 AI83-00398.
 
-Since an actual type is always in the class determined for the formal,
-the new subprograms hide all of the copied ones,
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+Since an actual type is always in the @Chg{Version=[2],New=[category, and thus
+the derivation ],Old=[]}class@Chg{Version=[2],New=[,],Old=[]} determined for
+the formal, the new subprograms hide all of the copied ones,
 except for a declaration of "/=" that corresponds to an explicit
 declaration of "=".
 Such "/=" operators are special, because unlike other implicit
@@ -1518,8 +1522,10 @@
 @LabeledClause{Formal Types}
 
 @begin{Intro}
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
 @redundant[A generic formal subtype can be used to pass to a generic unit
-a subtype whose type is in a certain class of types.]
+a subtype whose type is in a certain @Chg{Version=[2],New=[category],
+Old=[class]} of types.]}
 @begin{Reason}
 We considered having intermediate syntactic categories
 @nt{formal_integer_type_definition},
@@ -1583,18 +1589,22 @@
 of a generic formal type is not a generic formal subtype.
 @end{Ramification}
 
-@Defn{determined class for a formal type}
-@Defn{class determined for a formal type}
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+@Chg{Version=[2],New=[@Defn{determined category for a formal type}
+@Defn{category determined for a formal type}],
+Old=[@Defn{determined class for a formal type}
+@Defn{class determined for a formal type}]}
 The form of a @nt{formal_type_definition} @i{determines a
-class} to which the formal type belongs.
+@Chg{Version=[2],New=[category],Old=[class]}} to which the formal type belongs.
 For a @nt{formal_private_type_definition} the reserved words
-@key{tagged} and @key{limited} indicate the class
+@key{tagged} and @key{limited} indicate the @Chg{Version=[2],New=[category],Old=[class]}
 (see @RefSecNum{Formal Private and Derived Types}).
-For a @nt{formal_derived_type_definition} the class is
+For a @nt{formal_derived_type_definition} the
+@Chg{Version=[2],New=[category],Old=[class]} is
 the derivation class rooted at the ancestor type.
 For other formal types,
 the name of the syntactic category indicates the
-class;
+@Chg{Version=[2],New=[category],Old=[class]};
 a @nt{formal_discrete_type_definition} defines a discrete type,
 and so on.
 @begin{Reason}
@@ -1602,49 +1612,70 @@
 @nt{formal_type_definition} given above.
 Adding @nt{formal_integer_type_definition} and others would make this
 rule harder to state clearly.
+
+@ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+@ChgAdded{Version=[2],Text=[We use @lquotes@;category@rquote rather than
+@lquotes@;class@rquotes above, as not all of these categories are closed
+under derivation. For instance, limited and interface are categories that do
+not form classes.]}
 @end{Reason}
 @end{StaticSem}
 
 @begin{Legality}
-The actual type shall be in the class determined for the formal.
-@begin{Ramification}
-For example, if the class determined for the formal is the class of
-all discrete types, then the actual has to be discrete.
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+The actual type shall be in the @Chg{Version=[2],New=[category],Old=[class]}
+determined for the formal.
+@begin{Ramification}
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+For example, if the @Chg{Version=[2],New=[category],Old=[class]} determined
+for the formal is the @Chg{Version=[2],New=[category],Old=[class]} of all
+discrete types, then the actual has to be discrete.
 
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
 Note that this rule does not require the actual to belong to every
-class to which the formal belongs.
-For example, formal private types are in the class of composite types,
+@Chg{Version=[2],New=[category],Old=[class]} to which the formal belongs.
+For example, formal private types are in the
+@Chg{Version=[2],New=[category],Old=[class]} of composite types,
 but the actual need not be composite.
-Furthermore, one can imagine an infinite number of classes that are just
-arbitrary sets of types that obey the closed-under-derivation rule,
-and are therefore technically classes
+Furthermore, one can imagine an infinite number of @Chg{Version=[2],
+New=[categories],Old=[classes]} that are just
+arbitrary sets of types @Chg{Version=[2],New=[],Old=[that obey the
+closed-under-derivation rule,
+and are therefore technically classes]}
 (even though we don't give them names,
 since they are uninteresting).
-We don't want this rule to apply to @i{those} classes.
+We don't want this rule to apply to @i{those}
+@Chg{Version=[2],New=[categories],Old=[classes]}.
 
-@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00114-01]}
-@lquotes@;Limited@rquotes@; is not @Chg{Version=[2],New=[a],Old=[an]}
-@lquotes@;interesting@rquotes@; class, but @lquotes@;nonlimited@rquotes@; is;
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00114-01],ARef=[AI95-00442-01]}
+@lquotes@;Limited@rquotes@; is not @Chg{Version=[2],New=[an],Old=[a]}
+@lquotes@;interesting@rquotes@; @Chg{Version=[2],New=[category],Old=[class]},
+but @lquotes@;nonlimited@rquotes@; is;
 it is legal to pass a nonlimited type to a limited formal type,
 but not the other way around.
-The reserved word @nt{limited} really represents a class containing
+The reserved word @nt{limited} really represents a
+@Chg{Version=[2],New=[category],Old=[class]} containing
 both limited and nonlimited types.
-@lquotes@;Private@rquotes@; is not a class; a generic formal private type accepts
+@lquotes@;Private@rquotes@; is not a @Chg{Version=[2],New=[category for this purpose],
+Old=[class]}; a generic formal private type accepts
 both private and nonprivate actual types.
 
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
 It is legal to pass a class-wide subtype as the actual
-if it is in the right class,
+if it is in the right @Chg{Version=[2],New=[category],Old=[class]},
 so long as the formal has unknown discriminants.
 @end{Ramification}
 @end{Legality}
 
 @begin{StaticSem}
 @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0037],ARef=[AI95-00043-01]}
-@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00233-01]}
-@Redundant[The formal type also belongs to each class that contains
-the determined class.]
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00233-01],ARef=[AI95-00442-01]}
+@Redundant[The formal type also belongs to each
+@Chg{Version=[2],New=[category],Old=[class]} that contains
+the determined @Chg{Version=[2],New=[category],Old=[class]}.]
 The primitive subprograms of the type are as for any
-type in the determined class. For a formal type other than a formal
+type in the determined @Chg{Version=[2],New=[category],Old=[class]}. For a
+formal type other than a formal
 derived type, these are the predefined operators of the type@Chg{New=[.
 For an elementary formal type, the predefined operators are implicitly declared
 immediately after the declaration of the formal type. For a composite formal
@@ -1661,17 +1692,25 @@
 @Redundant[The rules specific to formal derived types are given
 in @RefSecNum{Formal Private and Derived Types}.]
 @begin{Ramification}
-All properties of the type are as for any type in the class.
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+All properties of the type are as for any type in the @Chg{Version=[2],New=[category],Old=[class]}.
 Some examples:
 The primitive operations available are as defined by the language for each
-class.
+@Chg{Version=[2],New=[category],Old=[class]}.
 The form of @nt{constraint} applicable to a formal type in a
-@nt{subtype_indication} depends on the class of the type as for a
+@nt{subtype_indication} depends on the @Chg{Version=[2],New=[category],Old=[class]} of the type as for a
 nonformal type.
 The formal type is tagged if and only if it is declared as a tagged
 private type, or as a type derived from a (visibly) tagged type.
 (Note that the actual type might be tagged even if the formal type is
 not.)
+
+@ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+@ChgAdded{Version=[2],Text=[Recall that all categories to which a type
+belongs includes the categories that are @lquotes@;classes@rquotes;
+(see @RefSecNum{Derived Types and Classes}). So all of the
+properties of any interesting class implied by the formal type definition
+apply to the formal type.]}
 @end{Ramification}
 @end{StaticSem}
 
@@ -1758,18 +1797,32 @@
   @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251-01]}
   @ChgAdded{Version=[2],Text=[Formal interface types are defined; see
   @RefSec{Formal Interface Types}.]}
+
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[We use @lquotes@;determines a category@rquotes
+  rather than class, since not all interesting properties form a class.]}
 @end{DiffWord95}
 
 
 @LabeledSubClause{Formal Private and Derived Types}
 
 @begin{Intro}
-@Redundant[The class determined for a formal private type
-can be either
-limited or nonlimited, and either tagged or untagged;
-no more specific class is known for such a type.
-The class determined for a formal derived type is the derivation class
-rooted at the ancestor type.]
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+@Redundant[@Chg{Version=[2],New=[In its most general form, the category],
+Old=[The class]}
+determined for a formal private type @Chg{Version=[2],New=[is all types,
+but it can be restricted to only nonlimited types or to only tagged types],
+Old=[can be either limited or nonlimited, and either tagged or untagged;
+no more specific class is known for such a type]}.
+The @Chg{Version=[2],New=[category],Old=[class]} determined for a formal
+derived type is the derivation class rooted at the ancestor type.]
+@begin{TheProof}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[The first rule is given normatively below,
+  and the second rule is given normatively in
+  @RefSecNum{Formal Types}; they are repeated here to give a capsule
+  summary of what this subclause is about.]}
+@end{TheProof}
 @end{Intro}
 
 @begin{Syntax}
@@ -1831,6 +1884,12 @@
 @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00251-01],ARef=[AI95-00401-01]}
 @ChgAdded{Version=[2],Text=[The actual type for a generic formal derived type
 shall be a descendant of every progenitor of the formal type.]}
+@begin{Ramification}
+  @ChgRef{Version=[2],Kind=[AddedNormal]}
+  @ChgAdded{Version=[2],Text=[The actual type has to be a descendant of the
+  parent type, in order that it be in the correct class. So we don't have to
+  mention that explicitly.]}
+@end{Ramification}
 
 If the formal subtype is definite, then the actual subtype shall
 also be definite.
@@ -1921,14 +1980,17 @@
 @end{Legality}
 
 @begin{StaticSem}
-@leading@;The class determined for a formal private type is as follows:
+@leading@;@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+The @Chg{Version=[2],New=[category],Old=[class]} determined for a formal
+private type is as follows:
+@ChgRef{Version=[2],Kind=[Revised]}
 @TabClear{}@Tabset(P32)
 @begin{Display}
-@i(Type Definition) @\@i(Determined Class)@*
-@key{limited private} @\the class of all types
-@key{private} @\the class of all nonlimited types
-@key{tagged limited private} @\the class of all tagged types
-@key{tagged private} @\the class of all nonlimited tagged types
+@i(Type Definition) @\@i(Determined @Chg{Version=[2],New=[Category],Old=[Class]})@*
+@key{limited private} @\the @Chg{Version=[2],New=[category],Old=[class]} of all types
+@key{private} @\the @Chg{Version=[2],New=[category],Old=[class]} of all nonlimited types
+@key{tagged limited private} @\the @Chg{Version=[2],New=[category],Old=[class]} of all tagged types
+@key{tagged private} @\the @Chg{Version=[2],New=[category],Old=[class]} of all nonlimited tagged types
 @end{Display}
 
 @Redundant[The presence of the reserved word @key{abstract} determines
@@ -2093,8 +2155,9 @@
 @end{RunTime}
 
 @begin{Notes}
-@Leading@;In accordance with the general rule that the actual type shall
-belong to the class determined for the formal
+@Leading@;@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+In accordance with the general rule that the actual type shall
+belong to the @Chg{Version=[2],New=[category],Old=[class]} determined for the formal
 (see @RefSec(Formal Types)):
 @begin(itemize)
   If the formal type is nonlimited, then so shall be the actual;
@@ -2168,19 +2231,40 @@
   @ChgAdded{Version=[2],Text=[The wording for the declaration of implicit
   operations is corrected to be consistent with @RefSecNum{Private Operations}
   as modified by Corrigendum 1.]}
+
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[We change to
+  @lquotes@;determines a category@rquotes as that is the new terminology
+  (it avoids confusion, since not all interesting properties form a class).]}
 @end{DiffWord95}
 
 
 @LabeledSubClause{Formal Scalar Types}
 
 @begin{Intro}
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
 A @i{formal scalar type} is one defined by any of the
 @nt{formal_type_definition}s in this subclause.
-@Redundant[The class determined for a formal scalar type
-is discrete, signed integer, modular, floating point,
-ordinary fixed point, or decimal.]
+@Redundant[The @Chg{Version=[2],New=[category],Old=[class]} determined for a
+formal scalar type is @Chg{Version=[2],New=[the category of all ],Old=[]}discrete,
+signed integer, modular, floating point, ordinary fixed point, or
+decimal@Chg{Version=[2],New=[ types],Old=[]}.]
+@begin{TheProof}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[The second rule follows from the rule in
+  @RefSecNum{Formal Types} that says that the category is determined by the
+  one given in the name of the syntax production. The effect of the rule
+  is repeated here to give a capsule
+  summary of what this subclause is about.]}
+@end{TheProof}
+@begin{Ramification}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[The @lquotes@;category of a type@rquotes
+  includes any classes that the type belongs to.]}
+@end{Ramification}
 @end{Intro}
 
+
 @begin{Syntax}
 @Syn{lhs=<formal_discrete_type_definition>,rhs="(<>)"}
 
@@ -2217,11 +2301,28 @@
 @nt<formal_modular_type_definition> shall be a modular type.
 @end{Notes}
 
+@begin{DiffWord95}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[We change to
+  @lquotes@;determines a category@rquotes as that is the new terminology
+  (it avoids confusion, since not all interesting properties form a class).]}
+@end{DiffWord95}
+
+
 @LabeledSubClause{Formal Array Types}
 
 @begin{Intro}
-@Redundant[The class determined for a formal array type
-is the class of all array types.]
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+@Redundant[The @Chg{Version=[2],New=[category],Old=[class]} determined for a
+formal array type is the @Chg{Version=[2],New=[category],Old=[class]} of all array types.]
+@begin{TheProof}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[This rule follows from the rule in
+  @RefSecNum{Formal Types} that says that the category is determined by the
+  one given in the name of the syntax production. The effect of the rule
+  is repeated here to give a capsule
+  summary of what this subclause is about.]}
+@end{TheProof}
 @end{Intro}
 
 @begin{Syntax}
@@ -2303,11 +2404,28 @@
 the same is subsumed.
 @end{Incompatible83}
 
+@begin{DiffWord95}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[We change to
+  @lquotes@;determines a category@rquotes as that is the new terminology
+  (it avoids confusion, since not all interesting properties form a class).]}
+@end{DiffWord95}
+
+
 @LabeledSubClause{Formal Access Types}
 
 @begin{Intro}
-@Redundant[The class determined for a formal access type
-is the class of all access types.]
+@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]}
+@Redundant[The @Chg{Version=[2],New=[category],Old=[class]} determined for a
+formal access type is the @Chg{Version=[2],New=[category],Old=[class]} of all access types.]
+@begin{TheProof}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[This rule follows from the rule in
+  @RefSecNum{Formal Types} that says that the category is determined by the
+  one given in the name of the syntax production. The effect of the rule
+  is repeated here to give a capsule
+  summary of what this subclause is about.]}
+@end{TheProof}
 @end{Intro}
 
 @begin{Syntax}
@@ -2415,22 +2533,35 @@
   @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00231-01]}
   @ChgAdded{Version=[2],Text=[Added a matching rule for subtypes that exclude
   null.]}
+
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[We change to
+  @lquotes@;determines a category@rquotes as that is the new terminology
+  (it avoids confusion, since not all interesting properties form a class).]}
 @end{DiffWord95}
 
 
 @LabeledAddedSubClause{Version=[2],Name=[Formal Interface Types]}
 
 @begin{Intro}
-@ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251-01]}
-@ChgAdded{Version=[2],Text=[@Redundant[The class determined for a formal
-interface type is the class of all tagged types.]]}
-
-@begin{Reason}
+@ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251-01],ARef=[AI95-00442-01]}
+@ChgAdded{Version=[2],Text=[@Redundant[The category determined for a formal
+interface type is the category of all interface types.]]}
+@begin{TheProof}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00442-01]}
+  @ChgAdded{Version=[2],Text=[This rule follows from the rule in
+  @RefSecNum{Formal Types} that says that the category is determined by the
+  one given in the name of the syntax production. The effect of the rule
+  is repeated here to give a capsule
+  summary of what this subclause is about.]}
+@end{TheProof}
+@begin{Ramification}
   @ChgRef{Version=[2],Kind=[AddedNormal]}
-  @ChgAdded{Version=[2],Text=[We can't say @lquotes@;the class of all interface
-  types@rquotes because interface types do not form a class @en it is not
-  closed under derivation.]}
-@end{Reason}
+  @ChgAdded{Version=[2],Text=[By saying @lquotes@;category@rquotes rather
+  than @lquotes@;class@rquotes, we
+  require that any actual type be an interface type, not just some type
+  derived from an interface type.]}
+@end{Ramification}
 
 
 @end{Intro}
@@ -2443,17 +2574,6 @@
 
 @begin{Legality}
 
-@ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251]}
-@ChgAdded{Version=[2],Text=[The actual type shall be an interface type.]}
-
-@begin{Reason}
-  @ChgRef{Version=[2],Kind=[AddedNormal]}
-  @ChgAdded{Version=[2],Text=[The class of all tagged types includes
-  non-interface descendants of interface types, as well as types that have
-  nothing to do with interfaces at all. Such types must
-  not match a formal interface.]}
-@end{Reason}
-
 @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251],ARef=[AI95-00401]}
 @ChgAdded{Version=[2],Text=[The actual type shall be a descendant of every
 progenitor of the formal type.]}
@@ -2495,7 +2615,7 @@
 @end{Examples}
 
 @begin{Extend95}
-  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251-01],ARef=[AI95-00345-01],ARef=[AI95-00401-01]}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00251-01],ARef=[AI95-00345-01],ARef=[AI95-00401-01],ARef=[AI95-00442-01]}
   @ChgAdded{Version=[2],Text=[@Defn{extensions to Ada 95}
   The formal interface type is new.]}
 @end{Extend95}

Questions? Ask the ACAA Technical Agent