diff --git a/source/02.mss b/source/02.mss index 203fb531..ab443b4c 100644 --- a/source/02.mss +++ b/source/02.mss @@ -1,10 +1,10 @@ @Part(02, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:06 $} @LabeledSection{Lexical Elements} @Comment{$Source: e:\\cvsroot/ARM/Source/02.mss,v $} -@Comment{$Revision: 1.103 $} +@Comment{$Revision: 1.104 $} @begin{Intro} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @@ -21,13 +21,13 @@ described in this @Chg{Version=[3],New=[clause],Old=[section]}.] @begin{Intro} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01],ARef=[AI95-00395-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @Defn{character set} The @Chg{Version=[2],New=[character repertoire for the text of an Ada program consists of the -entire coding space described by the ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]} -Universal @Chg{Version=[5],New=[],Old=[Multiple-Octet ]}Coded -Character Set. This coding space is organized in +entire coding space described by the ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]} +Universal @Chg{Version=[5],New=[coded character set],Old=[Multiple-Octet Coded +Character Set]}. This coding space is organized in @i, each plane comprising 65536 characters.@Defn2{Term=[plane],Sec=[character]} @Defn{character plane}],Old=[only characters allowed outside of @nt{comment}s are the @nt{graphic_character}s and @@ -49,9 +49,9 @@ representation of the space character.]} @begin(Discussion) @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} It is our intent to follow the terminology of -@Chg{Version=[2],New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}],Old=[ISO 10646 BMP]} where +@Chg{Version=[2],New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}],Old=[ISO 10646 BMP]} where appropriate, and to remain compatible with the character classifications defined in @RefSec{Character Handling}.@Chg{Version=[2], New=[],Old=[Note that our definition for @@ -76,11 +76,11 @@ rhs="@Chg{Version=[2],New=<>,Old=<@Synf{identifier_letter} | @Synf{digit} | @Syn @begin{SyntaxText} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00285-01],ARef=[AI95-00395-01]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[2],Text=[A @ntf{character} is defined by this @IntlStdTitle for each cell in the coding space described by -ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}, -regardless of whether or not ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]} allocates a character to that +ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}, +regardless of whether or not ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]} allocates a character to that cell.]} @end{SyntaxText} @end{Syntax} @@ -88,11 +88,11 @@ cell.]} @begin{StaticSem} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01],ARef=[AI95-00395-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0079-1],ARef=[AI05-0262-1],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0444-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0444-1],ARef=[AI12-0450-1]} The@Chg{Version=[2],New=[],Old=[ character repertoire for the text of an Ada program consists of the collection of characters -@Chg{Version=[2],New=[described by the ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}], +@Chg{Version=[2],New=[described by the ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}], Old=[called the Basic Multilingual Plane (BMP) of the ISO 10646]} Universal Multiple-Octet Coded Character Set, plus a set of @ntfs and, in comments only, @@ -100,7 +100,7 @@ a set of @ntfs; the]} coded representation for @Chg{Version=[2],New=[],Old=[these ]}characters is implementation defined @Redundant[(it @Chg{Version=[5],New=[can],Old=[need not]} be a representation @Chg{Version=[5],New=[that is not ],Old=[]}defined -within @Chg{Version=[2],New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}], +within @Chg{Version=[2],New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}], Old=[ISO-10646-1]})].@Chg{Version=[2],New=[ A character whose relative code @Chg{Version=[3],New=[point],Old=[position]} in its plane is 16#FFFE# or 16#FFFF# is not allowed anywhere @@ -121,11 +121,11 @@ characters allowed outside of comments are those in categories @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0266-1],ARef=[AI05-0299-1]} -@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0004-1],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0004-1],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[2],Text=[The semantics of an Ada program whose text is not in Normalization Form @Chg{Version=[5],New=[C],Old=[KC]} (as -defined by @Chg{Version=[3],New=[Clause 21],Old=[section 24]} -of ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}) +defined by @Chg{Version=[3],New=[Clause @Chg{Version=[5],New=[22],Old=[21]}],Old=[section 24]} +of ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}) is implementation defined.]} @ChgImplDef{Version=[5],Kind=[AddedNormal],InitialVersion=[2], Text=[@ChgAdded{Version=[2],Text=[The @@ -154,13 +154,13 @@ semantics of an Ada program whose text is not in Normalization Form @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0266-1],ARef=[AI05-0299-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} The description of the language definition in this @IntlStdName uses the @Chg{Version=[2], New=[character properties General Category, Simple Uppercase Mapping, Uppercase Mapping, and Special Case Condition of the documents referenced by @Chg{Version=[5],New=[],Old=[the note in ]}@Chg{Version=[3],New=[Clause],Old=[section]} @Chg{Version=[5],New=[2],Old=[1]} -of ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}],Old=[graphic symbols +of ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}],Old=[graphic symbols defined for Row 00: Basic Latin and Row 00: Latin-1 Supplement of the ISO 10646 BMP; these correspond to the graphic symbols of ISO 8859-1 (Latin-1); no graphic symbols are used in this @IntlStdName for @@ -185,9 +185,10 @@ characters]} are @Chg{Version=[2],New=[categorized],Old=[defined]} as follows: @begin{Discussion} @ChgRef{Version=[2],Kind=[AddedNormal]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0005-1],ARef=[AI05-0262-1],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[2],Text=[Our character classification considers that the -cells not allocated in ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]} are graphic characters, except for +cells not allocated in ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]} +are graphic characters, except for those whose relative code @Chg{Version=[3],New=[point],Old=[position]} in their plane is 16#FFFE# or 16#FFFF#. This seems to provide the best compatibility with future versions of ISO/IEC 10646, @@ -427,12 +428,12 @@ not to Unicode.]} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @Leading@Chg{Version=[2],New=[],Old=[@Defn{names of @ntf{special_character}s} @Defn2{Term=[special_character],Sec=(names)}]}The following names are used when referring to certain @Chg{Version=[2],New=[characters (the first name is that given in -ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]})],Old=[@ntf{special_character}s]}: +ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]})],Old=[@ntf{special_character}s]}: @Defn{quotation mark} @Defn{number sign} @Defn{ampersand} @@ -470,10 +471,10 @@ Old=[@Defn{left square bracket} @begin{Discussion} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0125-3],ARef=[AI12-0212-1],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0125-3],ARef=[AI12-0212-1],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @Chg{Version=[2],New=[@Defn{graphic symbols}@Defn{glyphs}This table serves to show the correspondence between -ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]} names and the graphic symbols (glyphs) used in this +ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]} names and the graphic symbols (glyphs) used in this @IntlStdName. These are the characters], Old=[These are the ones]} that play a special role in the syntax of Ada@Chg{Version=[2],New=[], @@ -986,10 +987,10 @@ a reserved word.]} @end{Syntax} @begin{Legality} -@ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0004-1],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0004-1],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[5],Text=[An identifier shall only contain characters that may -be present in Normalization Form KC (as defined by Clause 21 of ISO/IEC -10646:2017).]} +be present in Normalization Form KC as defined by Clause 22 of ISO/IEC +10646:2020.]} @begin{ImplNote} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0004-1],ARef=[AI12-0005-1]} @@ -1000,7 +1001,8 @@ be present in Normalization Form KC (as defined by Clause 21 of ISO/IEC (really, one of the possible values is Maybe) are allowed (these are mainly combining marks). The necessary tables can be found in @URLLink{URL=[http://www.unicode.org/Public/UCD/latest/ucd/DerivedNormalizationProps.txt], - Text=[http://www.unicode.org/Public/UCD/latest/ucd/DerivedNormalizationProps.txt]}. Versions for older Unicode versions can be found on this site as + Text=[http://www.unicode.org/Public/UCD/latest/ucd/DerivedNormalizationProps.txt]}. Versions + for older Unicode versions can be found on this site as well; start at @URLLink{URL=[http://www.unicode.org/Public/], Text=[http://www.unicode.org/Public/]} and find the appropriate version number.]} @@ -1010,7 +1012,7 @@ be present in Normalization Form KC (as defined by Clause 21 of ISO/IEC @begin{StaticSem} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0091-1],ARef=[AI05-0227-1],ARef=[AI05-0266-1],ARef=[AI05-0299-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @Comment{Removed the "Type=[Leading]" along with the bullets. Don't have a way to make it doubly conditional (only in Version=[2]), and since it is mainly for spacing, we just forget it.} @@ -1019,7 +1021,7 @@ New=[considered the same if they consist of the same sequence of characters after applying @Chg{Version=[3],New=[locale-independent simple case folding, as defined by documents referenced @Chg{Version=[5],New=[],Old=[in the note ]}in Clause @Chg{Version=[5],New=[2],Old=[1]} of -ISO/IEC 10646:@Chg{Version=[5],New=[2017],Old=[2011]}.@Defn{case insensitive}],Old=[the following transformations +ISO/IEC 10646:@Chg{Version=[5],New=[2020],Old=[2011]}.@Defn{case insensitive}],Old=[the following transformations (in this order):]}],Old=[All characters of an @nt{identifier} are significant, including any underline character. @Defn{case insensitive} @@ -1433,9 +1435,9 @@ lower case or in upper case, with the same meaning. 16#F.FF#E+2 @\2#1.1111_1111_1110#E11 @\--@i{ real literals of value 4095.0} @end{Display}} @begin{Example} -2#1111_1111# 16#FF# 016#0ff# --@ExamCom{ integer literals of value 255} -16#E#E1 2#1110_0000# --@ExamCom{ integer literals of value 224} -16#F.FF#E+2 2#1.1111_1111_1110#E11 --@ExamCom{ real literals of value 4095.0} +2#1111_1111# 16#FF# 016#0ff# --@ExamCom{ integer literals of value 255} +16#E#E1 2#1110_0000# --@ExamCom{ integer literals of value 224} +16#F.FF#E+2 2#1.1111_1111_1110#E11 --@ExamCom{ real literals of value 4095.0} @end{Example} @end{Examples} @@ -1620,7 +1622,7 @@ of a program; their sole purpose is the enlightenment of the human reader. An implementation may support additional (implementation-defined) pragmas.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[pragma], -Def=[a compiler directive to provide control over and above that +Def=[compiler directive to provide control over and above that provided by the other syntactic constructs of the language], Note1=[There are language-defined pragmas that give instructions for optimization, listing control, etc. An diff --git a/source/03a.mss b/source/03a.mss index 2319ec21..3a8a46b5 100644 --- a/source/03a.mss +++ b/source/03a.mss @@ -1,10 +1,10 @@ @Part(03, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:06 $} @LabeledSection{Declarations and Types} @Comment{$Source: e:\\cvsroot/ARM/Source/03a.mss,v $} -@Comment{$Revision: 1.158 $} +@Comment{$Revision: 1.159 $} @begin{Intro} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @@ -82,7 +82,7 @@ declaration).>} implicit declarations, as part of a type declaration. @end{Discussion} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[declaration], -Def=[a language construct that associates a name with (a view of) an entity], +Def=[language construct that associates a name with (a view of) an entity], Note1=[A declaration can appear explicitly in the program text (an explicit declaration), or can be supposed to occur at a given place in the text as a consequence of the semantics of another construct @@ -144,7 +144,7 @@ Text=<@Chg{Version=[2],New=[A view of an entity reveals some or all of the properties of the entity. A single entity may have multiple views.], Old=[(See @b[Definition].)]}>} @ChgTermDef{Version=[5],Kind=(Added),Group=[T],Term=[view of an entity], - Def=[a representation of an entity that reveals some + Def=[representation of an entity that reveals some or all of the properties of the entity], Note1=[A single entity can have multiple views.]} @@ -276,7 +276,7 @@ by this @IntlStdTitle for each construct that has a run-time effect. Execution of a declaration is also called @i(elaboration). Execution of an expression is also called @i(evaluation).>} @ChgTermDef{Version=[5],Kind=(Added),Group=[R],Term=[execution], - Def=[the process by which a construct achieves its run-time effect], + Def=[process by which a construct achieves its run-time effect], Note1=[Execution of a declaration is also called elaboration. Execution of an expression is also called evaluation.]} @begin{Honest} @@ -326,10 +326,10 @@ Text=<@ChgAdded{Version=[2],Text=[The process by which an expression achieves its run-time effect is called evaluation. Evaluation is one of the forms of execution.]}>} @ChgTermDef{Version=[5],Kind=(Added),Group=[R],Term=[elaboration], - Def=[the process by which a declaration achieves its run-time effect], + Def=[process by which a declaration achieves its run-time effect], Note1=[Elaboration is one of the forms of execution.]} @ChgTermDef{Version=[5],Kind=(Added),Group=[R],Term=[evaluation], - Def=[the process by which an expression achieves its run-time effect], + Def=[process by which an expression achieves its run-time effect], Note1=[Evaluation is one of the forms of execution.]} @begin{Honest} @Defn{elaborable} @@ -407,15 +407,12 @@ It becomes a @nt{defining_identifier}, @nt{defining_character_literal}, or @nt{defining_operator_symbol} (or some syntactic category composed of these), to indicate a defining occurrence; -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} It becomes a @nt{direct_name}, in usage occurrences where -the usage is required (in @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Visibility Rules}) to be directly visible; +the usage is required (in @RefSecFullNum{Visibility Rules} to be +directly visible; -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} It becomes a @nt{selector_name}, in usage occurrences -where the usage is required (in -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Visibility Rules}) +where the usage is required (in @RefSecFullNum{Visibility Rules}) to be visible but not necessarily directly visible; It remains an @nt{identifier}, @nt{character_literal}, or @nt{operator_symbol}, @@ -447,8 +444,7 @@ places where one could have used a @nt{selector_name}, not just at places where a @nt{selector_name} was actually used. Thus, the places where a declaration is directly visible are a subset of the places where it is visible. -See @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Visibility Rules} for details.) +See @RefSecFullNum{Visibility Rules} for details.) We use the term @lquotes@;declaration@rquotes@; to cover @ntf<_specification>s that declare (views of) objects, such as @nts. In Ada 83, @@ -538,17 +534,18 @@ a value of the type. @Chg{Version=[3],New=[conditions],Old=[condition]}. The values of a subtype are a subset of the values of its type.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[type], -Def=[a defining characteristic of each object and expression of the +Def=[defining characteristic of each object and expression of the language, with an associated set of values, and a set of primitive operations that implement the fundamental aspects of its semantics], Note1=[Types are grouped into categories. Most language-defined categories of types are also classes of types.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[subtype], -Def=[a type together with optional constraints, null exclusions, +Def=[type together with optional constraints, null exclusions, and predicates, which constrain the values of the type to the subset that satisfies the implied conditions]} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00442-01]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} @Chg{Version=[2],New=[@Defn2{Term=[category], Sec=(of types)}], Old=[]}@Defn2{Term=[class], Sec=(of types)} Types are grouped into @Chg{Version=[2],New=[@i(categories)], @@ -556,7 +553,8 @@ Old=[@i(classes)]} of types@Chg{Version=[2],New=[],Old=[, reflecting the similarity of their values and primitive operations]}. @Defn2{Term=[language-defined class], Sec=(of types)} There exist several @i(language-defined @Chg{Version=[2],New=[categories], -Old=[classes]}) of types (see NOTES below)@Chg{Version=[2],New=[, reflecting +Old=[classes]}) of types (@Chg{Version=[5],New=[summarized in the NOTE], +Old=[see NOTES]} below)@Chg{Version=[2],New=[, reflecting the similarity of their values and primitive operations],Old=[]}.@Chg{Version=[2], New=[@Defn2{Term=[language-defined category], Sec=(of types)} @Redundant[Most categories of types form @i(classes) of types.]],Old=[]} @@ -670,33 +668,33 @@ anyone complains.> for defining recursive data structures.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[class of types], - Def=[a set of types that is @Defn(closed under derivation)closed under + Def=[set of types that is @Defn(closed under derivation)closed under derivation, which means that if a given type is in the class, then all types derived from that type are also in the class], Note1=[The set of types of a class share common properties, such as their primitive operations.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[category of types], - Def=[a set of types with one or more common properties, such as + Def=[set of types with one or more common properties, such as primitive operations], Note1=[A category of types that is closed under derivation is also known as a class.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[elementary type], - Def=[a type that does not have components]} + Def=[type that does not have components]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[composite type], - Def=[a type with components, such as an array or record]} + Def=[type with components, such as an array or record]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[scalar type], Def=[either a discrete type or a real type]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[access type], - Def=[a type that has values that designate aliased objects], + Def=[type that has values that designate aliased objects], Note1=[Access types correspond to @ldquote@;pointer types@rdquote or @ldquote@;reference types@rdquote in some other languages.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[discrete type], - Def=[a type that is either an integer type or an enumeration type]} + Def=[type that is either an integer type or an enumeration type]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[real type], - Def=[a type that has values that are approximations of the real numbers], + Def=[type that has values that are approximations of the real numbers], Note1=[Floating point and fixed point types are real types.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[integer type], - Def=[a type that represents signed or modular integers], + Def=[type that represents signed or modular integers], Note1=[A signed integer type has a base range that includes both positive and negative numbers, and has operations that can raise an exception when the result is outside the base range. A modular type has a base range whose @@ -704,37 +702,47 @@ anyone complains.> semantics. Modular types subsume what are called @ldquote@;unsigned types@rdquote in some other languages.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[enumeration type], - Def=[a type defined by an enumeration of its values, + Def=[type defined by an enumeration of its values, which can be denoted by identifiers or character literals]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[character type], - Def=[an enumeration type whose values include characters]} + Def=[enumeration type whose values include characters]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[record type], - Def=[a composite type consisting of zero or more named components, possibly + Def=[composite type consisting of zero or more named components, possibly of different types]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[record extension], - Def=[a type that extends another type optionally with additional components]} + Def=[type that extends another type optionally with additional components]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[array type], - Def=[a composite type whose components are all of the same type]} + Def=[composite type whose components are all of the same type]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[task type], - Def=[a composite type used to represent active entities which execute + Def=[composite type used to represent active entities which execute concurrently and that can communicate via queued task entries], Note1=[The top-level task of a partition is called the environment task.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[protected type], - Def=[a composite type whose components are accessible only through one of + Def=[composite type whose components are accessible only through one of its protected operations, which synchronize concurrent access by multiple tasks]} + +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[partial view], + Def=[view of a type that reveals only some of its properties], + Note1=[The remaining properties are defined by the full view given elsewhere.]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[full view], + Def=[view of a type that reveals all of its properties], + Note1=[There can be other views of the type that reveal fewer properties.]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[incomplete view], + Def=[view of a type that reveals minimal properties], + Note1=[The remaining properties are defined by the full view given elsewhere.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[private type], - Def=[a view of a type that reveals only some of its properties], - Note1=[The remaining properties are provided by the full view given - elsewhere. Private types can be used for defining abstractions that hide + Def=[type that defines a partial view], + Note1=[Private types can be used for defining abstractions that hide unnecessary details from their clients.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[private extension], - Def=[a type that extends another type, with the additional properties hidden + Def=[type that extends another type, with the additional properties hidden from its clients]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[full type], + Def=[type that defines a full view]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[incomplete type], - Def=[a view of a type that reveals only a few of its properties], - Note1=[The remaining properties are provided by the full view given elsewhere.], - Note2=[Incomplete types can be used for defining recursive data structures.]} + Def=[type that defines an incomplete view], + Note1=[Incomplete types can be used for defining recursive data structures.]} @Defn{scalar type} The elementary types are the @i(scalar) types (@i(discrete) and @i(real)) @@ -872,9 +880,9 @@ Old=[type @i(of) the subtype]}.@Chg{Version=[2],New=[@Defn2{Term=[type], Sec=(of @Defn2{Term=[subtype], Sec=(type of)}],Old=[]} Similarly, the associated constraint is called the @Chg{Version=[2],New=[@i(constraint of the subtype)], -Old=[constraint @i(of) the subtype]}.@Chg{Version=[2],New=[@Defn2{Term=[constraint], Sec=(of a subtype)} -@Defn2{Term=[subtype], Sec=(constraint of)}],Old=[]} The set of -values of a subtype consists of the values of its type +Old=[constraint @i(of) the +subtype]}.@Chg{Version=[2],New=[@Defn2{Term=[constraint], Sec=(of a subtype)}@Defn2{Term=[subtype], Sec=(constraint of)}],Old=[]} +The set of values of a subtype consists of the values of its type that satisfy its constraint@Chg{Version=[2],New=[ and any exclusion of the null value], Old=[]}. @@ -1167,11 +1175,13 @@ type itself. @end{Legality} @begin{StaticSem} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @Defn{first subtype} The @nt{defining_@!identifier} of a @nt{type_@!declaration} denotes the @i(first subtype) of the type. The @nt, if any, -defines the discriminants of the type (see @RefSec(Discriminants)). +defines the discriminants of the type +(see @Chg{Version=[5],New=[@RefSecNum(Discriminants)],Old=[@RefSec(Discriminants)]}). The remainder of the @nt defines the remaining characteristics of (the view of) the type. @@ -1227,11 +1237,13 @@ of some full type.] separately, as it may occur in renames, which do not declare objects.]} @end{Reason} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @PDefn{predefined operator} The definition of a type implicitly declares certain @i(predefined operators) that operate on the type, according to what classes the type belongs, -as specified in @RefSec(Operators and Expression Evaluation). +as specified in @Chg{Version=[5],New=[@RefSecNum(Operators and Expression Evaluation)], +Old=[@RefSec(Operators and Expression Evaluation)]}. @begin{Discussion} We no longer talk about the implicit declaration of basic operations. These are treated like an @nt{if_statement} @em they don't need @@ -1286,14 +1298,12 @@ creates a distinct type and its first subtype. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of type definitions:) @begin(Example) -(White, Red, Yellow, Green, Blue, Brown, Black) +@trailing@;(White, Red, Yellow, Green, Blue, Brown, Black) @key(range) 1 .. 72 @key(array)(1 .. 10) @key(of) Integer @end(Example) -@begin{WideAbove} @leading@keepnext@NewExample@i(Examples of type declarations:) -@end{WideAbove} @begin(Example) @key(type) Color @key(is) (White, Red, Yellow, Green, Blue, Brown, Black); @key(type) Column @key(is) @key(range) 1 .. 72; @@ -1474,14 +1484,14 @@ unconstrained (see @RefSecNum{Index Constraints and Discrete Ranges} and @Leading@keepnext@NewExample@i(Examples of subtype declarations:) @begin(Example) @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} -@key(subtype) Rainbow @key(is) Color @key(range) Red .. Blue; --@ExamCom[ see @RefSecNum(Type Declarations)] +@key(subtype) Rainbow @key(is) Color @key(range) Red .. Blue; --@ExamCom[ see @RefSecNum(Type Declarations)] @key(subtype) Red_Blue @key(is) Rainbow; @key(subtype) Int @key(is) Integer; @key(subtype) Small_Int @key(is) Integer @key(range) -10 .. 10; -@key(subtype) Up_To_K @key(is) Column @key(range) 1 .. K; --@ExamCom[ see @RefSecNum(Type Declarations)] -@key(subtype) Square @key(is) Matrix(1 .. 10, 1 .. 10); --@ExamCom[ see @RefSecNum(Array Types)] -@key(subtype) Male @key(is) Person(Sex => M); --@ExamCom[ see @RefSecNum(Incomplete Type Declarations)]@Chg{Version=[2],New=[ -@key(subtype) Binop_Ref @key(is not null) Binop_Ptr; --@ExamCom[ see @RefSecNum(Access Types)]],Old=[]} +@key(subtype) Up_To_K @key(is) Column @key(range) 1 .. K; --@ExamCom[ see @RefSecNum(Type Declarations)] +@key(subtype) Square @key(is) Matrix(1 .. 10, 1 .. 10); --@ExamCom[ see @RefSecNum(Array Types)] +@key(subtype) Male @key(is) Person(Sex => M); --@ExamCom[ see @RefSecNum(Incomplete Type Declarations)]@Chg{Version=[2],New=[ +@key(subtype) Binop_Ref @key(is not null) Binop_Ptr; --@ExamCom[ see @RefSecNum(Access Types)]],Old=[]} @end(Example) @end{Examples} @@ -1560,7 +1570,7 @@ primitive subprograms. in which case the subprogram body invoked is determined at run time.>} @ChgTermDef{Version=[5],Kind=(Added),Group=[T],Term=[primitive operations of a type], - Def=[the operations (such as subprograms) + Def=[operations (such as subprograms) declared together with the type declarations], Note1=[Primitive operations are inherited by other types in the same derivation class of types.]} @@ -1703,7 +1713,7 @@ subtypes. A @i{predicate specification} is an @nt{aspect_specification} for one of the two predicate aspects.@Defn{predicate aspect}@Defn{predicate specification}@PDefn2{Term=[aspect],Sec=(predicate)}@AspectDefn{Static_Predicate}@AspectDefn{Dynamic_Predicate} General rules for aspects and @nt{aspect_specification}s are found in -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Representation Issues} (@RefSecNum{Operational and Representation Aspects} +@RefSecFullNum{Representation Issues} (@RefSecNum{Operational and Representation Aspects} and @RefSecNum{Aspect Specifications} respectively).@Chg{Version=[5],New=[ The predicate aspects are assertion aspects (see @RefSecNum{Pragmas Assert and Assertion_Policy}). @Redundant[The predicate aspects are not inherited, but their effects are additive, @@ -2198,7 +2208,7 @@ predicates applied to scalar types:}]} @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0054-2]} @ChgAdded{Version=[4],Text=[@key[subtype] Basic_Letter @key[is] Character -- @examcom[See @RefSecNum{The Package Characters.Handling} for "basic letter".] @key[with] Static_Predicate => Basic_Letter @key[in] 'A'..'Z' | 'a'..'z' | '@latin1(198)' | - '@latin1(230)' | '@latin1(208)' | '@latin1(240)' | '@latin1(222)' | '@latin1(254)' | '@latin1(223)';]} + '@latin1(230)' | '@latin1(208)' | '@latin1(240)' | '@latin1(222)' | '@latin1(254)' | '@latin1(223)';]} @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0054-2]} @ChgAdded{Version=[4],Text=[@key[subtype] Even_Integer @key[is] Integer @@ -2352,7 +2362,7 @@ All of the following are objects: A formal parameter is (a view of) an object. A subcomponent of an object is an object.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[object], - Def=[an entity that contains a value, and is either a constant or a variable], + Def=[entity that contains a value, and is either a constant or a variable], Note1=[An object is created by an @nt(object_declaration) or by an @nt(allocator). A formal parameter is (a view of) an object. A subcomponent of an object is an object.]} @@ -2643,9 +2653,8 @@ A component cannot have an indefinite nominal subtype.] @ChgToGlossary{Version=[5],Kind=[Added],Term=, Text=<@ChgAdded{Version=[5],Text=[The nominal subtype of a view of an object is the subtype specified when the view is defined.]}>} -@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T], - Term=[nominal subtype of a view of an object], - Def=[the subtype specified when the view is defined]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[nominal subtype], + Def=[subtype specified when a view of an object is defined]} @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0008-1]} @ChgAdded{Version=[3],Type=[Leading],Text=[A view of a composite object is @@ -2980,6 +2989,7 @@ of a limited type.]} @begin{StaticSem} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0264-1],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} An @nt with the reserved word @key(constant) declares a constant object. @Defn{full constant declaration} @@ -2988,8 +2998,9 @@ then it is called a @i(full constant declaration). @Defn{deferred constant declaration} Otherwise@Chg{Version=[3],New=[,],Old=[]} it is called a @i(deferred constant declaration). -The rules for deferred constant declarations are given in @Chg{Version=[3],New=[subclause],Old=[clause]} -@RefSecNum(Deferred Constants). The rules for full constant declarations +The rules for deferred constant declarations are given in +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Deferred Constants). +The rules for full constant declarations are given in this subclause. Any declaration that includes a @nt{defining_identifier_list} @@ -3090,7 +3101,8 @@ its nominal subtype, as follows: that has the Default_Value aspect specified is the value of that aspect converted to the nominal subtype (which @Chg{Version=[5],New=[can],Old=[might]} raise Constraint_Error @em see - @RefSec{Type Conversions});@PDefn2{Term=[implicit subtype conversion], + @ISODiff{NotISO=[@RefSecFull{Type Conversions}], + ISOOnly=[@RefSecFullNum{Type Conversions}]});@PDefn2{Term=[implicit subtype conversion], Sec=(default value of a scalar)}]} @begin{Ramification} @@ -3388,25 +3400,23 @@ be abstract (see @RefSecNum{Abstract Types and Subprograms}). @begin{Examples} @Leading@keepnext@NewExample@i(Example of a multiple object declaration:) @begin(Example) ---@ExamCom[ the multiple object declaration ] +--@ExamCom[ the multiple object declaration] @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} -John, Paul : @Chg{Version=[2],New=[@key{not null} ],Old=[]}Person_Name := @key(new) Person(Sex => M); --@ExamCom[ see @RefSecNum(Incomplete Type Declarations)] +John, Paul : @Chg{Version=[2],New=[@key{not null} ],Old=[]}Person_Name := @key(new) Person(Sex => M); -- @ExamCom[see @RefSecNum(Incomplete Type Declarations)] ---@ExamCom[ is equivalent to the two single object declarations in the order given] +--@ExamCom[ is equivalent to the two single object declarations in the order given] -@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} +@trailing@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} John : @Chg{Version=[2],New=[@key{not null} ],Old=[]}Person_Name := @key(new) Person(Sex => M); Paul : @Chg{Version=[2],New=[@key{not null} ],Old=[]}Person_Name := @key(new) Person(Sex => M); @end(Example) -@begin{WideAbove} @leading@keepnext@NewExample@i(Examples of variable declarations:) -@end{WideAbove} @begin(Example) @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0430-1]} -Count, Sum : Integer; +@trailing@;Count, Sum : Integer; Size : Integer @key(range) 0 .. 10_000 := 0; Sorted : Boolean := False; Color_Table : @key(array)(1 .. Max) @key(of) Color; @@ -3415,9 +3425,7 @@ Hello : @Chg{Version=[2],New=[@key(aliased)],Old=[@key(constant)]} String @unicode(952), @unicode(966) : Float @b -@pi .. +@pi;],Old=[]} @end(Example) -@begin{WideAbove} @leading@keepnext@NewExample@i(Examples of constant declarations:) -@end{WideAbove} @begin(Example) @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0425-1]} @@ -3549,6 +3557,7 @@ without an initialization expression. A @nt declares a named number. @begin{Discussion} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @Defn{static} If a value or other property of a construct is required to be @i(static) that means it is required to be determined prior @@ -3556,8 +3565,8 @@ to execution. A @i(static) expression is an expression whose value is computed at compile time and is usable in contexts where the actual value might affect the legality of the construct. -This is fully defined in @Chg{Version=[3],New=[subclause],Old=[clause]} -@RefSecNum(Static Expressions and Static Subtypes). +This is fully defined in @Chg{Version=[5],New=[], +Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Static Expressions and Static Subtypes). @end{Discussion} @end{Intro} @@ -3590,9 +3599,10 @@ aspect, in which case it is interpreted to be of its expected type.]} @begin{Legality} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The @i(static_)@nt{expression} given for a number declaration -shall be a static expression, as defined by @Chg{Version=[3],New=[subclause],Old=[clause]} -@RefSecNum(Static Expressions and Static Subtypes). +shall be a static expression, as defined by +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Static Expressions and Static Subtypes). @end{Legality} @begin{StaticSem} @@ -3618,13 +3628,14 @@ The elaboration of a @nt has no effect. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of number declarations:) @begin(Example) -Two_Pi : @key(constant) := 2.0*Ada.Numerics.Pi; --@ExamCom[ a real number (see @RefSecNum{The Numerics Packages})] +Two_Pi : @key(constant) := 2.0*Ada.Numerics.Pi; + --@ExamCom[ a real number (see @RefSecNum{The Numerics Packages})] @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} -Max : @key(constant) := 500; --@ExamCom[ an integer number] -Max_Line_Size : @key(constant) := Max/6@Chg{Version=[2],New=[;],Old=[ ]} --@ExamCom[ the integer 83] -Power_16 : @key(constant) := 2**16; --@ExamCom[ the integer 65_536] -One, Un, Eins : @key(constant) := 1; --@ExamCom[ three different names for 1] +Max : @key(constant) := 500; --@ExamCom[ an integer number] +Max_Line_Size : @key(constant) := Max/6@Chg{Version=[2],New=[;],Old=[ ]} --@ExamCom[ the integer 83] +Power_16 : @key(constant) := 2**16; --@ExamCom[ the integer 65_536] +One, Un, Eins : @key(constant) := 1; --@ExamCom[ three different names for 1] @end(Example) @end{Examples} @@ -3682,7 +3693,7 @@ Old=[@i(parent type)]}. A type together with the types derived from it (directly or indirectly) form a derivation class.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[derived type], - Def=[a type defined in terms of a parent type and zero or + Def=[type defined in terms of a parent type and zero or more progenitor types given in a derived type definition], Note1=[A derived type inherits properties such as components and primitive operations from its parent and progenitors.], @@ -3738,7 +3749,7 @@ has one parent type and zero or more progenitor types.],Old=[]} first type given in the definition of the derived type. The parent can be almost any kind of type, including an interface type.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[parent of a derived type], - Def=[the first ancestor type given in the definition of the derived type], + Def=[first ancestor type given in the definition of the derived type], Note1=[The parent can be almost any kind of type, including an interface type.]} @@ -4328,12 +4339,12 @@ A @nt{derived_type_definition}, however, never defines an interface type.]} @begin{Examples} @Leading@keepnext@NewExample@i(Examples of derived type declarations:) @begin(Example) -@key(type) Local_Coordinate @key(is) @key(new) Coordinate; --@ExamCom[ two different types] -@key(type) Midweek @key(is) @key(new) Day @key(range) Tue .. Thu; --@ExamCom[ see @RefSecNum(Enumeration Types)] -@key(type) Counter @key(is) @key(new) Positive; --@ExamCom[ same range as Positive ] +@key(type) Local_Coordinate @key(is) @key(new) Coordinate; -- @ExamCom[two different types] +@key(type) Midweek @key(is) @key(new) Day @key(range) Tue .. Thu; -- @ExamCom[see @RefSecNum(Enumeration Types)] +@key(type) Counter @key(is) @key(new) Positive; -- @ExamCom[same range as Positive ] -@key(type) Special_Key @key(is) @key(new) Key_Manager.Key; --@ExamCom[ see @RefSecNum(Private Operations)] - --@ExamCom[ the inherited subprograms have the following specifications: ] +@key(type) Special_Key @key(is) @key(new) Key_Manager.Key; -- @ExamCom[see @RefSecNum(Private Operations)] + --@ExamCom[ the inherited subprograms have the following specifications:] --@ExamCom[ procedure Get_Key(K : out Special_Key);] --@ExamCom[ function "<"(X,Y : Special_Key) return Boolean;] @end(Example) @@ -4691,13 +4702,13 @@ has a unique ultimate ancestor.],Old=[]} ancestor are inverse relationships.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[ancestor of a type], - Def=[the type itself or, in the case of a type derived from other types, + Def=[type itself or, in the case of a type derived from other types, its parent type or one of its progenitor types or one of their ancestors], Note1=[Ancestor and descendant are inverse relationships.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[descendant of a type], - Def=[the type itself or a type derived (directly or indirectly) from it], + Def=[type itself or a type derived (directly or indirectly) from it], Note1=[Descendant and ancestor are inverse relationships.]} @Defn2{Term=[inherited], Sec=(from an ancestor type)} @@ -4831,10 +4842,11 @@ are expected to be of the type of the @nt. something else like @nts. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} We say "the expected type is ..." or "the type is expected to be ..." depending on which reads better. They are fundamentally equivalent, - and both feed into the type resolution rules of @Chg{Version=[3],New=[subclause],Old=[clause]} - @RefSecNum(The Context of Overload Resolution). + and both feed into the type resolution rules of + @Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(The Context of Overload Resolution). In some cases, it doesn't work to use expected types. For example, in the above rule, we say that @@ -6122,7 +6134,7 @@ the ambiguity (see @RefSecNum(Qualified Expressions)). @end{Notes} @begin{Examples} -@Leading@keepnext@NewExample@i(Examples of enumeration types and subtypes: ) +@Leading@keepnext@NewExample@i(Examples of enumeration types and subtypes:) @begin(Example) @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0386-1]} @key(type) Day @key(is) (Mon, Tue, Wed, Thu, Fri, Sat, Sun);@Chg{Version=[5],New=[ @@ -6139,7 +6151,8 @@ the ambiguity (see @RefSecNum(Qualified Expressions)). @key(subtype) Weekday @key(is) Day @key(range) Mon .. Fri; @key(subtype) Major @key(is) Suit @key(range) Hearts .. Spades; -@key(subtype) Rainbow @key(is) Color @key(range) Red .. Blue; --@Examcom[ the Color Red, not the Light] +@key(subtype) Rainbow @key(is) Color @key(range) Red .. Blue; + --@Examcom[ the Color Red, not the Light] @end(Example) @end{Examples} @@ -6184,17 +6197,17 @@ one of its enumeration literals is a @nt. @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0181-1],ARef=[AI05-0262-1],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @Defn{Latin-1} @Defn{BMP} -@Chg{Version=[2],New=[@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2017}], +@Chg{Version=[2],New=[@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2020}], Old=[@Defn{ISO/IEC 10646:2011}]}], Old=[@Defn{ISO/IEC 10646:2003}]}],Old=[@Defn{ISO 10646}]} @Defn{Character} The predefined type Character is a character type whose values correspond to the 256 code @Chg{Version=[3],New=[points],Old=[positions]} of Row 00 (also known as Latin-1) of the -@Chg{Version=[2],New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}], +@Chg{Version=[2],New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}], Old=[2003]}],Old=[ISO 10646]} Basic Multilingual Plane (BMP). Each of the graphic characters of Row 00 of the BMP has a corresponding @nt in Character. @@ -6206,28 +6219,30 @@ but which is usable with the attributes @Chg{Version=[2],New=[Image, Wide_Image, Wide_Wide_Image, Value, Wide_Value, and Wide_Wide_Value], Old=[(Wide_)Image and (Wide_)Value]}; these names are given in the definition of type Character -in @RefSec{The Package Standard}, but are set in @i{italics}. +in @ISODiff{NotISO=[@RefSecFull{The Package Standard}], + ISOOnly=[@RefSecFullNum{The Package Standard}]}, +but are set in @i{italics}. @Defn2{Term=[italics],Sec=(nongraphic characters)} @Chg{Version=[3],New=[@PDefn2{Term=[code point],Sec=[for characters]}],Old=[]} @begin{Discussion} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0262-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} -@ChgAdded{Version=[3],Text=[@i{Code point} is defined in ISO/IEC 10646:@Chg{Version=[5],New=[2017],Old=[2011]}.]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} +@ChgAdded{Version=[3],Text=[@i{Code point} is defined in ISO/IEC 10646:@Chg{Version=[5],New=[2020],Old=[2011]}.]} @end{Discussion} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0262-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @Defn{Wide_Character} @Defn{BMP} -@Chg{Version=[2],New=[@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2017}], +@Chg{Version=[2],New=[@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2020}], Old=[@Defn{ISO/IEC 10646:2011}]}], Old=[@Defn{ISO/IEC 10646:2003}]}],Old=[@Defn{ISO 10646}]} The predefined type Wide_Character is a character type whose values correspond to the 65536 code @Chg{Version=[3],New=[points],Old=[positions]} of the @Chg{Version=[2], -New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017], +New=[ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020], Old=[2011]}],Old=[2003]}],Old=[ISO 10646]} Basic Multilingual Plane (BMP). Each of the graphic characters of the BMP has a corresponding @nt in Wide_Character. @@ -6248,14 +6263,14 @@ and have]} a corresponding @nt. @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0262-1]}@Comment{This changes the paragraph number! I didn't catch this until 2018, so it stays.} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[2],Text=[@Defn{Wide_Wide_Character} -@Chg{Version=[2],New=[@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2017}], +@Chg{Version=[2],New=[@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2020}], Old=[@Defn{ISO/IEC 10646:2011}]}], Old=[@Defn{ISO/IEC 10646:2003}]}],Old=[@Defn{ISO 10646}]} The predefined type Wide_Wide_Character is a character type whose values correspond to the 2147483648 code @Chg{Version=[3],New=[points],Old=[positions]} -of the ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017], +of the ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020], Old=[2011]}],Old=[2003]} character set. Each of the @ntf{graphic_character}s has a corresponding @nt{character_literal} in @@ -6338,10 +6353,11 @@ of the predefined type Character. @end{Honest} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} A conventional character set such as @i(EBCDIC) can be declared as a character type; the internal codes of the characters can be specified by an @nt as explained in -@Chg{Version=[3],New=[subclause],Old=[clause]} @RefSecNum(Enumeration Representation Clauses). +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Enumeration Representation Clauses). @end{Notes} @begin{Examples} @@ -6903,13 +6919,15 @@ to Integer'Last should be supported.]}]} Integer literals are of the anonymous predefined integer type @i(universal_integer). Other integer types have no literals. However, the overload resolution rules -(see @RefSec(The Context of Overload Resolution)) +(see @ISODiff{NotISO=[@RefSecFull{The Context of Overload Resolution}], +ISOOnly=[@RefSecFullNum{The Context of Overload Resolution}]}) allow expressions of the type @i(universal_integer) whenever an integer type is expected. The same arithmetic operators are predefined for all signed integer types defined by a @nt -(see @RefSec(Operators and Expression Evaluation)). +(see @ISODiff{NotISO=[@RefSecFull{Operators and Expression Evaluation}], +ISOOnly=[@RefSecFullNum{Operators and Expression Evaluation}]}). For modular types, these same operators are predefined, plus bit-wise logical operators (@key(and), @key(or), @key(xor), and @key(not)). In addition, for the unsigned types declared in the language-defined @@ -7136,7 +7154,6 @@ Unchecked_Conversion.) @begin{Notes} Indexing and loop iteration use values of discrete types. -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @PDefn2{Term=[predefined operations],Sec=(of a discrete type)} The predefined operations of a discrete type include the assignment operation, qualification, the membership tests, and the @@ -7149,7 +7166,7 @@ operators, the unary operator @key(abs), and the exponentiation operator. The assignment operation is described in @RefSecNum(Assignment Statements). The other predefined operations are described in -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Names and Expressions}. +@RefSecFullNum{Names and Expressions}. As for all types, objects of a discrete type have Size and Address attributes (see @RefSecNum(Operational and Representation Attributes)). @@ -7170,7 +7187,8 @@ are satisfied (in the absence of an exception) by these attributes: @begin{Examples} @Leading@keepnext@NewExample@i(Examples of attributes of discrete subtypes: ) @begin(Example) ---@ExamCom[ For the types and subtypes declared in subclause @RefSecNum(Enumeration Types) the following hold: ] +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +--@ExamCom[ For the types and subtypes declared in @Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum(Enumeration Types) the following hold: ] -- Color'First = White, Color'Last = Black -- Rainbow'First = Red, Rainbow'Last = Blue @@ -7578,7 +7596,8 @@ Overflow_Checks, never Range_Checks. @key(type) Real @key(is) @key(digits) 8; @key(type) Mass @key(is) @key(digits) 7 @key(range) 0.0 .. 1.0E35; -@key(subtype) Probability @key(is) Real @key(range) 0.0 .. 1.0; --@ExamCom[ a subtype with a smaller range] +@key(subtype) Probability @key(is) Real @key(range) 0.0 .. 1.0; + --@ExamCom[ a subtype with a smaller range] @end(Example) @end{Examples} @@ -7676,7 +7695,6 @@ the Machine_Radix is 10.]} @end{DiffWord95} -@RMNewPageVer{Version=[5]}@Comment{For Ada 2022 RM and ISO version as well} @LabeledSubClause{Fixed Point Types} @begin{Intro} @@ -7928,7 +7946,8 @@ requires support for decimal @i(small)s, and decimal fixed point type declarations with @i(digits) up to at least 18. @begin{ImplNote} The accuracy requirements for multiplication, division, and conversion -(see @RefSec{Model of Floating Point Arithmetic}) +(see @ISODiff{NotISO=[@RefSecFull{Model of Floating Point Arithmetic}], +ISOOnly=[@RefSecFullNum{Model of Floating Point Arithmetic}]}) are such that support for arbitrary @i(small)s should be practical without undue implementation effort. Therefore, implementations should support fixed point diff --git a/source/03b.mss b/source/03b.mss index 7478d372..9b27251d 100644 --- a/source/03b.mss +++ b/source/03b.mss @@ -1,10 +1,11 @@ @Part(03, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @Comment{$Source: e:\\cvsroot/ARM/Source/03b.mss,v $} -@Comment{$Revision: 1.117 $} +@Comment{$Revision: 1.118 $} +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledClause{Array Types} @begin{Intro} @@ -364,34 +365,30 @@ is of its own unique type. @end{Notes} @begin{Examples} -@Leading@keepnext@NewExample@i(Examples of type declarations with unconstrained array definitions: ) +@Leading@keepnext@NewExample@i(Examples of type declarations with unconstrained array definitions:) @begin(Example) -@key(type) Vector @key(is) @key(array)(Integer @key(range) <>) @key(of) Real; +@trailing@key(type) Vector @key(is) @key(array)(Integer @key(range) <>) @key(of) Real; @key(type) Matrix @key(is) @key(array)(Integer @key(range) <>, Integer @key(range) <>) @key(of) Real; @key(type) Bit_Vector @key(is) @key(array)(Integer @key(range) <>) @key(of) Boolean; @key(type) Roman @key(is) @key(array)(Positive @key(range) <>) @key(of) Roman_Digit; --@ExamCom[ see @RefSecNum(Character Types)] @end(Example) -@begin{WideAbove} -@leading@keepnext@NewExample@i(Examples of type declarations with constrained array definitions: ) -@end{WideAbove} +@leading@keepnext@NewExample@i(Examples of type declarations with constrained array definitions:) @begin(Example) -@key(type) Table @key(is) @key(array)(1 .. 10) @key(of) Integer; +@trailing@key(type) Table @key(is) @key(array)(1 .. 10) @key(of) Integer; @key(type) Schedule @key(is) @key(array)(Day) @key(of) Boolean; @key(type) Line @key(is) @key(array)(1 .. Max_Line_Size) @key(of) Character; @end(Example) -@begin{WideAbove} -@leading@keepnext@NewExample@i(Examples of object declarations with array type definitions: ) -@end{WideAbove} +@leading@keepnext@NewExample@i(Examples of object declarations with array type definitions:) @begin(Example) @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} Grid @Chg{Version=[2],New=[ ],Old=[]}: @key(array)(1 .. 80, 1 .. 100) @key(of) Boolean; Mix @Chg{Version=[2],New=[ ],Old=[]}: @key(array)(Color @key(range) Red .. Green) @key(of) Boolean;@Chg{Version=[2],New=[ Msg_Table : @key(constant array)(Error_Code) @key(of access constant) String := (Too_Big => @key(new) String'("Result too big"), Too_Small => ...);],Old=[]} -Page @Chg{Version=[2],New=[ ],Old=[]}: @key(array)(Positive @key(range) <>) @key(of) Line := --@ExamCom[ an array of arrays] - (1 | 50 => Line'(1 | Line'Last => '+', @key(others) => '-'), --@ExamCom[ see @RefSecNum(Array Aggregates)] +Page @Chg{Version=[2],New=[ ],Old=[]}: @key(array)(Positive @key(range) <>) @key(of) Line := --@ExamCom[ an array of arrays] + (1 | 50 => Line'(1 | Line'Last => '+', @key(others) => '-'), --@ExamCom[ see @RefSecNum(Array Aggregates)] 2 .. 49 => Line'(1 | Line'Last => '|', @key(others) => ' ')); --@ExamCom[ Page is constrained by its initial value to (1..50)] @end(Example) @@ -549,34 +546,30 @@ array subtype match. See @RefSecNum(Type Conversions). @end{Notes} @begin{Examples} -@leading@keepnext@NewExample@i(Examples of array declarations including an index constraint: ) +@leading@keepnext@NewExample@i(Examples of array declarations including an index constraint:) @begin(Example) @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} -Board : Matrix(1 .. 8, 1 .. 8); -- @Examcom[see @RefSecNum(Array Types)] +Board : Matrix(1 .. 8, 1 .. 8); --@Examcom[ see @RefSecNum(Array Types)] Rectangle : Matrix(1 .. 20, 1 .. 30); -Inverse : Matrix(1 .. N, 1 .. N); -- @Examcom[N @Chg{Version=[5],New=[can be nonstatic],Old=[need not be static]}] +Inverse : Matrix(1 .. N, 1 .. N); --@Examcom[ N @Chg{Version=[5],New=[can be nonstatic],Old=[need not be static]}] -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI125-0430-1]} -Filter : Bit_Vector(0 .. 31); -- @Examcom[see @RefSecNum(Array Types)] +@Trailing@ChgRef{Version=[5],Kind=[Revised],ARef=[AI125-0430-1]} +Filter : Bit_Vector(0 .. 31);@Chg{Version=[5],New=[ --@Examcom[ see @RefSecNum(Array Types)]],Old=[]} @end(Example) -@begin{WideAbove} -@leading@keepnext@NewExample@i(Example of array declaration with a constrained array subtype: ) -@end{WideAbove} +@leading@keepnext@NewExample@i(Example of array declaration with a constrained array subtype:) @begin(Example) -My_Schedule : Schedule; --@ExamCom[ all arrays of type Schedule have the same bounds] +@Trailing@;My_Schedule : Schedule; --@ExamCom[ all arrays of type Schedule have the same bounds] @end(Example) -@begin{WideAbove} -@leading@keepnext@NewExample@i(Example of record type with a component that is an array: ) -@end{WideAbove} +@leading@keepnext@NewExample@i(Example of record type with a component that is an array:) @begin(Example) @key(type) Var_Line(Length : Natural) @key(is) @key(record) Image : String(1 .. Length); @key(end) @key(record); -Null_Line : Var_Line(0); --@ExamCom[ Null_Line.Image is a null array] +Null_Line : Var_Line(0); --@ExamCom[ Null_Line.Image is a null array] @end(Example) @end{Examples} @@ -669,7 +662,9 @@ However, if @Chg{Version=[3],New=[convention ],Old=[a @key Convention(]}Fortran@Chg{Version=[3],New=[ is specified for],Old=[, ...) applies to]} a multidimensional array type, then column-major order should be used -instead (see @RefSec{Interfacing with Fortran}). +instead (see +@ISODiff{NotISO=[@RefSecFull{Interfacing with Fortran}], + ISOOnly=[@RefSecFullNum{Interfacing with Fortran}]}). @ChgImplAdvice{Version=[2],Kind=[AddedNormal],Text=[@ChgAdded{Version=[2], Text=[Multidimensional arrays should be represented in row-major order, unless the array has convention Fortran.]}]} @@ -710,10 +705,11 @@ a character type. @end{Notes} @begin{Examples} -@Leading@keepnext@NewExample@i{Examples (using arrays declared in the examples of subclause @RefSecNum(Index Constraints and Discrete Ranges)):} +@Leading@keepnext@NewExample@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +@i{Examples (using arrays declared in the examples of @Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum(Index Constraints and Discrete Ranges)):} @begin(Example) --- Filter'First = 0 Filter'Last = 31 Filter'Length = 32 --- Rectangle'Last(1) = 20 Rectangle'Last(2) = 30 +-- Filter'First = 0 Filter'Last = 31 Filter'Length = 32 +-- Rectangle'Last(1) = 20 Rectangle'Last(2) = 30 @end(Example) @end{Examples} @@ -757,14 +753,13 @@ these ordering operators correspond to lexicographic order @begin{Examples} @Leading@keepnext@NewExample@i(Examples of string objects:) @begin(Example) -@TabClear()@TabSet(P49) Stars : String(1 .. 120) := (1 .. 120 => '*' ); Question : @key(constant) String := "How many characters?"; -@\--@ExamCom[ Question'First = 1, Question'Last = 20] -@\--@ExamCom[ Question'Length = 20 (the number of characters)] + --@ExamCom[ Question'First = 1, Question'Last = 20] + --@ExamCom[ Question'Length = 20 (the number of characters)] -Ask_Twice : String := Question & Question;@\--@ExamCom[ constrained to (1..40)] -Ninety_Six : @key(constant) Roman := "XCVI";@\--@ExamCom[ see @RefSecNum(Character Types) and @RefSecNum(Array Types)] +Ask_Twice : String := Question & Question; --@ExamCom[ constrained to (1..40)] +Ninety_Six : @key(constant) Roman := "XCVI"; --@ExamCom[ see @RefSecNum(Character Types) and @RefSecNum(Array Types)] @end(Example) @end{Examples} @@ -847,7 +842,7 @@ are indefinite subtypes.] A discriminant @Chg{Version=[2],New=[for],Old=[of]} a task type can be used to pass data to a task of the type upon creation.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[discriminant], - Def=[a parameter for a composite type, which can control, + Def=[parameter for a composite type, which can control, for example, the bounds of a component that is an array], Note1=[A discriminant for a task type can be used to pass data to a task of the type upon its creation.]} @@ -1661,6 +1656,7 @@ when the discriminant is initialized. @ISOOnlyRMNewPageVer{Version=[3]}@Comment{For ISO version of Ada 2012 Standard} +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledSubClause{Discriminant Constraints} @begin{Intro} @@ -1862,8 +1858,9 @@ from explicit or implicit initialization. @begin{Examples} @Leading@keepnext@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @NewExample@i{Examples (using types declared above in -@Chg{Version=[3],New=[subclause],Old=[clause]} @RefSecNum(Discriminants)):} +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Discriminants)):} @begin(Example) Large : Buffer(200); --@ExamCom[ constrained, always 200 characters] --@ExamCom[ (explicit discriminant value)] @@ -2113,11 +2110,13 @@ of the record type declaration. @Redundant[The identifiers of all components of a record type shall be distinct.] @begin{TheProof} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The identifiers of all components of a record type have to be distinct because they are all declared immediately - within the same declarative region. See @Chg{Version=[3],New=[Clause],Old=[Section]} - @RefSecNum{Visibility Rules}. + within the same declarative region. See + @Chg{Version=[5],New=[@RefSecFullNum{Visibility Rules}], + Old=[@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Visibility Rules}]}. @end{theproof} @@ -2356,7 +2355,7 @@ New=[],Old=[, unless the record type is limited]}. @end{Notes} @begin{Examples} -@Leading@keepnext@NewExample@i(Examples of record type declarations: ) +@Leading@keepnext@NewExample@i(Examples of record type declarations:) @begin(Example) @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0430-1]} @key(type) Date @key(is) @@ -2374,9 +2373,7 @@ New=[],Old=[, unless the record type is limited]}. @key(end) @key(record)@Chg{Version=[5],New=[ Complex],Old=[]}; @end(Example) -@begin{WideAbove} -@leading@keepnext@NewExample@i(Examples of record variables: ) -@end{WideAbove} +@leading@keepnext@NewExample@i(Examples of record variables:) @begin(Example) Tomorrow, Yesterday : Date; A, B, C : Complex; @@ -2722,7 +2719,7 @@ of the elaboration of the @nt{component_list} of each @key(type) Device @key(is) (Printer, Disk, Drum); @key(type) State @key(is) (Open, Closed); -@key(type) Peripheral(Unit : Device := Disk) @key(is) +@trailing@key(type) Peripheral(Unit : Device := Disk) @key(is) @key(record) Status : State; @key(case) Unit @key(is) @@ -2735,17 +2732,13 @@ of the elaboration of the @nt{component_list} of each @key(end) @key(record); @end(Example) -@begin{WideAbove} @leading@keepnext@NewExample@i(Examples of record subtypes:) -@end{WideAbove} @begin(Example) -@key(subtype) Drum_Unit @key(is) Peripheral(Drum); +@trailing@key(subtype) Drum_Unit @key(is) Peripheral(Drum); @key(subtype) Disk_Unit @key(is) Peripheral(Disk); @end(Example) -@begin{WideAbove} @leading@keepnext@NewExample@i(Examples of constrained record variables:) -@end{WideAbove} @begin(Example) Writer : Peripheral(Unit => Printer); Archive : Disk_Unit; diff --git a/source/03c.mss b/source/03c.mss index 60604625..bd2dd7fa 100644 --- a/source/03c.mss +++ b/source/03c.mss @@ -1,9 +1,9 @@ @Part(03, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @Comment{$Source: e:\\cvsroot/ARM/Source/03c.mss,v $} -@Comment{$Revision: 1.161 $} +@Comment{$Revision: 1.162 $} @LabeledClause{Tagged Types and Type Extensions} @@ -182,7 +182,7 @@ or in a generic formal part is determined at compile time, are also allowed. Tagged types may be extended with additional components.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[tagged type], - Def=[a type whose objects each have a run-time type tag, + Def=[type whose objects each have a run-time type tag, which indicates the specific type for which the object was originally created], Note1=[Tagged types can be extended with additional components.]} @@ -317,7 +317,8 @@ of the generic body result in distinct tags.@PDefn{Unspecified} @key[function] @AdaSubDefn{Internal_Tag}(External : String) @key[return] Tag; @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00344-01]} -@ChgAdded{Version=[2],Text=[ @key[function] @AdaSubDefn{Descendant_Tag}(External : String; Ancestor : Tag) @key[return] Tag; +@ChgAdded{Version=[2],Text=[ @key[function] @AdaSubDefn{Descendant_Tag}(External : String; + Ancestor : Tag) @key[return] Tag; @key[function] @AdaSubDefn{Is_Descendant_At_Same_Level}(Descendant, Ancestor : Tag) @key[return] Boolean;]} @@ -878,11 +879,16 @@ so that new primitive subprograms can be declared for it. Once an object has been created, its tag never changes. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} Class-wide types are defined to have unknown discriminants -(see @RefSecNum(Discriminants)). This means that objects of a class-wide -type have to be explicitly initialized (whether created by +(see @RefSecNum(Discriminants)). This means that@Chg{Version=[5],New=[, by +the rules in @RefSecNum(Discriminants) for objects with unknown +discriminants,],Old=[]} objects of a class-wide +type @Chg{Version=[5],New=[are illegal unless they are],Old=[have to be]} +explicitly initialized (whether created by an @nt or an @nt), -and that @nts have to be explicitly qualified with a specific +and that @nts @Chg{Version=[5],New=[are illegal unless they +are],Old=[have to be]} explicitly qualified with a specific type when their expected type is class-wide. @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00260-02],ARef=[AI95-00326-01]} @@ -1308,16 +1314,21 @@ a @Chg{Version=[2],New=[body],Old=[@nt{package_body}]}, primitive subprograms are inherited and are overridable, but new primitive subprograms cannot be added. -A @nt that denotes a component (including a discriminant) of -the parent type is not allowed within the -@nt{record_extension_part}. -Similarly, a @nt that denotes a component defined within the -@nt{record_extension_part} is not allowed within +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[By the rules given in @RefSecNum{Record Types}, +a],Old=[A]} @nt that denotes a component (including a discriminant) of +the parent type is @Chg{Version=[5],New=[illegal],Old=[not allowed]} within the @nt{record_extension_part}. -It is permissible to use a @nt -that denotes a discriminant of the record extension, providing there is -a new @nt{known_discriminant_part} in the enclosing type declaration. -(The full rule is given in @RefSecNum(Record Types).) +Similarly, a @nt that denotes a component defined within the +@nt{record_extension_part} is @Chg{Version=[5],New=[illegal],Old=[not allowed]} +within the @nt{record_extension_part}. +@Chg{Version=[5],New=[A],Old=[It is permissible to use a]} @nt +that denotes a discriminant of the record extension@Chg{Version=[5],New=[ is +legal],Old=[]}, providing @Chg{Version=[5],New=[that it refers to +a discriminant defined in],Old=[there is]} +a new @nt{known_discriminant_part} in the enclosing type +declaration.@Chg{Version=[5],New=[],Old=[ (The full rule is given +in @RefSecNum(Record Types).)]} @begin(Reason) The restriction against depending on discriminants of the parent is to simplify the definition of extension @@ -1326,10 +1337,13 @@ a new @nt{known_discriminant_part} in the enclosing type declaration. well. @end(Reason) -Each visible component of a record extension has to have a +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[By the rules given in @RefSecNum{Visibility}, +each],Old=[Each]} visible component of a record extension +@Chg{Version=[5],New=[will],Old=[has to]} have a unique name, whether the component is (visibly) inherited from the parent type or declared in the -@nt (see @RefSecNum{Visibility}). +@nt@Chg{Version=[5],New=[],Old=[ (see @RefSecNum{Visibility})]}. @end{Notes} @begin{Examples} @@ -1345,16 +1359,16 @@ from the parent type or declared in the Origin : @key(constant) Painted_Point := (X | Y => 0.0, Paint => Black); @key(type) Literal @key(is new) Expression @key(with) - @key(record) --@ExamCom[ a leaf in an Expression tree] + @key(record) --@ExamCom[ a leaf in an Expression tree] Value : Real; @key(end record); @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0404-1]} @key(type) Expr_Ptr @key(is access all) Expression'Class; - --@ExamCom[ see @Chg{Version=[5],New=[@RefSecNum{Tagged Types and Type Extensions}],Old=[@RefSecNum(Access Types)]}] + --@ExamCom[ see @Chg{Version=[5],New=[@RefSecNum{Tagged Types and Type Extensions}],Old=[@RefSecNum(Access Types)]}] @key(type) Binary_Operation @key(is new) Expression @key(with) - @key(record) --@ExamCom[ an internal node in an Expression tree] + @key(record) --@ExamCom[ an internal node in an Expression tree] Left, Right : Expr_Ptr; @key(end record); @@ -1362,7 +1376,7 @@ Origin : @key(constant) Painted_Point := (X | Y => 0.0, Paint => Black); @key(type) Subtraction @key(is new) Binary_Operation @key(with null record); --@ExamCom[ No additional components needed for these extensions] -Tree : Expr_Ptr := --@ExamCom[ A tree representation of @lquotes@;5.0 + (13.0@en@;7.0)@rquotes@;] +Tree : Expr_Ptr := --@ExamCom[ A tree representation of @lquotes@;5.0 + (13.0@en@;7.0)@rquotes@;] @key(new) Addition'( Left => @key(new) Literal'(Value => 5.0), Right => @key(new) Subtraction'( @@ -2163,7 +2177,7 @@ dispatches to some overriding body.] intended for use as an ancestor of other types, but which is not allowed to have objects of its own.]}>} @ChgTermDef{Version=[5],Kind=(Added),Group=[T],Term=[abstract type], - Def=[a tagged type intended for use as an ancestor of + Def=[tagged type intended for use as an ancestor of other types, but which is not allowed to have objects of its own]} @end{Intro} @@ -2636,8 +2650,10 @@ The elaboration of an @nt{abstract_subprogram_declaration} has no effect.]} @end{Runtime} @begin{Notes} -Abstractness is not inherited; to declare an abstract type, -the reserved word @key[abstract] has to be used +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +Abstractness is not inherited; @Chg{Version=[5],New=[a type is abstract only +if],Old=[to declare an abstract type,]} the reserved word @key[abstract] +@Chg{Version=[5],New=[is],Old=[has to be]} used in the declaration of the type extension. @begin{Ramification} A derived type can be abstract even if its parent is not. @@ -2665,19 +2681,27 @@ some nonabstract type in the class. @key(procedure) Take(Element : @key(out) Element_Type; From : @key(in out) Set) @key(is abstract); @key(end) Sets; + @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0442-1],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph number not change} +@ChgAdded{Version=[5],Text=[Given the above abstract type, one can +derive various (nonabstract) extensions of the type, representing +alternative implementations of a set. One possibility is to use a bit vector, +but impose an upper bound on the largest element representable, while another +possible implementation is a hash table, trading off space for flexibility.]} + @end{Examples} @begin{Notes} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} -@i(Notes on the example:) -Given the above abstract type, one @Chg{Version=[5],New=[can],Old=[could then]} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i(Notes on the example:) +Given the above abstract type, one could then derive various (nonabstract) extensions of the type, representing -alternative implementations of a set. One @Chg{Version=[5],New=[possibility is -to],Old=[might]} use a bit +alternative implementations of a set. One might use a bit vector, but impose an upper bound on the largest element representable, -while another @Chg{Version=[5],New=[possible implementation is],Old=[might -use]} a hash table, trading off space for flexibility. +while another might use a hash table, trading off space for flexibility.]} @begin{Discussion} One way to export a type from a package with some components visible and some components private is as follows: @@ -2810,7 +2834,7 @@ ancestors.]]} provide multiple inheritance. Only an interface type can be used as a progenitor of another type.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[interface type], - Def=[an abstract tagged type that has no components or concrete operations + Def=[abstract tagged type that has no components or concrete operations except possibly null procedures], Note1=[Interface types are used for composing other interfaces and tagged types and thereby provide multiple inheritance. Only an interface @@ -2878,11 +2902,10 @@ interfaces.]} that will work safely with multiple tasks at one time. A synchronized interface can be an ancestor of a task or a protected type. Such a task or protected type is called a synchronized tagged type.]}>} -@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[synchronized entity], - Def=[an entity that can be safely operated on by multiple tasks concurrently], - Note1=[A synchronized interface can be an ancestor of a task or a - protected type. Such a task or protected type is called a - synchronized tagged type.]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[synchronized], + Def=[can be safely operated on by multiple tasks concurrently], + Note1=[Synchronized is used to qualify entities, as in a synchronized + interface.]} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00345-01],ARef=[AI95-00443-01]} @ChgAdded{Version=[2],Text=[@Defn{synchronized tagged type} @@ -2958,11 +2981,10 @@ primitive subprograms from its progenitor types one of the types given in the definition of the derived type other than the first. A progenitor is always an interface type. Interfaces, tasks, and protected types may also have progenitors.]}>} -@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[progenitor of a derived type], - Def=[one of the types given in the definition of the derived type other - than the first], - Note1=[A progenitor is always an interface type. Interfaces, tasks, and - protected types can also have progenitors.]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[progenitor], + Def=[type given in the interface list, if any, of an interface, task, + protected, or derived type definition], + Note1=[A progenitor is always an interface type.]} @end{StaticSem} @begin{Legality} @@ -3097,7 +3119,8 @@ interface and a synchronized interface extending it:}]} --@ExamCom[ Remove_First raises Queue_Error if @Chg{Version=[3],New=[Cur_Count],Old=[Count]}(Q) = 0]]} @ChgRef{Version=[2],Kind=[AddedNormal]} -@ChgAdded{Version=[2],Text=[@key{type} Synchronized_Queue @key{is synchronized interface and} Queue; --@ExamCom[ see @RefSecNum{Example of Tasking and Synchronization}] +@ChgAdded{Version=[2],Text=[@key{type} Synchronized_Queue @key{is} + @key{synchronized interface and} Queue; --@ExamCom[ see @RefSecNum{Example of Tasking and Synchronization}] @key{procedure} Append_Wait(Q : @key{in out} Synchronized_Queue; Person : @key{in} Person_Name) @key{is abstract}; @key{procedure} Remove_First_Wait(Q : @key{in out} Synchronized_Queue; @@ -3236,9 +3259,10 @@ an appropriate type. @begin{MetaRules} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} Access values should always be well defined -(barring uses of certain unchecked features of @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Representation Issues}). +(barring uses of certain unchecked features of @Chg{Version=[5],New=[@RefSecFullNum{Representation Issues}], +Old=[@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Representation Issues}]}). In particular, uninitialized access variables should be prevented by compile-time rules. @end{MetaRules} @@ -3287,7 +3311,9 @@ several access types may share the same storage pool. A storage pool is an area of storage used to hold dynamically allocated objects (called @i(pool elements)) created by allocators@Redundant[; storage pools -are described further in @RefSec(Storage Management)]. +are described further in +@ISODiff{NotISO=[@RefSecFull{Storage Management}], + ISOOnly=[@RefSecFullNum{Storage Management}]}]. @Defn{pool-specific access type} @Defn{general access type} @@ -3351,7 +3377,7 @@ either by the designated subtype, or by its initial value.]]} The Access attribute can be used to create an access value designating an aliased object.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[aliased view], - Def=[a view of an object that can be designated by an access value], + Def=[view of an object that can be designated by an access value], Note1=[Objects allocated by allocators are aliased. Objects can also be explicitly declared as aliased with the reserved word aliased. The Access attribute can be used to create an access value designating @@ -3811,15 +3837,15 @@ can be applied to access types @begin{Example} @Trailing@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00433-01]} @ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0056-1]} -@Chg{Version=[4],New=[@key[type] Frame @key Matrix; --@ExamCom[ see @RefSecNum{Array Types}] -],Old=[]}@key[type] Peripheral_Ref @key Peripheral; --@ExamCom[ see @RefSecNum{Variant Parts and Discrete Choices}] +@Chg{Version=[4],New=[@key[type] Frame @key Matrix; --@ExamCom[ see @RefSecNum{Array Types}] +],Old=[]}@key[type] Peripheral_Ref @key Peripheral; --@ExamCom[ see @RefSecNum{Variant Parts and Discrete Choices}] @key[type] Binop_Ptr @key[is access all] Binary_Operation'Class; - --@ExamCom[ general access-to-class-wide, see @RefSecNum{Type Extensions}] + --@ExamCom[ general access-to-class-wide, see @RefSecNum{Type Extensions}] @end{Example} @leading@keepnext@NewExample@i{Example of an access subtype:} @begin{Example} -@Trailing@key[subtype] Drum_Ref @key[is] Peripheral_Ref(Drum); --@ExamCom[ see @RefSecNum{Variant Parts and Discrete Choices}] +@Trailing@key[subtype] Drum_Ref @key[is] Peripheral_Ref(Drum); --@ExamCom[ see @RefSecNum{Variant Parts and Discrete Choices}] @end{Example} @leading@keepnext@NewExample@i{Example of an access-to-subprogram type:} @@ -3832,8 +3858,9 @@ Give_Message : Message_Procedure := Default_Message_Procedure'Access; ... Give_Message := Other_Procedure'Access; ... -Give_Message("File not found."); --@ExamCom{ call with parameter (.@key[all] is optional)} -Give_Message.@key[all]; --@ExamCom{ call with no parameters} +Give_Message("File not found."); + --@ExamCom{ call with parameter (.@key[all] is optional)} +Give_Message.@key[all]; --@ExamCom{ call with no parameters} @end{Example} @end{Examples} @@ -4381,14 +4408,19 @@ The elaboration of an @nt{incomplete_type_declaration} has no effect. @end{RunTime} @begin{Notes} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} @PDefn{completion legality} Within a @nt, an @nt and a corresponding @nt cannot be separated -by an intervening body. -This is because a type has to -be completely defined before it is frozen, and a body freezes -all types declared prior to it in the same @nt -(see @RefSecNum{Freezing Rules}). +by an intervening body. This is +because@Chg{Version=[5],New=[, by the rules given in +@RefSecNum{Freezing Rules},],Old=[]} a type @Chg{Version=[5],New=[is illegal +if it is not],Old=[has to be]} completely defined before it is frozen, and +a body freezes all types declared prior to it in the same +@nt@Chg{Version=[5],New=[],Old=[ +(see @RefSecNum{Freezing Rules})]}. + + @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0151-1],ARef=[AI05-0269-1]} @ChgAdded{Version=[3],Text=[A @nt{name} that denotes an object of an @@ -4605,13 +4637,11 @@ not at all) for different designated subtypes. @LabeledSubClause{Operations of Access Types} @begin{Intro} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @Redundant[The attribute Access is used to create access values designating aliased objects and nonintrinsic subprograms. The @lquotes@;accessibility@rquotes@; rules prevent dangling references (in the absence of uses of certain unchecked features -@em see @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Representation Issues}).] +@em see @RefSecFullNum{Representation Issues}).] @end{Intro} @begin{MetaRules} @@ -4759,7 +4789,7 @@ any of these rules). corresponding legality rules that the level of the entity is not statically deeper than that of the reference.]}>} @ChgTermDef{Version=[5],Kind=(Added),Group=[T],Term=[accessibility level], - Def=[a representation of the lifetime of an entity in terms of the level of + Def=[representation of the lifetime of an entity in terms of the level of dynamic nesting within which the entity is known to exist]} @Defn{statically deeper} @Defn2{Term=[deeper],Sec=(statically)} @@ -6356,7 +6386,7 @@ See @RefSecNum{Dispatching Operations of Tagged Types}. @end{TheProof} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00254-01]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1]}@Defn{downward closure} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1],ARef=[AI12-0451-1]}@Defn{downward closure} @Defn2{Term=[closure],Sec=(downward)} @Chg{Version=[2],New=[The],Old=[The accessibility rules imply that it is not possible to use the]} Access @@ -6371,9 +6401,12 @@ iterator abstraction@Chg{Version=[2],New=[ or numerical integration. Downward],Old=[. Instead, downward]} closures can @Chg{Version=[2],New=[also ],Old=[]}be implemented using generic formal subprograms (see @RefSecNum{Formal Subprograms}). -Note that Unchecked_Access is not allowed for subprograms. +@Chg{Version=[5],New=[Unlike for objects, there is no],Old=[Note that]} +Unchecked_Access @Chg{Version=[5],New=[attribute],Old=[is not allowed]} for +subprograms. -Note that using +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} +@Chg{Version=[5],New=[Using],Old=[Note that using]} an access-to-class-wide tagged type with a dispatching operation is a potentially more structured alternative to using an access-to-subprogram type. @@ -6748,7 +6781,6 @@ uses of anonymous access types.]} @RMNewPageVer{Version=[3]}@Comment{For printed version of Ada 2012 RM} -@IsoOnlyRMNewPageVer{Version=[5]}@Comment{For ISO Ada 2022 only} @LabeledClause{Declarative Parts} @begin{Intro} @@ -7036,7 +7068,6 @@ completion, they have one by @i{fiat}.]} @end{Honest} @begin(Discussion) - @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} The implicit declarations of predefined operators are not allowed to have a completion. Enumeration literals, although they are subprograms, are not allowed to have a @@ -7044,8 +7075,7 @@ completion, they have one by @i{fiat}.]} That's because the completion rules are described in terms of constructs (@nt{subprogram_declaration}s) and not entities (subprograms). When a completion is required, it has to be explicit; - the implicit null @nt{package_body} that @Chg{Version=[3],New=[Clause],Old=[Section]} - @RefSecNum{Packages} + the implicit null @nt{package_body} that @RefSecFullNum{Packages} talks about cannot serve as the completion of a @nt{package_declaration} if a completion is required. @end(Discussion) @@ -7106,12 +7136,14 @@ every kind of entity]}. the type.]} @end(Discussion) +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} There are rules that prevent premature uses of declarations that have a corresponding completion. The Elaboration_Checks of @RefSecNum{Declarative Parts} prevent such uses at run time for subprograms, protected operations, tasks, and generic units. -The rules of @RefSec{Freezing Rules} +The @Chg{Version=[5],New=[freezing ],Old=[]}rules +@Chg{Version=[5],New=[(see @RefSecNum{Freezing Rules})],Old=[of @RefSec{Freezing Rules}]} prevent, at compile time, premature uses of other entities such as private types and deferred constants. @end{Notes} diff --git a/source/04a.mss b/source/04a.mss index 4879abf5..6be1b575 100644 --- a/source/04a.mss +++ b/source/04a.mss @@ -1,10 +1,10 @@ @Part(04, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @LabeledSection{Names and Expressions} @Comment{$Source: e:\\cvsroot/ARM/Source/04a.mss,v $} -@Comment{$Revision: 1.169 $} +@Comment{$Revision: 1.170 $} @begin{Intro} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @@ -177,22 +177,22 @@ denotes the object or subprogram designated by the value of the @nt{name}. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of direct names:) @begin(Example) -@tabclear()@tabset(P9, P47)@trailing -Pi @\@ExamCom(-- the direct name of a number) @\(see @RefSecNum(Number Declarations)) -Limit @\@ExamCom(-- the direct name of a constant) @\(see @RefSecNum(Object Declarations)) -Count @\@ExamCom(-- the direct name of a scalar variable) @\(see @RefSecNum(Object Declarations)) -Board @\@ExamCom(-- the direct name of an array variable) @\(see @RefSecNum(Index Constraints and Discrete Ranges)) -Matrix @\@ExamCom(-- the direct name of a type) @\(see @RefSecNum(Array Types)) -Random @\@ExamCom(-- the direct name of a function) @\(see @RefSecNum(Subprogram Declarations)) -Error @\@ExamCom(-- the direct name of an exception) @\(see @RefSecNum(Exception Declarations)) +@tabclear()@tabset(P47)@trailing +Pi --@ExamCom( the direct name of a number) @\(see @RefSecNum(Number Declarations)) +Limit --@ExamCom( the direct name of a constant) @\(see @RefSecNum(Object Declarations)) +Count --@ExamCom( the direct name of a scalar variable) @\(see @RefSecNum(Object Declarations)) +Board --@ExamCom( the direct name of an array variable) @\(see @RefSecNum(Index Constraints and Discrete Ranges)) +Matrix --@ExamCom( the direct name of a type) @\(see @RefSecNum(Array Types)) +Random --@ExamCom( the direct name of a function) @\(see @RefSecNum(Subprogram Declarations)) +Error --@ExamCom( the direct name of an exception) @\(see @RefSecNum(Exception Declarations)) @end(Example) @leading@keepnext@NewExample@i{Examples of dereferences:} @begin{Example}@tabclear()@tabset(P19) -Next_Car.@key[all]@\--@ExamCom[ explicit dereference denoting the object designated by] - @\--@ExamCom[ the access variable Next_Car (see @RefSecNum{Incomplete Type Declarations})] -Next_Car.Owner @\--@ExamCom[ selected component with implicit dereference;] - @\--@ExamCom[ same as Next_Car.@key[all].Owner] +Next_Car.@key[all]@\--@ExamCom[ explicit dereference denoting the object designated] + @\--@ExamCom[ by the access variable Next_Car (see @RefSecNum{Incomplete Type Declarations})] +Next_Car.Owner @\--@ExamCom[ selected component with implicit dereference;] + @\--@ExamCom[ same as Next_Car.@key[all].Owner] @end{Example} @end{Examples} @@ -383,27 +383,39 @@ Constraint_Error is raised if this check fails. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of indexed components:) @begin{Example} -@tabclear()@tabset(P64) - My_Schedule(Sat) --@ExamCom[ a component of a one-dimensional array @\(see @RefSecNum{Index Constraints and Discrete Ranges})] - Page(10) --@ExamCom[ a component of a one-dimensional array @\(see @RefSecNum{Array Types})] - Board(M, J + 1) --@ExamCom[ a component of a two-dimensional array @\(see @RefSecNum{Index Constraints and Discrete Ranges})] - Page(10)(20) --@ExamCom[ a component of a component @\(see @RefSecNum{Array Types})] - Request(Medium) --@ExamCom[ an entry in a family of entries @\(see @RefSecNum{Task Units and Task Objects})] - Next_Frame(L)(M, N) --@ExamCom[ a component of a function call @\(see @RefSecNum{Subprogram Declarations})] +@tabclear()@tabset(P60) + My_Schedule(Sat) --@ExamCom[ a component of a one-dimensional array@\(see @RefSecNum{Index Constraints and Discrete Ranges})] + Page(10) --@ExamCom[ a component of a one-dimensional array@\(see @RefSecNum{Array Types})] + Board(M, J + 1) --@ExamCom[ a component of a two-dimensional array@\(see @RefSecNum{Index Constraints and Discrete Ranges})] + Page(10)(20) --@ExamCom[ a component of a component@\(see @RefSecNum{Array Types})] + Request(Medium) --@ExamCom[ an entry in a family of entries@\(see @RefSecNum{Task Units and Task Objects})] + Next_Frame(L)(M, N) --@ExamCom[ a component of a function call@\(see @RefSecNum{Subprogram Declarations})] @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph number not change} +@ChgAdded{Version=[5],Text=[Distinct notations are used for components of +multidimensional arrays (such as Board) and arrays of arrays (such as Page). +The components of an array +of arrays are arrays and can therefore be indexed. Thus Page(10)(20) +denotes the 20th component of Page(10). In the last example Next_Frame(L) +is a function call returning an access value that designates a +two-dimensional array.]} + @end{Examples} @begin{Notes} -@i(Notes on the examples:) +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i(Notes on the examples:) Distinct notations are used for components of multidimensional arrays (such as Board) and arrays of arrays (such as Page). The components of an array of arrays are arrays and can therefore be indexed. Thus Page(10)(20) denotes the 20th component of Page(10). In the last example Next_Frame(L) is a function call returning an access value that designates a -two-dimensional array. - +two-dimensional array.]} @end{Notes} + @LabeledSubClause{Slices} @begin{Intro} @@ -456,10 +468,13 @@ Constraint_Error is raised if this check fails. @end{RunTime} @begin{Notes} -A @nt is not permitted as the @nt of an +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[By the rules given in +@RefSecNum(Operations of Access Types), a],Old=[A]} @nt is +@Chg{Version=[5],New=[illegal],Old=[not permitted]} as the @nt of an Access @nt, -even if the components or the array as a whole are aliased. -See @RefSecNum(Operations of Access Types). +even if the components or the array as a whole are aliased.@Chg{Version=[5],New=[],Old=[ +See @RefSecNum(Operations of Access Types).]} @begin{TheProof} Slices are not aliased, by @RefSec{Access Types}. @end{TheProof} @@ -479,14 +494,14 @@ component of the array A and has the corresponding component type. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of slices:) @begin{Example} -@tabclear()@tabset(P58) - Stars(1 .. 15) --@ExamCom[ a slice of 15 characters @\(see @RefSecNum{String Types})] - Page(10 .. 10 + Size) --@ExamCom[ a slice of 1 + Size components @\(see @RefSecNum{Array Types})] - Page(L)(A .. B) --@ExamCom[ a slice of the array Page(L) @\(see @RefSecNum{Array Types})] - Stars(1 .. 0) --@ExamCom[ a null slice @\(see @RefSecNum{String Types})] - My_Schedule(Weekday) --@ExamCom[ bounds given by subtype @\(see @RefSecNum{Index Constraints and Discrete Ranges} and @RefSecNum{Enumeration Types})] - Stars(5 .. 15)(K) --@ExamCom[ same as Stars(K) @\(see @RefSecNum{String Types})] - --@ExamCom[ provided that K is in 5 .. 15] +@tabclear()@tabset(P50, P56) +Stars(1 .. 15) --@ExamCom[ a slice of 15 characters@\@\(see @RefSecNum{String Types})] +Page(10 .. 10 + Size) --@ExamCom[ a slice of 1 + Size components@\(see @RefSecNum{Array Types})] +Page(L)(A .. B) --@ExamCom[ a slice of the array Page(L)@\(see @RefSecNum{Array Types})] +Stars(1 .. 0) --@ExamCom[ a null slice@\(see @RefSecNum{String Types})] +My_Schedule(Weekday) --@ExamCom[ bounds given by subtype@\(see @RefSecNum{Index Constraints and Discrete Ranges} and @RefSecNum{Enumeration Types})] +Stars(5 .. 15)(K) --@ExamCom[ same as Stars(K)@\(see @RefSecNum{String Types})] + --@ExamCom[ provided that K is in 5 .. 15] @end{Example} @end{Examples} @@ -706,30 +721,30 @@ The exception Constraint_Error is raised if this check fails. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of selected components:) @begin{Example} -@tabclear()@tabset(P60)@trailing +@tabclear()@tabset(P58)@trailing @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00252-01],ARef=[AI95-00407-01]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0178]} - Tomorrow.Month --@ExamCom[ a record component @\(see @RefSecNum{Record Types})] - Next_Car.Owner --@ExamCom[ a record component @\(see @RefSecNum{Incomplete Type Declarations})] - Next_Car.Owner.Age --@ExamCom[ a record component @\(see @RefSecNum{Incomplete Type Declarations})] - --@ExamCom[ the previous two lines involve implicit dereferences] - Writer.Unit --@ExamCom[ a record component (a discriminant) @\(see @RefSecNum{Variant Parts and Discrete Choices})] - Min_Cell(H).Value --@ExamCom[ a record component of the result @\(see @RefSecNum{Subprogram Declarations})] - --@ExamCom[ of the function call Min_Cell(H)] -@Chg{Version=[2],New=< Cashier.Append --@ExamCom[ a prefixed view of a procedure @\(see @RefSecNum{Interface Types})] ->,Old=<>} Control.Seize --@ExamCom[ an entry of a protected object @\(see @RefSecNum{Protected Units and Protected Objects})] - Pool(K).Write --@ExamCom[ an entry of the task Pool(K) @\(see @Chg{Version=[5],New=[@RefSecNum{Task Units and Task Objects}],Old=[@RefSecNum{Protected Units and Protected Objects}]})] +Tomorrow.Month --@ExamCom[ a record component@\(see @RefSecNum{Record Types})] +Next_Car.Owner --@ExamCom[ a record component@\(see @RefSecNum{Incomplete Type Declarations})] +Next_Car.Owner.Age --@ExamCom[ a record component@\(see @RefSecNum{Incomplete Type Declarations})] + --@ExamCom[ the previous two lines involve implicit dereferences] +Writer.Unit --@ExamCom[ a record component (a discriminant)@ISODiff{NotISO=[@\],ISOOnly=[ ]}(see @RefSecNum{Variant Parts and Discrete Choices})] +Min_Cell(H).Value --@ExamCom[ a record component of the result@\(see @RefSecNum{Subprogram Declarations})] + --@ExamCom[ of the function call Min_Cell(H)] +@Chg{Version=[2],New=,Old=<>}Control.Seize --@ExamCom[ an entry of a protected object@\(see @RefSecNum{Protected Units and Protected Objects})] +Pool(K).Write --@ExamCom[ an entry of the task Pool(K)@\(see @Chg{Version=[5],New=[@RefSecNum{Task Units and Task Objects}],Old=[@RefSecNum{Protected Units and Protected Objects}]})] @end{Example} @leading@keepnext@NewExample@i(Examples of expanded names:) @begin{Example} -@tabclear()@tabset(P67) - Key_Manager."<" --@ExamCom[ an operator of the visible part of a package @\(see @RefSecNum{Private Operations})] - Dot_Product.Sum --@ExamCom[ a variable declared in a function body @\(see @RefSecNum{Subprogram Declarations})] - Buffer.Pool --@ExamCom[ a variable declared in a protected unit @\(see @RefSecNum{Example of Tasking and Synchronization})] - Buffer.Read --@ExamCom[ an entry of a protected unit @\(see @RefSecNum{Example of Tasking and Synchronization})] - Swap.Temp --@ExamCom[ a variable declared in a block statement @\(see @RefSecNum{Block Statements})] - Standard.Boolean --@ExamCom[ the name of a predefined type @\(see @RefSecNum{The Package Standard})] +@tabclear()@tabset(P65) +Key_Manager."<" --@ExamCom[ an operator of the visible part of a package@ISODiff{NotISO=[@\],ISOOnly=[]}(see @RefSecNum{Private Operations})] +Dot_Product.Sum --@ExamCom[ a variable declared in a function body@\(see @RefSecNum{Subprogram Declarations})] +Buffer.Pool --@ExamCom[ a variable declared in a protected unit@ISODiff{NotISO=[@\],ISOOnly=[]}(see @RefSecNum{Example of Tasking and Synchronization})] +Buffer.Read --@ExamCom[ an entry of a protected unit@\(see @RefSecNum{Example of Tasking and Synchronization})] +Swap.Temp --@ExamCom[ a variable declared in a block statement@\(see @RefSecNum{Block Statements})] +Standard.Boolean --@ExamCom[ the name of a predefined type@\(see @RefSecNum{The Package Standard})] @end{Example} @end{Examples} @@ -826,7 +841,7 @@ or a @nt.] Text=<@ChgAdded{Version=[5],Text=[An attribute is a characteristic or property of an entity that can be queried, and in some cases specified.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[attribute], - Def=[a characteristic or property of an entity that can be queried, and in + Def=[characteristic or property of an entity that can be queried, and in some cases specified]} @end{Intro} @@ -1062,19 +1077,25 @@ and are summarized in @ChgRef{Version=[1],Kind=[Revised]}@ChgNote{To be consistent with 8652/0006} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00235]} -In general, the @nt in a @nt of an @nt -(or a @nt) has to be resolved -without using any context. -However, in the case of the Access attribute, +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[By the],Old=[In]} general@Chg{Version=[5],New=[ rules +given above],Old=[]}, @Chg{Version=[5],New=[there is no expected type +or profile for ],Old=[]}the @nt in a @nt of an +@nt (or a @nt)@Chg{Version=[5],New=[, +which means that no context can be used to +resolve the @nt{name}],Old=[ has to be resolved +without using any context]}. However, @Chg{Version=[5],New=[by the rules given +in @RefSecNum{Operations of Access Types} for],Old=[in]} the case of the Access attribute, the expected type for the @Chg{Version=[2],New=[@nt{attribute_reference}], -Old=[@Chg{New=[@nt{prefix}],Old=[prefix]}]} has to be a +Old=[@Chg{New=[@nt{prefix}],Old=[prefix]}]} @Chg{Version=[5],New=[will],Old=[has to]} be a single access type, and@Chg{Version=[2],New=[],Old=[ if it is an access-to-subprogram type (see @RefSecNum(Operations of Access Types)) then]} -the resolution of the @nt can use the fact that +the resolution of the @nt can @Chg{Version=[5],New=[make use of the +designated type or profile of this],Old=[use the fact that the@Chg{Version=[2],New=[ type of the object or the],Old=[]} profile of the callable entity denoted by the @nt has to @Chg{Version=[2],New=[match the designated type or ],Old=[]}be type -conformant with the designated profile of the access type. +conformant with the designated profile of the]} access type. @Defn2{Term=[type conformance],Sec=(required)} @begin(TheProof) @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00235]} @@ -1095,14 +1116,15 @@ conformant with the designated profile of the access type. @Leading@keepnext@NewExample@i(Examples of attributes:) @begin{Example} @tabclear()@tabset(P64) -Color'First --@ExamCom[ minimum value of the enumeration type Color @\(see @RefSecNum{Enumeration Types})] -Rainbow'Base'First --@ExamCom[ same as Color'First @\(see @RefSecNum{Enumeration Types})] -Real'Digits --@ExamCom[ precision of the type Real @\(see @RefSecNum{Floating Point Types})] -Board'Last(2) --@ExamCom[ upper bound of the second dimension of Board @\(see @RefSecNum{Index Constraints and Discrete Ranges})] -Board'Range(1) --@ExamCom[ index range of the first dimension of Board @\(see @RefSecNum{Index Constraints and Discrete Ranges})] -Pool(K)'Terminated --@ExamCom[ True if task Pool(K) is terminated @\(see @RefSecNum{Task Units and Task Objects})] -Date'Size --@ExamCom[ number of bits for records of type Date @\(see @RefSecNum{Record Types})] -Message'Address --@ExamCom[ address of the record variable Message @\(see @RefSecNum{Discriminant Constraints})] +Color'First --@ExamCom[ minimum value of the enumeration type Color@\(see @RefSecNum{Enumeration Types})] +Rainbow'Base'First --@ExamCom[ same as Color'First@\(see @RefSecNum{Enumeration Types})] +Real'Digits --@ExamCom[ precision of the type Real@\(see @RefSecNum{Floating Point Types})] +Board'Last(2) --@ExamCom[ upper bound of the second dimension of Board@\(see @RefSecNum{Index Constraints and Discrete Ranges})] +Board'Range(1) --@ExamCom[ index range of the first dimension of Board@\(see @RefSecNum{Index Constraints and Discrete Ranges})] +Pool(K)'Terminated --@ExamCom[ True if task Pool(K) is terminated@\(see @RefSecNum{Task Units and Task Objects})] +Date'Size --@ExamCom[ number of bits for records of type Date@\(see @RefSecNum{Record Types})] +Message'Address --@ExamCom[ address of the record variable Message] + --@ExamCom[ @\(see @RefSecNum{Discriminant Constraints})] @end{Example} @end{Examples} @@ -1223,7 +1245,7 @@ Text=<@ChgAdded{Version=[3],Text=[A reference type is one that has user-defined behavior for @ldquote.@key[all]@rdquote, defined by the Implicit_Dereference aspect.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[reference type], - Def=[a type that has user-defined behavior for @ldquote@;.all@rdquote, + Def=[type that has user-defined behavior for @ldquote@;.all@rdquote, defined by the Implicit_Dereference aspect]} @end{StaticSem} @@ -1314,7 +1336,8 @@ and use of generalized references:}]} -- @ExamCom{"Data" is its reference discriminant.}]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0139-2],ARef=[AI05-0268-1]} -@ChgAdded{Version=[3],Text=[@key[function] Find (B : @key[aliased in out] Barrel; Key : String) @key[return] Ref_Element; +@ChgAdded{Version=[3],Text=[@key[function] Find (B : @key[aliased in out] Barrel; Key : String) + @key[return] Ref_Element; -- @Examcom{Returns a reference to an element of a barrel.}]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0268-1],ARef=[AI05-0299-1]} @@ -1428,7 +1451,7 @@ Text=<@ChgAdded{Version=[3],Text=[An indexable container type is one that has user-defined behavior for indexing, via the Constant_Indexing or Variable_Indexing aspects.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[indexable container type], - Def=[a type that has user-defined behavior for indexing, via the + Def=[type that has user-defined behavior for indexing, via the Constant_Indexing or Variable_Indexing aspects]} @ChgRef{Version=[4],Kind=[Added],ARef=[AI12-0138-1]} @@ -1649,7 +1672,8 @@ and use of generalized indexing:}]} -- @Examcom{Find is the generalized indexing operation.}]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0268-1]} -@ChgAdded{Version=[3],Text=[@key[function] Find (B : @key[aliased in out] Indexed_Barrel; Key : String) @key[return] Ref_Element; +@ChgAdded{Version=[3],Text=[@key[function] Find (B : @key[aliased in out] Indexed_Barrel; Key : String) + @key[return] Ref_Element; -- @Examcom{Return a reference to an element of a barrel (see @RefSecNum{User-Defined References}).}]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0268-1]} @@ -2235,7 +2259,7 @@ Text=<@ChgAdded{Version=[5],Text=[An aggregate is a construct used to define a value of a composite type by specifying the values of the components of the type.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[aggregate], - Def=[a construct used to define a value of a composite type by + Def=[construct used to define a value of a composite type by specifying the values of the components of the type]} @end{Intro} @@ -2579,7 +2603,7 @@ can be given by static expressions. variants.]} @end{Reason} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[needed component], - Def=[a component of a record type or record extension that is required + Def=[component of a record type or record extension that is required to have its value specified within a given aggregate]} @Leading@Keepnext@PDefn2{Term=[expected type], @@ -2836,7 +2860,7 @@ different @nt{variant}s of the same @nt{variant_part}.]} The evaluation of a @nt consists of the evaluation of the @nt. -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0086-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0086-1],ARef=[AI12-0451-1]} @PDefn2{Term=[evaluation], Sec=(record_component_association_list)} For the evaluation of a @nt{record_@!component_@!association_@!list}, any per-object constraints (see @RefSecNum(Record Types)) @@ -2851,7 +2875,7 @@ elaboration of any per-object constraint that depends on it, which in turn occurs prior to the evaluation and conversion of the @nt{expression} for the component with the per-object constraint.@PDefn2{Term=[arbitrary order],Sec=[allowed]}@Chg{Version=[5],New=[ -If the value of a discriminant that governs a selected @nt{variant_part} @i{P} +If the value of a discriminant that governs a selected @nt{variant_part} is given by a nonstatic @nt{expression}, and the evaluation of that @nt{expression} yields a value that does not belong to the nominal subtype of the @nt{expression}, then Constraint_Error is @@ -2900,17 +2924,20 @@ has to be evaluated. So there is no need to repeat that.]} @end{RunTime} @begin{Notes} -For a @nt with positional associations, expressions -specifying discriminant -values appear first since the @nt -is given first in the declaration of the type; they have to -be in the same order as in the @nt. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[By the rules given above, for],Old=[For]} a +@nt with positional associations, expressions specifying +discriminant values appear first @Chg{Version=[5],New=[and in the same +order as their corresponding @nt{discriminant_specification}s, ],Old=[]}since +the @nt @Chg{Version=[5],New=[occurs],Old=[is given]} +first in the declaration of the type@Chg{Version=[5],New=[],Old=[; they have +to be in the same order as in the @nt]}. @end{Notes} @begin{Examples} @Leading@keepnext@NewExample@i(Example of a record aggregate with positional associations:) @begin{Example} -@trailing@;(4, July, 1776) --@ExamCom[ see @RefSecNum{Record Types} ] +@trailing@;(4, July, 1776) --@ExamCom[ see @RefSecNum{Record Types} ] @end{Example} @leading@keepnext@NewExample@i(Examples of record aggregates with named associations:) @@ -2918,7 +2945,7 @@ be in the same order as in the @nt. (Day => 4, Month => July, Year => 1776) (Month => July, Day => 4, Year => 1776) -@trailing@;(Disk, Closed, Track => 5, Cylinder => 12) --@ExamCom[ see @RefSecNum{Variant Parts and Discrete Choices}] +@trailing@;(Disk, Closed, Track => 5, Cylinder => 12) --@ExamCom[ see @RefSecNum{Variant Parts and Discrete Choices}] (Unit => Disk, Status => Closed, Cylinder => 9, Track => 1) @end{Example} @@ -2927,16 +2954,15 @@ be in the same order as in the @nt. @Chg{Version=[2],New=[associations],Old=[association]} with several choices:) @begin{Example} -@tabclear()@tabset(P50) -(Value => 0, Succ|Pred => @key(new) Cell'(0, @key(null), @key(null))) @\--@ExamCom[ see @RefSecNum{Incomplete Type Declarations}] - - --@ExamCom[ The allocator is evaluated twice: Succ and Pred designate different cells] +(Value => 0, Succ|Pred => @key(new) Cell'(0, @key(null), @key(null))) --@ExamCom[ see @RefSecNum{Incomplete Type Declarations}] + --@ExamCom[ The allocator is evaluated twice:] + --@ExamCom[ Succ and Pred designate different cells] @ChgRef{Version=[2],Kind=[Added]} -@Chg{Version=[2],New=[(Value => 0, Succ|Pred => <>) @\--@ExamCom[ see @RefSecNum{Incomplete Type Declarations}]],Old=[]} +@Chg{Version=[2],New=[(Value => 0, Succ|Pred => <>) --@ExamCom[ see @RefSecNum{Incomplete Type Declarations}]],Old=[]} @Trailing@ChgRef{Version=[2],Kind=[Added]} -@Chg{Version=[2],New=[ --@ExamCom[ Succ and Pred will be set to @key{null}]],Old=[]} +@Chg{Version=[2],New=[ --@ExamCom[ Succ and Pred will be set to @key{null}]],Old=[]} @end{Example} @@ -3222,10 +3248,12 @@ Constraint_Error is raised if this check fails. @end{RunTime} @begin{Notes} -If all components of the value of the @nt -are determined by the @nt, then -the @nt is required to be -simply @key(null record). +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[By the rules given in @RefSecNum{Record Aggregates}, +if],Old=[If]} all components of the value of the +@nt are determined by the @nt, then +the @nt +@Chg{Version=[5],New=[will],Old=[is required to]} be simply @key(null record). If the @nt is a @nt, then its type can be abstract. If its type is controlled, @@ -3541,7 +3569,7 @@ RM83 omitted this case, presumably as an oversight. We want to minimize situations where an @nt{expression} becomes illegal if parenthesized. @end{Discussion} -@ChgRef{Version=[3],Kind=[Added],ARef=[AAI05-0147-1]} +@ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0147-1]} @ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0236-1]} @ChgAdded{Version=[3],Text=[For a @nt{conditional_expression}@Chg{Version=[5],New=[ (see @RefSecNum{Conditional Expressions})],Old=[]}, the @@ -3891,20 +3919,20 @@ with a single component. @Leading@keepnext@NewExample@i(Examples of array aggregates with positional associations:) @begin{Example} @trailing@;(7, 9, 5, 1, 3, 2, 4, 8, 6, 0) -Table'(5, 8, 4, 1, @key(others) => 0) --@ExamCom[ see @RefSecNum{Array Types} ] +Table'(5, 8, 4, 1, @key(others) => 0) --@ExamCom[ see @RefSecNum{Array Types} ] @end{Example} @leading@keepnext@NewExample@i(Examples of array aggregates with named associations:) @begin{Example} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0306-1]} -(1 .. 5 => (1 .. 8 => 0.0)) --@ExamCom[ two-dimensional] -@Chg{Version=[5],New=<[>,Old=<(>}1 .. N => @key(new) Cell@Chg{Version=[5],New=<]>,Old=<)>} --@ExamCom[ N new cells, in particular for N = 0] +(1 .. 5 => (1 .. 8 => 0.0)) --@ExamCom[ two-dimensional] +@Chg{Version=[5],New=<[>,Old=<(>}1 .. N => @key(new) Cell@Chg{Version=[5],New=<]>,Old=<)>} --@ExamCom[ N new cells, in particular for N = 0] @trailing@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0306-1]} Table'(2 | 4 | 10 => 1, @key(others) => 0) -Schedule'(Mon .. Fri => True, @key(others) => False) --@ExamCom[ see @RefSecNum{Array Types}] +Schedule'(Mon .. Fri => True, @key(others) => False) --@ExamCom[ see @RefSecNum{Array Types}] Schedule'@Chg{Version=[5],New=<[>,Old=<(>}Wed | Sun => False, @key(others) => True@Chg{Version=[5],New=<]>,Old=<)>} -Vector'(1 => 2.5) --@ExamCom[ single-component vector] +Vector'(1 => 2.5) --@ExamCom[ single-component vector] @end{Example} @leading@keepnext@NewExample@i(Examples of two-dimensional array aggregates:) @@ -3914,14 +3942,16 @@ Vector'(1 => 2.5) --@ExamCom[ single-component v @trailing@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0306-1]} ((1.1, 1.2, 1.3), (2.1, 2.2, 2.3)) (1 => @Chg{Version=[5],New=<[>,Old=<(>}1.1, 1.2, 1.3@Chg{Version=[5],New=<]>,Old=<)>}, 2 => @Chg{Version=[5],New=<[>,Old=<(>}2.1, 2.2, 2.3@Chg{Version=[5],New=<]>,Old=<)>}) -@Chg{Version=[5],New=<[>,Old=<(>}1 => (1 => 1.1, 2 => 1.2, 3 => 1.3), 2 => (1 => 2.1, 2 => 2.2, 3 => 2.3)@Chg{Version=[5],New=<]>,Old=<)>} +@Chg{Version=[5],New=<[>,Old=<(>}1 => (1 => 1.1, 2 => 1.2, 3 => 1.3), + 2 => (1 => 2.1, 2 => 2.2, 3 => 2.3)@Chg{Version=[5],New=<]>,Old=<)>} @end{Example} @leading@keepnext@NewExample@i(Examples of aggregates as initial values:) @begin{Example} A : Table := (7, 9, 5, 1, 3, 2, 4, 8, 6, 0); --@ExamCom[ A(1)=7, A(10)=0] B : Table := (2 | 4 | 10 => 1, @key(others) => 0); --@ExamCom[ B(1)=0, B(10)=1] -C : @key(constant) Matrix := (1 .. 5 => (1 .. 8 => 0.0)); --@ExamCom[ C'Last(1)=5, C'Last(2)=8] +C : @key(constant) Matrix := (1 .. 5 => (1 .. 8 => 0.0)); + --@ExamCom[ C'Last(1)=5, C'Last(2)=8] D : Bit_Vector(M .. N) := (M .. N => True); --@ExamCom[ see @RefSecNum{Array Types}] E : Bit_Vector(M .. N) := (@key(others) => True); @@ -3945,7 +3975,7 @@ provided by an enclosing record aggregate:}]} @begin{Example} @ChgRef{Version=[2],Kind=[AddedNormal]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0178-1]} -@ChgAdded{Version=[2],Text=[Buffer'(Size => 50, Pos => 1, Value => @Chg{Version=[5],New=[],Old=[String']}('x', @key(others) => <>)) --@ExamCom[ see @RefSecNum{Discriminants}]]} +@ChgAdded{Version=[2],Text=[Buffer'(Size => 50, Pos => 1, Value => @Chg{Version=[5],New=[],Old=[String']}('x', @key(others) => <>)) --@ExamCom[ see @RefSecNum{Discriminants}]]} @end{Example} @end{Examples} @@ -4346,7 +4376,7 @@ Text=<@ChgAdded{Version=[5],Text=[A container aggregate is a construct used to define a value of a type that represents a collection of elements, by explicitly specifying the elements in the collection.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[container aggregate], - Def=[a construct used to define a value of a type that + Def=[construct used to define a value of a type that represents a collection of elements, by explicitly specifying the elements in the collection]} @@ -5232,6 +5262,7 @@ the implementation may either raise Constraint_Error or return the value of the object. @begin{Ramification} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} This means that if extra-range intermediates are used to hold the value of an object of an unconstrained numeric subtype, a Constraint_Error can be raised on a read of the object, rather than @@ -5240,9 +5271,8 @@ or return the value of the object. can be deferred until the first read of the object (presuming no side effects other than failing an Overflow_Check are possible). This permission is over and above that provided - by @Chg{Version=[3],New=[subclause],Old=[clause]} - @RefSecNum(Exceptions and Optimization), since - this allows the Constraint_Error to move to a different handler. + by @Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Exceptions and Optimization), + since this allows the Constraint_Error to move to a different handler. @end{Ramification} @begin{Reason} This permission is intended to allow extra-range registers @@ -5260,15 +5290,15 @@ or return the value of the object. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of primaries:) @begin{Example} -@Trailing@;4.0 --@ExamCom[ real literal] -Pi --@ExamCom[ named number] -(1 .. 10 => 0) --@ExamCom[ array aggregate] -Sum --@ExamCom[ variable] -Integer'Last --@ExamCom[ attribute] -Sine(X) --@ExamCom[ function call] -Color'(Blue) --@ExamCom[ qualified expression] -Real(M*N) --@ExamCom[ conversion] -(Line_Count + 10) --@ExamCom[ parenthesized expression ] +@Trailing@;4.0 --@ExamCom[ real literal] +Pi --@ExamCom[ named number] +(1 .. 10 => 0) --@ExamCom[ array aggregate] +Sum --@ExamCom[ variable] +Integer'Last --@ExamCom[ attribute] +Sine(X) --@ExamCom[ function call] +Color'(Blue) --@ExamCom[ qualified expression] +Real(M*N) --@ExamCom[ conversion] +(Line_Count + 10) --@ExamCom[ parenthesized expression ] @end{Example} @leading@keepnext@NewExample@i(Examples of expressions:) @@ -5396,7 +5426,9 @@ The language defines the following six categories of operators (given in order of increasing precedence). The corresponding @nts, and only those, can be used as @nts in declarations -of functions for user-defined operators. See @RefSec(Overloading of Operators).] +of functions for user-defined operators. See +@ISODiff{NotISO=[@RefSecFull{Overloading of Operators}], + ISOOnly=[@RefSecFullNum{Overloading of Operators}]}.] @Defn{and operator}@Defn2{Term=[operator],Sec=(and)} @Defn{or operator}@Defn2{Term=[operator],Sec=(or)} @Defn{xor operator}@Defn2{Term=[operator],Sec=(xor)} @@ -5486,7 +5518,7 @@ An expression of the form op Y, where op is a unary operator, is equivalent to a @nt of the form "op"(Y). The predefined operators and their effects are described -in subclauses @RefSecNum(Logical Operators and Short-Circuit Control Forms) +in @ISODiff{NotISO=[subclauses ],ISOOnly=[]}@RefSecNum(Logical Operators and Short-Circuit Control Forms) through @RefSecNum(Highest Precedence Operators).] @end{StaticSem} @@ -5570,14 +5602,14 @@ as for any @nt (see @RefSecNum(Subprogram Calls)). @begin{Examples} @Leading@keepnext@NewExample@i(Examples of precedence:) @begin{Example} -@key(not) Sunny @key(or) Warm --@ExamCom[ same as (not Sunny) or Warm] -X > 4.0 @key(and) Y > 0.0 --@ExamCom[ same as (X > 4.0) and (Y > 0.0)] - --4.0*A**2 --@ExamCom[ same as @en@;(4.0 * (A**2))] -@key(abs)(1 + A) + B --@ExamCom[ same as (abs (1 + A)) + B] -Y**(-3) --@ExamCom[ parentheses are necessary] -A / B * C --@ExamCom[ same as (A/B)*C] -A + (B + C) --@ExamCom[ evaluate B + C before adding it to A ] +@key(not) Sunny @key(or) Warm --@ExamCom[ same as (not Sunny) or Warm] +X > 4.0 @key(and) Y > 0.0 --@ExamCom[ same as (X > 4.0) and (Y > 0.0)] + +-4.0*A**2 --@ExamCom[ same as @en@;(4.0 * (A**2))] +@key(abs)(1 + A) + B --@ExamCom[ same as (abs (1 + A)) + B] +Y**(-3) --@ExamCom[ parentheses are necessary] +A / B * C --@ExamCom[ same as (A/B)*C] +A + (B + C) --@ExamCom[ evaluate B + C before adding it to A ] @end{Example} @end{Examples} @@ -5746,12 +5778,12 @@ following truth table: @Leading@keepnext@NewExample@i(Examples of logical operators:) @begin{Example} @trailing@;Sunny @key(or) Warm -Filter(1 .. 10) @key(and) Filter(15 .. 24) --@ExamCom[ see @RefSecNum{Index Constraints and Discrete Ranges} ] +Filter(1 .. 10) @key(and) Filter(15 .. 24) --@ExamCom[ see @RefSecNum{Index Constraints and Discrete Ranges} ] @end{Example} @leading@keepnext@NewExample@i(Examples of short-circuit control forms:) @begin{Example} -Next_Car.Owner /= @key(null) @key(and) @key(then) Next_Car.Owner.Age > 25 --@ExamCom[ see @RefSecNum{Incomplete Type Declarations}] +Next_Car.Owner /= @key(null) @key(and) @key(then) Next_Car.Owner.Age > 25 --@ExamCom[ see @RefSecNum{Incomplete Type Declarations}] N = 0 @key(or) @key(else) A(N) = Hit_Value @end{Example} @end{Examples} @@ -6535,7 +6567,7 @@ X /= Y @Chg{Version=[5],New=[A_String],Old=["A"]} < @Chg{Version=[5],New=["Bb"],Old=["B"]} @key(and) @Chg{Version=[5],New=[A_String],Old=["A"]} < "A " @Chg{Version=[5],New=[],Old=[]}--@Examcom[ True] @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0264-1]} -My_Car = @key(null) --@ExamCom[ @Chg{Version=[3],New=[True],Old=[true]} if My_Car has been set to null (see @RefSecNum{Incomplete Type Declarations})] +My_Car = @key(null) --@ExamCom[ @Chg{Version=[3],New=[True],Old=[true]} if My_Car has been set to null (see @RefSecNum{Incomplete Type Declarations})] My_Car = Your_Car --@ExamCom[ @Chg{Version=[3],New=[True],Old=[true]} if we both share the same car] My_Car.@key[all] = Your_Car.@key[all] --@ExamCom[ @Chg{Version=[3],New=[True],Old=[true]} if the two cars are identical] @@ -6821,11 +6853,11 @@ performed can be followed by a conditional addition of the modulus. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of expressions involving binary adding operators:) @begin{Example} -Z + 0.1 --@ExamCom[ Z has to be of a real type ] +Z + 0.1 --@ExamCom[ Z has to be of a real type ] -"A" & "BCD" --@ExamCom[ concatenation of two string literals] -'A' & "BCD" --@ExamCom[ concatenation of a character literal and a string literal] -'A' & 'A' --@ExamCom[ concatenation of two character literals ] +"A" & "BCD" --@ExamCom[ concatenation of two string literals] +'A' & "BCD" --@ExamCom[ concatenation of a character literal and a string literal] +'A' & 'A' --@ExamCom[ concatenation of two character literals ] @end{Example} @end{Examples} @@ -7154,10 +7186,10 @@ I : Integer := 1; J : Integer := 2; K : Integer := 3; -X : Real := 1.0; --@ExamCom[ see @RefSecNum{Floating Point Types}] +X : Real := 1.0; --@ExamCom[ see @RefSecNum{Floating Point Types}] Y : Real := 2.0; -F : Fraction := 0.25; --@ExamCom[ see @RefSecNum{Fixed Point Types}] +F : Fraction := 0.25; --@ExamCom[ see @RefSecNum{Fixed Point Types}] G : Fraction := 0.5; @end{Example} @begin{Example} @@ -8037,7 +8069,7 @@ defines how to map or transform a collection of values into a new set of values, and then summarize the values by applying an operation to reduce the set to a single value.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[reduction expression], - Def=[an expression that defines how to map or transform a collection of + Def=[expression that defines how to map or transform a collection of values into a new set of values, and then summarize the values by applying an operation to reduce the set to a single value]} @end{Intro} @@ -8194,8 +8226,8 @@ in @RefSecNum{Loop Statements}, @RefSecNum{User-Defined Iterator Types}, and @RefSecNum{Generalized Loop Iteration}), as a set of non-empty, non-overlapping contiguous chunks (@i)@Defn2{Term=[subsequence],Sec=[reduction attribute]} -with one logical thread of control (see clause -@RefSecNum{Tasks and Synchronization}) associated with each subsequence. +with one logical thread of control (see +@RefSecFullNum{Tasks and Synchronization}) associated with each subsequence. If there is a @nt{chunk_specification}, it determines the maximum number of chunks, as defined in @RefSecNum{Loop Statements}; otherwise @@ -8400,7 +8432,8 @@ expression that computes the Sine of X using a Taylor expansion:>]} @Trailing@ChgRef{Version=[5],Kind=[AddedNormal]} @ChgAdded{Version=[5],Text={@key[function] Sine (X : Float; Num_Terms : Positive := 5) @key[return] Float @key[is] ([@key[for] I @key[in] 1..Num_Terms => - (-1.0)**(I-1) * X**(2*I-1)/Float(Factorial(2*I-1))]'Reduce("+", 0.0));}} + (-1.0)**(I-1) * X**(2*I-1)/Float(Factorial(2*I-1))] + 'Reduce("+", 0.0));}} @end{Example} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0262-1],ARef=[AI12-0379-1],ARef=[AI12-0429-1]} diff --git a/source/04b.mss b/source/04b.mss index a1961dbb..c291284b 100644 --- a/source/04b.mss +++ b/source/04b.mss @@ -1,9 +1,9 @@ @Part(04, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:37 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @Comment{$Source: e:\\cvsroot/ARM/Source/04b.mss,v $} -@Comment{$Revision: 1.91 $} +@Comment{$Revision: 1.92 $} @NotIsoRMNewPageVer{Version=[5]}@Comment{For printed Ada 2022 RM only} @LabeledClause{Type Conversions} @@ -750,7 +750,8 @@ Numeric Type Conversion @Defn{accuracy} If the target type is some other real type, then the result is within the accuracy of the target type - (see @RefSec{Numeric Performance Requirements}, + (see @ISODiff{NotISO=[@RefSecFull{Numeric Performance Requirements}], + ISOOnly=[@RefSecFullNum{Numeric Performance Requirements}]}, for implementations that support the Numerics Annex). @begin(Discussion) An integer type might have more bits of precision than a real type, @@ -1068,13 +1069,14 @@ performed as above for a value conversion. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0290-1]} @ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0096-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @Defn2{Term=[Program_Error],Sec=(raised by failure of runtime check)} @Defn2{Term=[Constraint_Error],Sec=(raised by failure of runtime check)}@Chg{Version=[3],New=[ @Defn2{Term=(Assertion_Error),Sec=(raised by failure of runtime check)}],Old=[]} If an Accessibility_Check fails, Program_Error is raised. @Chg{Version=[3],New=[If a predicate check fails, @Chg{Version=[4],New=[the -effect is as defined in subclause @RefSec{Subtype Predicates}], -Old=[Assertions.Assertion_Error is +effect is as defined in @Chg{Version=[5],New=[@RefSecNum{Subtype Predicates}],Old=[subclause +@RefSec{Subtype Predicates}]}],Old=[Assertions.Assertion_Error is raised]}. ],Old=[]}Any other check associated with a conversion raises Constraint_Error if it fails. @@ -1192,6 +1194,7 @@ Similarly, such an @nt{expression} enclosed by parentheses is not allowed. A @nt (see @RefSecNum(Qualified Expressions)) can be used instead of such a @nt. +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} The constraint of the target subtype has no effect for a @nt of an elementary type passed as an @key(out) parameter. Hence, it is recommended @@ -1199,6 +1202,7 @@ that the first subtype be specified as the target to minimize confusion (a similar recommendation applies to renaming and generic formal @key(in out) objects). +@end{NotISO} @end{Notes} @begin{Examples} @@ -1534,6 +1538,7 @@ is the subtype denoted by the @nt{subtype_mark}.@Defn2{Term=[nominal subtype],Se @begin{RunTime} @ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0100-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @PDefn2{Term=[evaluation], Sec=(qualified_expression)} @IndexCheck{Range_Check} @IndexCheck{Discriminant_Check} @@ -1548,7 +1553,8 @@ the @nt{subtype_mark}. The exception Constraint_Error is raised if this check fails.@Chg{Version=[4], New=[ Furthermore, if predicate checks are enabled for the subtype denoted by the @nt{subtype_mark}, a check is performed as defined in -subclause @RefSec{Subtype Predicates} that the value satifies the predicates +@Chg{Version=[5],New=[@RefSecNum{Subtype Predicates}],Old=[subclause +@RefSec{Subtype Predicates}]} that the value satifies the predicates of the subtype.],Old=[]} @begin{Ramification} This is one of the few contexts in Ada 95 where implicit subtype conversion @@ -2089,7 +2095,9 @@ includes calls on corresponding Initialize or Adjust procedures. See @RefSecNum{Assignment and Finalization}. @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1]} -As explained in @RefSec{Storage Management}, +As explained in +@ISODiff{NotISO=[@RefSecFull{Storage Management}], +ISOOnly=[@RefSecFullNum{Storage Management}]}, the storage for an object allocated by an @nt{allocator} comes from a storage pool (possibly user defined). The exception Storage_Error is raised by an @nt if there @@ -2118,18 +2126,21 @@ but not required, to]} provide garbage collection@Chg{Version=[3],New=[],Old=[ @begin{Examples} @Leading@keepnext@NewExample@i{Examples of allocators:} @begin{Example} -@key(new) Cell'(0, @key(null), @key(null)) @ExamCom[-- initialized explicitly, see @RefSecNum{Incomplete Type Declarations}] -@key(new) Cell'(Value => 0, Succ => @key(null), Pred => @key(null)) @ExamCom[-- initialized explicitly] -@key(new) Cell @ExamCom[-- not initialized] +@key(new) Cell'(0, @key(null), @key(null)) @ISODiff{NotISO=[ ],ISOOnly=[]}--@ExamCom[ initialized explicitly, see @RefSecNum{Incomplete Type Declarations}] +@key(new) Cell'(Value => 0, Succ => @key(null), Pred => @key(null)) + --@ExamCom[ initialized explicitly] +@key(new) Cell --@ExamCom[ not initialized] -@key(new) Matrix(1 .. 10, 1 .. 20) @ExamCom[-- the bounds only are given] -@key(new) Matrix'(1 .. 10 => (1 .. 20 => 0.0)) @ExamCom[-- initialized explicitly] +@key(new) Matrix(1 .. 10, 1 .. 20) --@ExamCom[ the bounds only are given] +@key(new) Matrix'(1 .. 10 => (1 .. 20 => 0.0)) --@ExamCom[ initialized explicitly] -@key(new) Buffer(100) @ExamCom[-- the discriminant only is given] -@key(new) Buffer'(Size => 80, Pos => 0, Value => (1 .. 80 => 'A')) @ExamCom[-- initialized explicitly] +@key(new) Buffer(100) @ISODiff{NotISO=[ ],ISOOnly=[]}--@ExamCom[ the discriminant only is given] +@key(new) Buffer'(Size => 80, Pos => 0, Value => (1 .. 80 => 'A')) + --@ExamCom[ initialized explicitly] -Expr_Ptr'(@key(new) Literal) @ExamCom[-- allocator for access-to-class-wide type, see @RefSecNum{Type Extensions}] -Expr_Ptr'(@key(new) Literal'(Expression @key[with] 3.5)) @ExamCom[-- initialized explicitly] +Expr_Ptr'(@key(new) Literal) + --@ExamCom[ allocator for access-to-class-wide type, see @RefSecNum{Type Extensions}] +Expr_Ptr'(@key(new) Literal'(Expression @key[with] 3.5)) --@ExamCom[ initialized explicitly] @end{Example} @end{Examples} @@ -3004,16 +3015,17 @@ between two integers, the rounding is performed away from zero. @begin{Examples} @Leading@keepnext@NewExample@i(Examples of static expressions:) @begin{Example} -1 + 1 @ExamCom[-- 2] -@key(abs)(-10)*3 @ExamCom[-- 30] +1 + 1 --@ExamCom[ 2] +@key(abs)(-10)*3 --@ExamCom[ 30] Kilo : @key(constant) := 1000; -Mega : @key(constant) := Kilo*Kilo; @ExamCom[-- 1_000_000] +Mega : @key(constant) := Kilo*Kilo; --@ExamCom[ 1_000_000] Long : @key(constant) := Float'Digits*2; -Half_Pi : @key(constant) := Pi/2; @ExamCom[-- see @RefSecNum(Number Declarations)] +Half_Pi : @key(constant) := Pi/2; --@ExamCom[ see @RefSecNum(Number Declarations)] Deg_To_Rad : @key(constant) := Half_Pi/90; -Rad_To_Deg : @key(constant) := 1.0/Deg_To_Rad; @ExamCom[-- equivalent to 1.0/((3.14159_26536/2)/90)] +Rad_To_Deg : @key(constant) := 1.0/Deg_To_Rad; + --@ExamCom[ equivalent to 1.0/((3.14159_26536/2)/90)] @end{Example} @end{Examples} @@ -3619,7 +3631,7 @@ type on a conversion of the parameter of type T to the parent type.]} if halfway between) with a single leading character that is either a minus sign or a space, a single digit (that is nonzero unless the value is zero), a decimal point, S'Digits-1 (see @RefSecNum{Operations of Floating Point Types}) - digits after the decimal point (but one if + digits after the decimal point (but one if S'Digits is one), an upper case E, the sign of the exponent (either + or -), and two or more digits (with leading zeros if necessary) representing the exponent. If S'Signed_Zeros is True, then the leading character is a minus sign @@ -3731,7 +3743,7 @@ is the same as described below for a nonderived record type.]} @ChgAdded{Version=[5],Text=[If the default implementation of Put_Image writes components, the order in which components are written is the same canonical order in which components of a composite type T are written out - by the default implementation of T'Write. @Redundant[This is also the order + by the default implementation of T'Write. @Redundant[This is also the order that is used in determining the meaning of a positional aggregate of type T.]]} @begin{Discussion} diff --git a/source/05.mss b/source/05.mss index cc648bce..c0101819 100644 --- a/source/05.mss +++ b/source/05.mss @@ -1,10 +1,10 @@ @Part(05, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @LabeledSection{Statements} @Comment{$Source: e:\\cvsroot/ARM/Source/05.mss,v $} -@Comment{$Revision: 1.95 $} +@Comment{$Revision: 1.96 $} @begin{Intro} @Redundant[A @nt{statement} defines an action to be performed upon @@ -12,19 +12,21 @@ its execution.] @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00318-02]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @Redundant[This @Chg{Version=[3],New=[clause],Old=[section]} describes the general rules applicable to all @nt{statement}s. Some @nt{statement}s are discussed in later @Chg{Version=[3],New=[clauses],Old=[sections]}: @nt{Procedure_@!call_@!statement}s and @Chg{Version=[2],New=[return statements],Old=[@nt{return_@!statement}s]} are -described in @RefSec{Subprograms}. +described in @ISODiff{NotISO=[@RefSecFull{Subprograms}],ISOOnly=[@RefSecFullNum{Subprograms}]}. @nt{Entry_@!call_@!statement}s, @nt{requeue_@!statement}s, @nt{delay_@!statement}s, @nt{accept_@!statement}s, @nt{select_@!statement}s, and @nt{abort_@!statement}s are described in -@RefSec{Tasks and Synchronization}. -@nt{Raise_@!statement}s are described in @RefSec{Exceptions}, +@ISODiff{NotISO=[@RefSecFull{Tasks and Synchronization}],ISOOnly=[@RefSecFullNum{Tasks and Synchronization}]}. +@nt{Raise_@!statement}s are described in +@ISODiff{NotISO=[@RefSecFull{Exceptions}],ISOOnly=[@RefSecFullNum{Exceptions}]}, and @nt{code_@!statement}s in -@RefSecNum{Representation Issues}. +@ISODiff{NotISO=[@RefSecFull{Representation Issues}],ISOOnly=[@RefSecFullNum{Representation Issues}]}. The remaining forms of @nt{statement}s are presented in this @Chg{Version=[3],New=[clause],Old=[section]}.] @end{Intro} @@ -48,7 +50,7 @@ no other @nt. A @nt can enclose @nts and other @nts.]@Chg{Version=[5],New=[ A @i@Defn{parallel construct}@Defn2{Term=[construct],Sec=[parallel]} is a construct that introduces additional -logical threads of control (see clause @RefSecNum{Tasks and Synchronization}) +logical threads of control (see @RefSecFullNum{Tasks and Synchronization}) without creating a new task. Parallel loops (see @RefSecNum{Loop Statements}) and @nt{parallel_block_statement}s (see @@ -61,7 +63,7 @@ Text=<@ChgAdded{Version=[5],Text=[A parallel construct is an executable construct that defines multiple activities of a single task that can proceed in parallel, via the execution of multiple logical threads of control.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[parallel construct], - Def=[an executable construct that defines multiple + Def=[executable construct that defines multiple activities of a single task that can proceed in parallel, via the execution of multiple logical threads of control]} @end{Intro} @@ -173,14 +175,14 @@ or @nt with the given @nt. @end{example} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The label in this example is hidden from itself by the loop parameter - with the same name; - the example is illegal. + with the same name; the example is illegal. We considered creating a new syntactic category name, separate from @nt{direct_name} and @nt{selector_name}, for use in the case of statement - labels. - However, that would confuse the rules in @Chg{Version=[3],New=[Clause],Old=[Section]} - 8, so we didn't do it. + labels. However, that would confuse the rules in + @Chg{Version=[5],New=[@RefSecFullNum{Visibility}], + Old=[@Chg{Version=[3],New=[Clause],Old=[Section]} 8]}, so we didn't do it. @end{Reason} @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0179-1]} @@ -505,7 +507,9 @@ raise an exception (see @RefSecNum{Type Conversions}).] @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0439-1]} In cases involving controlled types, the target is finalized, and an anonymous object @Chg{Version=[5],New=[can],Old=[might]} be used as -an intermediate in the assignment, as described in @RefSec{Completion and Finalization}. +an intermediate in the assignment, as described in +@ISODiff{NotISO=[@RefSecFull{Completion and Finalization}], +ISOOnly=[@RefSecFullNum{Completion and Finalization}]}. @Defn{assignment operation} @Defn2{Term=[assignment operation], Sec=(during execution of an @nt{assignment_statement})} @@ -522,9 +526,10 @@ nothing. The value of the target becomes the converted value. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} If any part of the target is controlled, its value - is adjusted as explained in @Chg{Version=[3],New=[subclause],Old=[clause]} - @RefSecNum{Assignment and Finalization}. + is adjusted as explained in @Chg{Version=[5],New=[], + Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum{Assignment and Finalization}. @PDefn2{Term=[adjustment], Sec=(as part of assignment)} @begin{Ramification} If any parts of the object are controlled, @@ -570,12 +575,13 @@ component or slice of such a variable Value := Max_Value - 1; Shade := Blue; -Next_Frame(F)(M, N) := 2.5; --@ExamCom{ see @RefSecNum{Indexed Components}} -U := Dot_Product(V, W); --@ExamCom{ see @RefSecNum{Subprogram Bodies}} +Next_Frame(F)(M, N) := 2.5; --@ExamCom{ see @RefSecNum{Indexed Components}} +U := Dot_Product(V, W); --@ExamCom{ see @RefSecNum{Subprogram Bodies}} @Trailing@ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0056-1]} -Writer := (Status => Open, Unit => Printer, Line_Count => 60); --@ExamCom{ see @RefSecNum{Variant Parts and Discrete Choices}} -@Chg{Version=[4],New=[Next],Old=[Next_Car]}.@key[all] := (72074, @key[null]@Chg{Version=[4],New=[, Head],Old=[]});@Chg{Version=[4],New=[],Old=[ ]} --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} +Writer := (Status => Open, Unit => Printer, Line_Count => 60); + --@ExamCom{ see @RefSecNum{Variant Parts and Discrete Choices}} +@Chg{Version=[4],New=[Next],Old=[Next_Car]}.@key[all] := (72074, @key[null]@Chg{Version=[4],New=[, Head],Old=[]});@Chg{Version=[4],New=[],Old=[ ]} --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} @end{Example} @Leading@keepnext@NewExample@i{Examples involving scalar subtype conversions:} @@ -584,9 +590,9 @@ I, J : Integer @key[range] 1 .. 10 := 5; K : Integer @key[range] 1 .. 20 := 15; ... -I := J; --@ExamCom{ identical ranges} -K := J; --@ExamCom{ compatible ranges} -J := K; --@ExamCom{ will raise Constraint_Error if K > 10} +I := J; --@ExamCom{ identical ranges} +K := J; --@ExamCom{ compatible ranges} +J := K; --@ExamCom{ will raise Constraint_Error if K > 10} @end{Example} @NotISORMNewPageVer{Version=[3]}@Comment{For printed version of Ada 2012 RM} @@ -596,22 +602,33 @@ A : String(1 .. 31); B : String(3 .. 33); ... -A := B; --@ExamCom{ same number of components} +A := B; --@ExamCom{ same number of components} A(1 .. 9) := "tar sauce"; -A(4 .. 12) := A(1 .. 9); --@ExamCom{ A(1 .. 12) = "tartar sauce"} +A(4 .. 12) := A(1 .. 9); --@ExamCom{ A(1 .. 12) = "tartar sauce"} @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph number not change} +@ChgAdded{Version=[5],Text=[@nt{Assignment_statement}s are well-defined +even in the case of overlapping slices of the same array, +because the @SynI{variable_}@nt{name} and @nt{expression} +are both evaluated before copying the value into the variable. +In the above example, an implementation yielding +@exam{A(1 .. 12) = "tartartartar"} would be incorrect.]} + @end{Examples} @begin{Notes} -@i{Notes on the examples:} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i{Notes on the examples:} @nt{Assignment_statement}s are allowed even in the case of overlapping slices of the same array, because the @SynI{variable_}@nt{name} and @nt{expression} are both evaluated before copying the value into the variable. In the above example, an implementation yielding A(1 .. 12) = "tartartartar" would be -incorrect. +incorrect.]} @end{Notes} @begin{Extend83} @@ -703,16 +720,16 @@ constant view of @i, having the nominal subtype of @i.]]} @end{Legality} @begin{RunTime} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0125-3],ARef=[AI12-0322-1]} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0125-3],ARef=[AI12-0322-1],ARef=[AI12-0449-1]} @ChgAdded{Version=[5],Text=[For the execution of an @nt{assignment_statement} with one or more @nt{target_name}s appearing in its @nt{expression}, the @SynI{variable_}@nt{name} @i{V} of the @nt{assignment_statement} is evaluated first to determine the object denoted by @i{V}, and then the @nt{expression} of the @nt{assignment_statement} is evaluated with the evaluation of -each @nt{target_name} yielding a constant view of the the target whose +each @nt{target_name} yielding a constant view of the target whose properties are otherwise identical to those of the view provided by @i{V}. The remainder of the execution of the @nt{assignment_statement} is as given in -subclause @RefSecNum{Assignment Statements}.]} +@RefSecNum{Assignment Statements}.]} @begin{Honest} @ChgRef{Version=[5],Kind=[AddedNormal]} @@ -742,16 +759,18 @@ name symbols:}]} @begin{Example} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0125-3],ARef=[AI12-0379-1],ARef=[AI12-0442-1]} -@ChgAdded{Version=[5],Text=[Board(1, 1) := @@ + 1.0; -- @Examcom - -- @Examcom<(Board is declared in @RefSecNum{Index Constraints and Discrete Ranges}).>]} +@ChgAdded{Version=[5],Text=[Board(1, 1) := @@ + 1.0; + --@Examcom< An abbreviation for Board(1, 1) := Board(1, 1) + 1.0;> + --@Examcom< (Board is declared in @RefSecNum{Index Constraints and Discrete Ranges}).>]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0125-3]} -@ChgAdded{Version=[5],Text=[My_Complex_Array : @key[array] (1 .. Max) @key[of] Complex; -- @Examcom +@ChgAdded{Version=[5],Text=[My_Complex_Array : @key[array] (1 .. Max) @key[of] Complex; --@Examcom< See @RefSecNum{Number Declarations}, @RefSecNum{Record Types}.> ... --- @Examcom +--@Examcom< Square the element in the Count (see @RefSecNum{Object Declarations}) position:> My_Complex_Array (Count) := (Re => @@.Re**2 - @@.Im**2, Im => 2.0 * @@.Re * @@.Im); - -- @Examcom]} + --@Examcom< A target_name can be used multiple times and> + --@Examcom< as a prefix if desired.>]} @end{Example} @end{Examples} @@ -836,7 +855,7 @@ none of them is executed. Put(Item); @key[end] @key[if]; -@key[if] My_Car.Owner.Vehicle /= My_Car @key[then] --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} +@key[if] My_Car.Owner.Vehicle /= My_Car @key[then] --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} Report ("Incorrect data"); @key[end] @key[if]; @end{Example} @@ -1254,7 +1273,7 @@ subtype) is that defined by the @nt{discrete_subtype_definition}.]} @begin{RunTime} @ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0250-1],ARef=[AI12-0327-1]} @ChgAdded{Version=[5],Text=[The @i of an @i{iterator construct} -@Defn{iterator construct}@Defn2{Term=[filter],Sec={iterator construct}} (a +@Defn{iterator construct}@Defn2{Term=[filter],Sec={iterator construct}}(a @nt{loop_parameter_specification}, @nt{iterator_specification}, or @nt{procedural_iterator}) is defined to be @i{satisfied}@Defn2{Term=[satisfied],Sec=[filter]} when there is no @@ -1267,7 +1286,7 @@ Text=<@ChgAdded{Version=[5],Text=[An iterator filter is a construct that is used to restrict the elements produced by an iteration to those for which a boolean condition evaluates to True.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[iterator filter], - Def=[a construct that is used to restrict the elements + Def=[construct that is used to restrict the elements produced by an iteration to those for which a boolean condition evaluates to True]} @@ -1313,7 +1332,7 @@ in the @nt{iteration_scheme} of a @nt{loop_statement} (a @i{parallel loop}),@Defn{parallel loop}@Defn2{Term=[loop],Sec=[parallel]} the iterations are partitioned into one or more @Defn{chunk}@i{chunks}, each with its own separate logical thread of control (see -clause @RefSecNum{Tasks and Synchronization}). If a @nt{chunk_specification} +@RefSecFullNum{Tasks and Synchronization}). If a @nt{chunk_specification} is present in a parallel loop, it is elaborated first, and the result of the elaboration determines the maximum number of chunks used for the parallel loop. @PDefn2{Term=[elaboration], Sec=(chunk_specification)} @@ -1835,7 +1854,7 @@ Text=<@ChgAdded{Version=[3],Text=[An iterable container type is one that has user-defined behavior for iteration, via the Default_Iterator and Iterator_Element aspects.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[iterable container type], - Def=[a type that has user-defined behavior for + Def=[type that has user-defined behavior for iteration, via the Default_Iterator and Iterator_Element aspects]} @ChgRef{Version=[4],Kind=[Added],ARef=[AI12-0138-1]} @@ -2032,7 +2051,7 @@ Text=<@ChgAdded{Version=[3],Text=[An iterator is a construct that is used to loop over the elements of an array or container. Iterators may be user defined, and may perform arbitrary computations to access elements from a container.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[iterator], - Def=[a construct that is used to loop over the elements of an + Def=[construct that is used to loop over the elements of an array or container], Note1=[Iterators can be user defined, and can perform arbitrary computations to access elements from a container.]} @@ -3049,11 +3068,11 @@ the determined maximum number of chunks is greater than zero. If this check fails, Program_Error is raised.@IndexCheck{Program_Error_Check} @Defn2{Term=[Program_Error],Sec=(raised by failure of runtime check)}]} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0119-1],ARef=[AI12-0427-1],ARef=[AI12-0436-1]} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0119-1],ARef=[AI12-0427-1],ARef=[AI12-0436-1],ARef=[AI12-0449-1]} @ChgAdded{Version=[5],Text=[Then, the various @nt{sequence_of_statements} are grouped into one or more @i,@PDefn{chunk} -each with its own logical thread of control (see clause -@RefSecNum{Tasks and Synchronization}), up to the maximum number +each with its own logical thread of control (see +@RefSecFullNum{Tasks and Synchronization}), up to the maximum number of chunks specified by the @nt{chunk_specification}, if any. Within each chunk every @nt{sequence_of_statements} of the chunk is executed in turn, in an arbitrary order. The diff --git a/source/06.mss b/source/06.mss index 85c7a465..663b2f5e 100644 --- a/source/06.mss +++ b/source/06.mss @@ -1,10 +1,10 @@ @Part(06, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @LabeledSection{Subprograms} @Comment{$Source: e:\\cvsroot/ARM/Source/06.mss,v $} -@Comment{$Revision: 1.168 $} +@Comment{$Revision: 1.169 $} @begin{Intro} @Defn{subprogram} @@ -35,16 +35,16 @@ returns a result and can be called as part of an expression.]}>} Text=<@ChgAdded{Version=[2],Text=[A procedure is a form of subprogram that does not return a result and can only be called by a @nt{statement}.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[S],Term=[subprogram], - Def=[a unit of a program that can be brought into execution in various + Def=[unit of a program that can be brought into execution in various contexts, with the invocation being a subprogram call that can parameterize the effect of the subprogram through the passing of operands], Note1=[There are two forms of subprograms: functions, which return values, and procedures, which do not.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[S],Term=[function], - Def=[a form of subprogram that returns a result and can be + Def=[form of subprogram that returns a result and can be called as part of an expression]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[S],Term=[procedure], - Def=[a form of subprogram that does not return a result and + Def=[form of subprogram that does not return a result and can only be invoked by a statement]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @@ -123,12 +123,14 @@ library units (see @RefSecNum{Compilation Units - Library Units}).] @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00395-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The sequence of characters in an @nt{operator_symbol} shall @Chg{Version=[2], New=[form a reserved word, a delimiter, or compound delimiter that corresponds],Old=[correspond]} to an operator belonging to one of the six @Chg{Version=[2],New=[categories], Old=[classes]} of operators -defined in @Chg{Version=[3],New=[subclause],Old=[clause]} @RefSecNum{Operators and Expression Evaluation}@Chg{Version=[2], +defined in @Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} +]}@RefSecNum{Operators and Expression Evaluation}@Chg{Version=[2], New=[],Old=[(spaces are not allowed and the case of letters is not significant)]}. @@ -378,17 +380,21 @@ The @i{types of a profile} are the types of those subtypes.] @Redundant[A subprogram declared by an @nt is abstract; a subprogram declared by a @nt -is not. See @RefSec{Abstract Types and Subprograms}.@Chg{Version=[2],New=[ +is not. See @ISODiff{NotISO=[@RefSecFull{Abstract Types and Subprograms}], + ISOOnly=[@RefSecFullNum{Abstract Types and Subprograms}]}.@Chg{Version=[2],New=[ Similarly, a procedure @Chg{Version=[3],New=[declared],Old=[defined]} by a @nt{null_procedure_declaration} is a null procedure; a procedure declared by -a @nt{subprogram_declaration} is not. See @RefSec{Null Procedures}.@Chg{Version=[3],New=[ +a @nt{subprogram_declaration} is not. See @ISODiff{NotISO=[@RefSecFull{Null Procedures}], + ISOOnly=[@RefSecFullNum{Null Procedures}]}.@Chg{Version=[3],New=[ Finally, a function declared by an @nt{expression_function_declaration} is an expression function; a function declared by -a @nt{subprogram_declaration} is not. See @RefSec{Expression Functions}.],Old=[]}],Old=[]}] +a @nt{subprogram_declaration} is not. See @ISODiff{NotISO=[@RefSecFull{Expression Functions}], + ISOOnly=[@RefSecFullNum{Expression Functions}]}.],Old=[]}],Old=[]}] @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00218-03]} @ChgAdded{Version=[2],Text=[@Redundant[An @nt{overriding_indicator} is used to -indicate whether overriding is intended. See @RefSec{Overriding Indicators}.]]} +indicate whether overriding is intended. See @ISODiff{NotISO=[@RefSecFull{Overriding Indicators}], + ISOOnly=[@RefSecFullNum{Overriding Indicators}]}.]]} @end{StaticSem} @begin{RunTime} @@ -405,7 +411,8 @@ to a sequence of single @nt{parameter_specification}s, as explained in @RefSecNum{Objects and Named Numbers}. Abstract subprograms do not have bodies, and cannot be used -in a nondispatching call (see @RefSec{Abstract Types and Subprograms}). +in a nondispatching call (see @ISODiff{NotISO=[@RefSecFull{Abstract Types and Subprograms}], +ISOOnly=[@RefSecFullNum{Abstract Types and Subprograms}]}). The evaluation of @nts is caused by certain calls, as described in @RefSecNum{Parameter Associations}. @@ -421,25 +428,25 @@ concurrently from multiple tasks. @begin{Example} @key[procedure] Traverse_Tree; @key[procedure] Increment(X : @key[in] @key[out] Integer); -@key[procedure] Right_Indent(Margin : @key[out] Line_Size); --@ExamCom{ see @RefSecNum{Integer Types}} -@key[procedure] Switch(From, To : @key[in] @key[out] Link); --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} +@key[procedure] Right_Indent(Margin : @key[out] Line_Size); --@ExamCom{ see @RefSecNum{Integer Types}} +@key[procedure] Switch(From, To : @key[in] @key[out] Link); --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} -@key[function] Random @key[return] Probability; --@ExamCom{ see @RefSecNum{Floating Point Types}} +@key[function] Random @key[return] Probability; --@ExamCom{ see @RefSecNum{Floating Point Types}} @ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0056-1]} -@key[function] Min_Cell(X : Link) @key[return] Cell; --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} -@key[function] Next_Frame(K : Positive) @key[return] Frame; --@ExamCom{ see @RefSecNum{Access Types}} -@key[function] Dot_Product(Left, Right : Vector) @key[return] Real; --@ExamCom{ see @RefSecNum{Array Types}}@Chg{Version=[4],New=[ +@key[function] Min_Cell(X : Link) @key[return] Cell; --@ExamCom{ see @RefSecNum{Incomplete Type Declarations}} +@key[function] Next_Frame(K : Positive) @key[return] Frame; --@ExamCom{ see @RefSecNum{Access Types}} +@key[function] Dot_Product(Left, Right : Vector) @key[return] Real; --@ExamCom{ see @RefSecNum{Array Types}}@Chg{Version=[4],New=[ @key[function] Find(B : @key[aliased in out] Barrel; Key : String) @key[return] Real; - --@ExamCom{ see @RefSecNum{User-Defined References}}],Old=[]} + --@ExamCom{ see @RefSecNum{User-Defined References}}],Old=[]} -@trailing@key[function] "*"(Left, Right : Matrix) @key[return] Matrix; --@ExamCom{ see @RefSecNum{Array Types}} +@trailing@key[function] "*"(Left, Right : Matrix) @key[return] Matrix; --@ExamCom{ see @RefSecNum{Array Types}} @end{Example} @leading@keepnext@NewExample@i{Examples of @key[in] parameters with default expressions:} @begin{Example} @key[procedure] Print_Header(Pages : @key[in] Natural; - Header : @key[in] Line := (1 .. Line'Last => ' '); --@ExamCom{ see @RefSecNum{Array Types}} + Header : @key[in] Line := (1 .. Line'Last => ' '); --@ExamCom{ see @RefSecNum{Array Types}} Center : @key[in] Boolean := True); @end{Example} @end{Examples} @@ -675,10 +682,10 @@ access-to-subprogram type,],Old=[]} the following language-defined applies to corresponding subprograms in descendant types.]} @end{Discussion} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[S],Term=[precondition], - Def=[an assertion that is expected to be True when a given + Def=[assertion that is expected to be True when a given subprogram is called]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[S],Term=[postcondition], - Def=[an assertion that is expected to be True when a given + Def=[assertion that is expected to be True when a given subprogram returns normally]} @end{Intro} @@ -697,7 +704,7 @@ subprogram @Chg{Version=[4],New=[@i ],Old=[]}of a tagged type @i, a @Chg{Version=[4],New=[@nt],Old=[name]} that denotes a formal parameter @Chg{Version=[4],New=[(or @i'Result) ],Old=[]}of type @i is interpreted as @Chg{Version=[4],New=[though it had a (notional) -@Chg{Version=[5],New=[nonabstract ],Old=[]} type +@Chg{Version=[5],New=[nonabstract ],Old=[]}type @i that is a formal derived type whose ancestor type is @i, with directly visible primitive operations],Old=[having type @i'Class]}. Similarly, a @Chg{Version=[4],New=[@nt],Old=[name]} that denotes a @@ -978,7 +985,7 @@ aspect would be illegal]}.]} some calls to non-abstract primitives of a tagged abstract type illegal even if no abstract routines are involved in the Pre'Class or Post'Class. It is likely that the above rule will be adjusted; check with ARG work at - @URLLink{URL=[http://www.ada_auth.org/arg.html], Text=[www.ada_auth.org/arg.html]} + @URLLink{URL=[http://www.ada-auth.org/arg.html], Text=[www.ada-auth.org/arg.html]} to find the adjusted rules.]} @end{Discussion} @@ -1501,7 +1508,7 @@ type],Old=[]}}, the following attribute is defined:]} function@Chg{Version=[5],New=[ call for which the postcondition expression is evaluated],Old=[]}. The type of this attribute is that of the @Chg{Version=[5],New=[result subtype of the ],Old=[]}function - @Chg{Version=[5],New=[or access-to-function type ],Old=[result]} except + @Chg{Version=[5],New=[or access-to-function type],Old=[result]} except within a Post'Class postcondition expression for a function with a controlling result or with a controlling access result@Chg{Version=[5],New=[; in those cases the type of the attribute is @@ -2252,7 +2259,7 @@ variables global to the entity that are within the global variable set associated with either the @key[in out] or @key[out] @nt{global_mode}s. In the absence of the No_Hidden_Indirect_Globals restriction (see @RefSecNum{High Integrity Restrictions}), -this ignores objects reached via a dereference of an access value. The +this ignores objects reached via a dereference of an access value. The above rule includes any possible Global effects of calls occurring during the execution of the operation, except for the following excluded calls:]} @@ -2369,7 +2376,7 @@ Global aspect.]}]} from SPARK 2014 to remain acceptable in conforming implementations, as well as to provide flexibility for future enhancements. Note the word @ldquote@;extend@rdquote in this permission; we expect that any aspect usage - that conforms with the (other) rules of this clause will be accepted by + that conforms with the (other) rules of this subclause will be accepted by any Ada implementation, regardless of any implementation-defined extensions.]} @end{Reason} @@ -2377,7 +2384,7 @@ Global aspect.]}]} @begin{Notes} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0312-1]} - @ChgAdded{Version=[5],Text=[For an example of the use of these aspects and attributes, + @ChgAdded{Version=[5],Text=[For an example of the use of these aspects, see the Vector container definition in @RefSecNum{The Generic Package Containers.Vectors}.]} @end{Notes} @@ -2458,7 +2465,7 @@ or @Chg{Version=[4],New=[view conversion],Old=[@nt{type_conversion}]}, this object is the one associated with the operand.]}@Chg{Version=[4],New=[ For a value conversion, the associated object is the anonymous result object if such an object is created (see @RefSecNum{Type Conversions}); otherwise it is the -associated object of the operand.],Old=[]}@Chg{Version=[5],New=[ In +associated object of the operand.],Old=[]}@Chg{Version=[5],New=[ In other cases, the object associated with the evaluated operative constituent of the @nt{name} or @nt{expression} (see @RefSecNum{Expressions}) determines its associated object.],Old=[@Chg{Version=[3],New=[ For a @@ -2861,7 +2868,8 @@ conformance, subtype conformance, or full conformance.] @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0011],ARef=[AI95-00117-01]} @leading@Defn{convention} @Defn{calling convention} -@Redundant[As explained in @RefSec{Interfacing Aspects}, +@Redundant[As explained in @ISODiff{NotISO=[@RefSecFull{Interfacing Aspects}], +ISOOnly=[@RefSecFullNum{Interfacing Aspects}]}, a @i{convention} can be specified for an entity.] @Chg{New=[Unless this @IntlStdName states otherwise, the default convention of an entity is Ada.],Old=[]} @@ -4686,7 +4694,7 @@ is raised;@Defn2{Term=[Program_Error],Sec=(raised by failure of runtime check)}] @ChgRef{Version=[5],Kind=[RevisedAdded]}@Comment{Previous insertion changes this paragraph number} @ChgAdded{Version=[3],Text=[In a function call, for each explicitly aliased parameter, a check is made that the accessibility level of the master of the -actual object is not deeper than that of the master of the call +actual object is not deeper than that of the master of the call (see @RefSecNum{Operations of Access Types}).]} @begin{Ramification} @ChgRef{Version=[3],Kind=[AddedNormal]} @@ -4917,9 +4925,9 @@ as it is subsumed by earlier @Chg{Version=[3],New=[],Old=[clauses and ]}subclaus @begin{Intro} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00318-02]} A @Chg{Version=[2],New=[@nt{simple_@!return_@!statement} or -@nt{extended_@!return_@!statement} (collectively called a @i) -@Defn{return statement}],Old=[@nt{return_statement}]} is used to -complete the execution of the +@nt{extended_@!return_@!statement} (collectively called a +@i)@Defn{return statement}],Old=[@nt{return_statement}]} +is used to complete the execution of the innermost enclosing @nt{subprogram_@!body}, @nt{entry_@!body}, or @nt{accept_@!statement}. @end{Intro} @@ -5702,10 +5710,10 @@ that object.]} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00318-02]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0058-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0343-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0343-1],ARef=[AI12-0449-1]} @Chg{Version=[5],New=[A check is performed that the return value satisfies the -predicates of the return subtype. If this check fails, the effect is as defined in subclause -@RefSec{Subtype Predicates}.@Defn2{Term=[Assertion_Error],Sec=(raised by failure of runtime check)}],Old=[@Chg{Version=[2],New=[For +predicates of the return subtype. If this check fails, the effect is as defined in +@RefSecNum{Subtype Predicates}.@Defn2{Term=[Assertion_Error],Sec=(raised by failure of runtime check)}],Old=[@Chg{Version=[2],New=[For the execution of an @nt{extended_@!return_@!statement}, the @nt{handled_@!sequence_@!of_@!statements} is executed. Within this @nt{handled_@!sequence_@!of_@!statements}, the execution of a @@ -6403,9 +6411,10 @@ two positional actual parameters being the operand(s) of the operator (in order). @begin{Honest} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -We also use the term operator -(in @Chg{Version=[3],New=[Clause],Old=[Section]} 4 and in -@RefSecNum{Subprogram Declarations}) +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +We also use the term operator (in +@Chg{Version=[5],New=[@RefSecFullNum{Names and Expressions}],Old=[@Chg{Version=[3],New=[Clause],Old=[Section]} 4]} +and in @RefSecNum{Subprogram Declarations}) to refer to one of the syntactic categories defined in @RefSec{Operators and Expression Evaluation} whose names end with @lquotes@;_operator:@rquotes@; diff --git a/source/07.mss b/source/07.mss index 0ea58f47..3d06ce06 100644 --- a/source/07.mss +++ b/source/07.mss @@ -1,10 +1,10 @@ @Part(07, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:38 $} +@Comment{$Date: 2023/01/05 05:49:07 $} @LabeledSection{Packages} @Comment{$Source: e:\\cvsroot/ARM/Source/07.mss,v $} -@Comment{$Revision: 1.161 $} +@Comment{$Revision: 1.162 $} @begin{Intro} @redundant[@ToGlossaryAlso{Term=, @@ -20,7 +20,7 @@ @IndexSee{Term=[module],See=(package)} @IndexSeeAlso{Term=[class],See=(package)}] @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[package], - Def=[a program unit that defines the interface to a group of + Def=[program unit that defines the interface to a group of logically related entities, along with their implementation], Note1=[Typically, a package contains the declaration of a type (often a private type or private extension) along with the declarations of @@ -278,7 +278,6 @@ have a corresponding body anyway. @end{Legality} @begin{StaticSem} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} In any @nt{package_body} without @nt{statement}s there is an implicit @nt{null_@!statement}. For any @nt{package_@!declaration} without an explicit completion, @@ -295,8 +294,8 @@ the order of the implicit @ntf{package_@!bodies} is unspecified. occurs at the place of the instantiation (see @RefSecNum{Generic Instantiation}). For a library package, the place is partially determined by the -elaboration dependences (see @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Program Structure and Compilation Issues}).)] +elaboration dependences (see +@RefSecFullNum{Program Structure and Compilation Issues}).)] @begin{Discussion} Thus, for example, we can refer to something happening just after the @key{begin} of a @nt{package_body}, @@ -807,12 +806,12 @@ If the reserved word @key{synchronized} appears in a @nt{private_extension_declaration}, the ancestor type shall be a limited interface.]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} If the declaration of a partial view includes a @nt{known_discriminant_part}, then the @nt{full_type_declaration} shall have a fully conforming -@Redundant[(explicit)] -@nt{known_discriminant_part} -@Redundant[(see @RefSec(Conformance Rules))]. +@Redundant[(explicit)] @nt{known_discriminant_part} @Redundant[(see +@Chg{Version=[5],New=[@RefSecNum(Conformance Rules)],Old=[@RefSec(Conformance Rules)]})]. @Defn2{Term=[full conformance],Sec=(required)} @Redundant[The ancestor subtype may be unconstrained; the parent subtype of the full view is required to be constrained @@ -1304,14 +1303,15 @@ descendant only through record extensions of a more distant ancestor].]} @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0115-1]} @ChgRef{Version=[4],Kind=[RevisedAdded],ARef=[AI12-0065-1]} -@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0140-1]}@Comment{Only because the paragraph number changes} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0140-1],ARef=[AI12-0451-1]}@Comment{140 only because the paragraph number changes} @ChgAdded{Version=[3],Text=[@Redundant[@Chg{Version=[4],New=[Furthermore, it],Old=[It]} is possible for there to be places where a derived type is @Chg{Version=[4],New=[known to be derived indirectly from],Old=[visibly a descendant of]} an ancestor type, but @Chg{Version=[4],New=[is ],Old=[]}not a descendant of even a partial view of the ancestor type, because the parent -of the derived type is not visibly a descendant of the ancestor. In +of @Chg{Version=[5],New=[this],Old=[the]} derived type is not visibly a +descendant of the ancestor. In this case, the derived type inherits no characteristics from that ancestor, but nevertheless is within the derivation class of the ancestor for the purposes of type conversion, the "covers" @@ -1634,27 +1634,53 @@ are also defined for discriminants and inherited components. @key[end] "<"; @key[end] Key_Manager; @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph numbers not change} +@ChgAdded{Version=[5],Text=[Outside of the package Key_Manager, the operations +available for objects of type Key include assignment, the comparison for +equality or inequality, the procedure Get_Key and the operator "<"; they do +not include other relational operators such as ">=", or arithmetic +operators.]} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0440-1],ARef=[AI12-0452-1]} +@ChgAdded{Version=[5],Text=[The explicitly declared operator "<" hides the +predefined operator +"<" implicitly declared by the @nt{full_type_declaration}. Within the +body of the function, an explicit conversion of X and Y to the +subtype Natural is necessary to invoke the "<" operator of the parent +type. Alternatively, the result of the function can +be written as @key[not] (X >= Y), since the operator ">=" is not redefined.]} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]} +@ChgAdded{Version=[5],Text=[The value of the variable Last_Key, declared in the +package body, remains unchanged between calls of the procedure Get_Key. (See also +the NOTEs of @RefSecNum{Package Bodies}.)]} + @end{Examples} @begin{Notes} -@i{Notes on the example:} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i{Notes on the example:} Outside of the package Key_Manager, the operations available for objects of type Key include assignment, the comparison for equality or inequality, the procedure Get_Key and the operator "<"; they do not include other relational operators such as ">=", or arithmetic -operators. +operators.]} -@NoPrefix@;The explicitly declared operator "<" hides the predefined operator +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],NoPrefix=[T],Text=[The explicitly +declared operator "<" hides the predefined operator "<" implicitly declared by the @nt{full_type_declaration}. Within the body of the function, an explicit conversion of X and Y to the subtype Natural is necessary to invoke the "<" operator of the parent -type. -Alternatively, the result of the function @Chg{Version=[5],New=[can],Old=[could]} -be written as @key[not] (X >= Y), since the operator ">=" is not redefined. +type. Alternatively, the result of the function could +be written as @key[not] (X >= Y), since the operator ">=" is not redefined.]} -@NoPrefix@;The value of the variable Last_Key, declared in the package body, -remains unchanged between calls of the procedure Get_Key. (See also -the NOTES of @RefSecNum{Package Bodies}.) +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],NoPrefix=[T],Text=[The value of the variable Last_Key, +declared in the package body, remains unchanged between calls of the procedure +Get_Key. (See also the NOTES of @RefSecNum{Package Bodies}.)]} @end{Notes} @begin{DiffWord83} @@ -1725,7 +1751,7 @@ specified with an @nt{aspect_specification} (see Type_Invariant may be specified on a @nt{private_@!type_@!declaration}, on a @nt{private_@!extension_@!declaration}, or on a @nt{full_@!type_@!declaration} that declares the completion of a private type or private - extension.@AspectDefn{Type_Invariant}]} + extension.@AspectDefn{Type_Invariant}@Defn{invariant}@Defn{type invariant}@SeeAlso{Primary=[type invariant],Other=[invariant]}]} @ChgAspectDesc{Version=[3],Kind=[AddedNormal],Aspect=[Type_Invariant], Text=[@ChgAdded{Version=[3],Text=[A condition that will hold true for all @@ -1763,10 +1789,8 @@ specified with an @nt{aspect_specification} (see objects in a class of types.]}]} @end{Description} -@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[type invariant], - Def=[see invariant]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[invariant], - Def=[an assertion that is expected to be True for all objects of a given + Def=[assertion that is expected to be True for all objects of a given private type when viewed from outside the defining package]} @end{Intro} @@ -2143,7 +2167,7 @@ on the specified object(s):@Defn{invariant check}]} access-to-object parameter or result) is incomplete at the point of the declaration of the callable entity, and if the completion of that incomplete type does not occur in the same declaration list as the incomplete - declaration, then for purposes of the preceding rules the nominal type is + declaration, then for purposes of the preceding rules the nominal type is considered to have no parts],Old=[The check is performed on each such part]} of type @i.]} @@ -2595,7 +2619,7 @@ additive, as defined below.]],Old=[]}]} Text=<@ChgAdded{Version=[5],Text=[A default initial condition is a property that holds for every default-initialized object of a given type.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[default initial condition], - Def=[a property that holds for every default-initialized object of a given type]} + Def=[property that holds for every default-initialized object of a given type]} @end{Intro} @begin{Resolution} @@ -2734,7 +2758,7 @@ Default_Initial_Condition aspect.]}]} from SPARK 2014 to remain acceptable in conforming implementations, as well as to provide future flexibility. Note the word @ldquote@;extend@rdquote in this permission; we expect that any aspect usage - that conforms with the (other) rules of this clause will be accepted by + that conforms with the (other) rules of this subclause will be accepted by any Ada implementation, regardless of any implementation-defined extensions.]} @end{Reason} @end{ImplPerm} @@ -2766,7 +2790,7 @@ Text=<@ChgAdded{Version=[5],Text=[A stable property is a characteristic associated with objects of a given type that is preserved by many of the primitive operations of the type.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[stable property], - Def=[a characteristic associated with objects of a given type that is + Def=[characteristic associated with objects of a given type that is preserved by many of the primitive operations of the type]} @end{Intro} @begin{StaticSem} @@ -3176,7 +3200,7 @@ a @i{deferred constant}. @PDefn2{Term=[requires a completion], Sec=(deferred constant declaration)} @Chg{Version=[3],New=[@Redundant[Unless the Import aspect (see @RefSecNum{Interfacing Aspects}) is True for a deferred constant -declaration, the ]],Old=[A]} deferred constant declaration requires a completion, +declaration, the]],Old=[A]} deferred constant declaration requires a completion, which shall be a full constant declaration (called the @i{full declaration} of the deferred constant)@Chg{Version=[3],New=[],Old=[, @@ -3447,9 +3471,11 @@ make both the partial @i{and} full views limited. which @Chg{Version=[2],New=[copying], Old=[the assignment operation]} is allowed.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[limited type], - Def=[a type for which copying (such as in an @nt{assignment_statement}) + Def=[type for which copying (such as in an @nt{assignment_statement}) is not allowed], - Note1=[A nonlimited type is a type for which copying is allowed.]} + Note1=[All types are either limited types or nonlimited types.]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[nonlimited type], + Def=[type for which copying is allowed]} @end{Intro} @begin{Legality} @@ -3867,13 +3893,41 @@ circumstances. ... @key[end] IO_Package; @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0440-1],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph numbers not change} +@ChgAdded{Version=[5],Text=[In the example, an outside subprogram making use of IO_Package +@Chg{Version=[5],New=[can],Old=[may]} obtain a file name by calling Open and +later use it in calls to +Read and Write. Thus, outside the package, a file name obtained from +Open acts as a kind of password; its internal properties (such as +containing a numeric value) are not known and no other operations +(such as addition or comparison of internal names) can be performed +on a file name. +Most importantly, clients of the package cannot make copies +of objects of type File_Name.]} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0442-1],ARef=[AI12-0452-1]} +@ChgAdded{Version=[5],Text=[This example is characteristic of any case where complete control +over the operations of a type is desired. Such packages serve a dual +purpose. They prevent a user from making use of the internal +structure of the type. They also implement the notion of an +encapsulated data type where the only operations on the type are +those given in the package specification.]} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0442-1],ARef=[AI12-0452-1]} +@ChgAdded{Version=[5],Text=[The fact that the full view of File_Name is explicitly declared +@key[limited] means that parameter passing will always be by reference +and function results will always be built directly in the result object +(see @RefSecNum{Formal Parameter Modes} and @RefSecNum{Return Statements}).]} + @end{Examples} @begin{Notes} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1]} -@i{Notes on the example:} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i{Notes on the example:} In the example above, an outside subprogram making use of IO_Package -@Chg{Version=[5],New=[can],Old=[may]} obtain a file name by calling Open and +may obtain a file name by calling Open and later use it in calls to Read and Write. Thus, outside the package, a file name obtained from Open acts as a kind of password; its internal properties (such as @@ -3881,21 +3935,24 @@ containing a numeric value) are not known and no other operations (such as addition or comparison of internal names) can be performed on a file name. Most importantly, clients of the package cannot make copies -of objects of type File_Name. +of objects of type File_Name.]} -@NoPrefix@;This example is characteristic of any case where complete control +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],NoPrefix=[T],Text=[This example is characteristic +of any case where complete control over the operations of a type is desired. Such packages serve a dual purpose. They prevent a user from making use of the internal structure of the type. They also implement the notion of an encapsulated data type where the only operations on the type are -those given in the package specification. +those given in the package specification.]} -@NoPrefix@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00318-02]} -The fact that the full view of File_Name is explicitly declared -@key[limited] means that parameter passing @Chg{Version=[2],New=[], +@ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00318-02]} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],NoPrefix=[T],Text=[The fact that the full view of File_Name is +explicitly declared @key[limited] means that parameter passing @Chg{Version=[2],New=[], Old=[and function return ]}will always be by reference@Chg{Version=[2],New=[ and function results will always be built directly in the result object],Old=[]} -(see @RefSecNum{Formal Parameter Modes} and @RefSecNum{Return Statements}). +(see @RefSecNum{Formal Parameter Modes} and @RefSecNum{Return Statements}).]} @end{Notes} @@ -4025,7 +4082,7 @@ a (nonlimited) controlled object.] finalization. Objects are always finalized before being destroyed.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[controlled type], - Def=[a type that supports user-defined assignment and finalization], + Def=[type that supports user-defined assignment and finalization], Note1=[Objects are always finalized before being destroyed.]} @begin{Ramification} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00114-01],ARef=[AI95-00287-01]} @@ -4151,7 +4208,7 @@ a protected type; or]} @ChgRef{Version=[2],Kind=[Added]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0092-1]} @ChgAdded{Version=[2],Text=[it has a component -@Chg{Version=[3],New=[whose type ],Old=[that ]} needs finalization; or]} +@Chg{Version=[3],New=[whose type],Old=[that]} needs finalization; or]} @ChgRef{Version=[2],Kind=[Added]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0013-1]} @@ -4332,8 +4389,7 @@ controlled parts.] @end{Reason} @PDefn2{Term=[execution], Sec=(assignment_statement)} -For an @nt{assignment_statement}, -@Redundant[ after the @nt{name} and +For an @nt{assignment_statement},@Redundant[ after the @nt{name} and @nt{expression} have been evaluated, and any conversion (including constraint checking) has been done,] an anonymous object is created, and @@ -4347,7 +4403,8 @@ Finally, the anonymous object is finalized. @Redundant[As explained below, the implementation may eliminate the intermediate anonymous object, so this description subsumes the one given in -@RefSec{Assignment Statements}.] +@ISODiff{NotISO=[@RefSecFull{Assignment Statements}], +ISOOnly=[@RefSecFullNum{Assignment Statements}]}.] @begin{Reason} @leading@;An alternative design for user-defined assignment might involve an Assign operation instead of Adjust: @@ -5027,7 +5084,7 @@ Text=<@ChgAdded{Version=[5],Text=[A master is the execution of a master construct. Each object and task is associated with a master. When a master is left, associated tasks are awaited and associated objects are finalized.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[R],Term=[master], - Def=[the execution of a master construct], + Def=[execution of a master construct], Note1=[Each object and task is associated with a master. When a master is left, associated tasks are awaited and associated objects are finalized.]} @@ -5729,13 +5786,14 @@ freezing point of the access type.@PDefn2{Term=[arbitrary order],Sec=[allowed]}] @begin{Notes} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -The rules of @Chg{Version=[3],New=[Clause],Old=[Section]} 10 imply that +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +The rules of @Chg{Version=[5],New=[@RefSecFullNum{Program Structure and Compilation Issues}], +Old=[@Chg{Version=[3],New=[Clause],Old=[Section]} 10]} imply that immediately prior to partition termination, Finalize operations are applied to library-level controlled objects (including those created by @nt{allocator}s of library-level access types, except those already finalized). -This occurs after waiting for library-level -tasks to terminate. +This occurs after waiting for library-level tasks to terminate. @begin{Discussion} We considered defining a pragma that would apply to a controlled type that would suppress Finalize operations for library-level objects @@ -5924,16 +5982,15 @@ be possible. @end{Notes} @begin{DiffWord83} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} Finalization depends on the concepts of completion and leaving, and on the concept of a master. Therefore, we have moved the definitions of these concepts here, from where they used to be in -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Tasks and Synchronization}. +@RefSecFullNum{Tasks and Synchronization}. These concepts also needed to be generalized somewhat. Task waiting is closely related to user-defined finalization; the rules here refer to the task-waiting rules of -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Tasks and Synchronization}. +@RefSecFullNum{Tasks and Synchronization}. @end{DiffWord83} @begin{Inconsistent95} diff --git a/source/08.mss b/source/08.mss index fe3fdc35..432c9362 100644 --- a/source/08.mss +++ b/source/08.mss @@ -1,10 +1,10 @@ @Part(08, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledSection{Visibility Rules} @Comment{$Source: e:\\cvsroot/ARM/Source/08.mss,v $} -@Comment{$Revision: 1.126 $} +@Comment{$Revision: 1.127 $} @begin{Intro} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @@ -14,10 +14,8 @@ which @nt{identifier}s, @nt{character_literal}s, and the program are described in this @Chg{Version=[3],New=[clause],Old=[section]}. The formulation of these rules uses the notion of a declarative region. -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0439-1]} -As explained in @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Declarations and Types}, +As explained in @RefSecFullNum{Declarations and Types}, a declaration declares a view of an entity and associates a defining name with that view. The view comprises an identification of the viewed entity, @@ -190,7 +188,8 @@ a child of P whose defining name is Q, and that after "@key[use] P;" Q can refer (directly) to that child. As explained above -and in @RefSec{Compilation Units - Library Units}, +and in @ISODiff{NotISO=[@RefSecFull{Compilation Units - Library Units}], +ISOOnly=[@RefSecFullNum{Compilation Units - Library Units}]}, all library units are descendants of Standard, and so are contained in the declarative region of Standard. They are @i{not} inside the @@ -383,10 +382,10 @@ The immediate scope of a @nt{library_item} includes only its semantic dependents. @begin{Reason} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -@Chg{Version=[3],New=[Clause],Old=[Section]} 10 defines only a partial ordering of @nt{library_item}s. +@RefSecFullNum{Program Structure and Compilation Issues} +defines only a partial ordering of @nt{library_item}s. Therefore, it is a good idea to restrict the immediate scope -(and the scope, defined below) -to semantic dependents. +(and the scope, defined below) to semantic dependents. @leading@;Consider also examples like this: @begin{Example} @@ -615,11 +614,10 @@ appearing outside the package, and can be made directly visible by a @nt{use_clause}. @begin{Ramification} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00114-01]} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} There are some obscure @Chg{Version=[2],New=[cases ],Old=[]}involving generics @Chg{Version=[2],New=[],Old=[cases ]}in which there is no such notation. -See @Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Generic Units}. +See @RefSecFullNum{Generic Units}. @end{Ramification} @end{SingleNote} @@ -802,7 +800,7 @@ Text=[@ChgAdded{Version=[2],Text=[An overriding operation is one that replaces an inherited primitive operation. Operations may be marked explicitly as overriding or not overriding.]}]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[S],Term=[overriding operation], - Def=[an operation that replaces an inherited primitive operation], + Def=[operation that replaces an inherited primitive operation], Note1=[Operations can be marked explicitly as overriding or not overriding.]} @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0025],ARef=[AI95-00044-01]} @@ -1117,10 +1115,9 @@ within the scope of a @nt{with_clause} that mentions the child.]} @Defn2{Term=[visibility], Sec=(immediate)} A declaration with a @nt{defining_identifier} or @nt{defining_operator_symbol} is immediately visible -@Redundant[(and hence -directly visible)] within its immediate scope -@RootDefn{hidden from direct visibility} except where hidden -from direct visibility, as follows: +@Redundant[(and hence directly visible)] within its immediate scope +except where hidden from direct +visibility,@RootDefn{hidden from direct visibility} as follows: @begin{Itemize} @PDefn2{Term=[hidden from direct visibility], Sec=(by an inner homograph)} A declaration is hidden from direct visibility @@ -1162,7 +1159,8 @@ in a @nt{context_clause}, a @nt{parent_unit_name}, or a @nt{pragma} that appears at the place of a @nt{compilation_unit}. For those contexts, see the rules -in @RefSec{Environment-Level Visibility Rules}. +in @ISODiff{NotISO=[@RefSecFull{Environment-Level Visibility Rules}], +ISOOnly=[@RefSecFullNum{Environment-Level Visibility Rules}]}. @begin{Ramification} Direct visibility is irrelevant for @nt{character_literal}s. In terms of overload resolution @@ -2039,7 +2037,7 @@ Text=<@ChgAdded{Version=[2],Text=[A @nt{renaming_declaration} is a declaration that does not define a new entity, but instead defines a view of an existing entity.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[renaming], - Def=[a declaration that does not define a new entity, but + Def=[declaration that does not define a new entity, but instead defines a new view of an existing entity]} @end{Intro} @@ -2718,10 +2716,8 @@ called a @i{renaming-as-declaration}@Redundant[, and is used to rename a subprogram (possibly an enumeration literal) or an entry]. @begin{Ramification} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} A renaming-as-body is a declaration, -as defined in @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Declarations and Types}. +as defined in @RefSecFullNum{Declarations and Types}. @end{Ramification} @end{Intro} diff --git a/source/09.mss b/source/09.mss index 21c817c8..04e7f710 100644 --- a/source/09.mss +++ b/source/09.mss @@ -1,10 +1,10 @@ @Part(09, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:03 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledSection{Tasks and Synchronization} @Comment{$Source: e:\\cvsroot/ARM/Source/09.mss,v $} -@Comment{$Revision: 1.150 $} +@Comment{$Revision: 1.151 $} @begin{Intro} @@ -42,7 +42,7 @@ activity within the execution of a program that can proceed in parallel with other activities of the same task, or of separate tasks.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[R],Term=[logical thread of control], - Def=[an activity within the execution of a program that can proceed in + Def=[activity within the execution of a program that can proceed in parallel with other activities of the same task, or of separate tasks]} @ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0119-1]} @ChgAdded{Version=[5],Type=[Leading],Text=[The @@ -241,9 +241,7 @@ is called the visible part of the task unit. The optional list of @nt{task_item}s after the reserved word @key{private} is called the private part of the task unit.] @begin{TheProof} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -Private part is defined in @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Visibility Rules}. +Private part is defined in @RefSecFullNum{Visibility Rules}. @end{theproof} @ChgRef{Version=[1],Kind=[Added],Ref=[8652/0029],ARef=[AI95-00116-01]} @@ -1144,9 +1142,7 @@ The optional list of @nt{protected_@!element_@!declaration}s after the reserved word @key{private} is called the private part of the protected unit.] @begin{TheProof} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -Private part is defined in @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Visibility Rules}. +Private part is defined in @RefSecFullNum{Visibility Rules}. @end{theproof} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00345-01],ARef=[AI95-00397-01],ARef=[AI95-00399-01],ARef=[AI95-00419-01]} @@ -1755,7 +1751,7 @@ as follows: @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0291-1]} If it is a @nt that is not an expanded name, then the target object is explicitly - specified to be the @Chg{Version=[3],New=[],Old=[task or protected]} object + specified to be the @Chg{Version=[3],New=[],Old=[task or protected ]}object denoted by the @nt of the @nt; @Defn{external call} @Chg{Version=[3],New=[],Old=[such ]}a call@Chg{Version=[3],New=[ using @@ -2158,7 +2154,7 @@ ancestor subtype.]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0064-2]} @ChgAdded{Version=[5],Noprefix=[T],Text=[Unless directly specified, for any -other program unit, first subtype, or formal object, the Nonblocking aspect +other program unit, first subtype, or formal object, the Nonblocking aspect of the entity is determined by the Nonblocking aspect for the innermost program unit enclosing the entity.]} @@ -2883,7 +2879,8 @@ presumed for tasks competing to start a protected action @em on a multiprocessor such tasks @Chg{Version=[5],New=[can],Old=[might]} use busy-waiting; for @Chg{Version=[5],New=[further ],Old=[]}monoprocessor @Chg{Version=[5],New=[and multiprocessor ],Old=[]}considerations, -see @RefSec{Priority Ceiling Locking}. +see @ISODiff{NotISO=[@RefSecFull{Priority Ceiling Locking}], +ISOOnly=[@RefSecFullNum{Priority Ceiling Locking}]}. @begin{Discussion} The intended implementation on a multi-processor is in terms of @lquotes@;spin locks@rquotes@; @em the waiting task will spin. @@ -3327,9 +3324,10 @@ The elaboration of an @nt for a single entry has no effect. @begin{Discussion} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The elaboration of the declaration of a protected subprogram has -no effect, as specified in @Chg{Version=[3],New=[subclause],Old=[clause]} -@RefSecNum(Subprogram Declarations). +no effect, as specified in +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum(Subprogram Declarations). The default initialization of an object of a task or protected type is covered in @RefSecNum(Object Declarations). @end{Discussion} @@ -3360,7 +3358,7 @@ is executed, with the formal parameters associated with the corresponding actual parameters of the selected entry call. @Chg{Version=[5],New=[Execution of the rendezvous consists of the execution ],Old=[]}of the @nt{handled_sequence_of_statements}, -@Chg{Version=[5],New=[ performance of any postcondition or type +@Chg{Version=[5],New=[performance of any postcondition or type invariant checks associated with the entry, and any initialization or finalization associated with these checks, as described in @RefSecNum{Preconditions and Postconditions} and @RefSecNum{Type Invariants}. @@ -4481,7 +4479,8 @@ converted to the type Duration, and then rounded up to the next clock tick. @PDefn2{Term=[implicit subtype conversion],Sec=(delay expression)} The time base associated with relative delays -is as defined in @RefSec{Delay Accuracy} or is +is as defined in @ISODiff{NotISO=[@RefSecFull{Delay Accuracy}], +ISOOnly=[@RefSecFullNum{Delay Accuracy}]} or is implementation defined. @ImplDef{The time base associated with relative delays.} @begin{Ramification} @@ -4691,7 +4690,8 @@ functionality defined in @RefSec{Real-Time Systems}. @end{Ramification} Additional requirements associated with @nts -are given in @RefSec(Delay Accuracy). +are given in @ISODiff{NotISO=[@RefSecFull{Delay Accuracy}], +ISOOnly=[@RefSecFullNum{Delay Accuracy}]}. @end{Notes} @@ -5027,7 +5027,7 @@ environment (such as POSIX).]} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00351-01]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0336-1]} @ChgAdded{Version=[2],Text=[Type Time_Offset represents -@Chg{Version=[5],New=[for a given locality at a given moment ],Old=[]} the +@Chg{Version=[5],New=[for a given locality at a given moment ],Old=[]}the number of minutes @Chg{Version=[5],New=[the local time is, at that moment, ahead (+) or behind (-) Coordinated Universal Time @@ -5720,9 +5720,10 @@ if no @nt{accept_alternative} can immediately be selected; in particular, if all alternatives are closed. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} An open @nt{terminate_alternative} is selected if the conditions stated at the -end of @Chg{Version=[3],New=[subclause],Old=[clause]} -@RefSecNum{Task Dependence - Termination of Tasks} +end of +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum{Task Dependence - Termination of Tasks} are satisfied. @begin(Ramification) In the absence of a @nt, the conditions stated @@ -5746,9 +5747,10 @@ there is no else part. @begin{Notes} -A @nt{selective_accept} is allowed to have several open -@nt{delay_alternative}s. A @nt{selective_accept} is allowed -to have several open +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +A @nt{selective_accept} @Chg{Version=[5],New=[can],Old=[is allowed to]} have +several open @nt{delay_alternative}s. A @nt{selective_accept} +@Chg{Version=[5],New=[can],Old=[is allowed to]} have several open @nt{accept_alternative}s for the same entry. @end{Notes} @@ -6406,8 +6408,9 @@ only in situations requiring unconditional termination. A task is allowed to abort any task it can name, including itself. -Additional requirements associated with abort -are given in @RefSec(Preemptive Abort). +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +Additional requirements associated with abort are given in +@Chg{Version=[5],New=[@RefSecNum(Preemptive Abort)],Old=[@RefSec(Preemptive Abort)]}. @end{Notes} @begin{DiffWord83} @@ -6766,7 +6769,7 @@ to be @i actions.@Defn2{Term=[concurrent], Sec=(actions)}@Defn2{Term action@Defn{conflict}@Defn2{Term=[actions], Sec=(conflicting)} assigns to an object, and the other action reads or assigns to a part of the same object (or of a neighboring object if the two are not independently -addressable). The action comprising a call on a subprogram or an +addressable). The action comprising a call on a subprogram or an entry is defined to @i{potentially conflict} with another action if the Global aspect (or Global'Class aspect in the case of a dispatching call) of the called subprogram or entry is such that a conflicting diff --git a/source/10.mss b/source/10.mss index 15c9cf25..41f9f2cb 100644 --- a/source/10.mss +++ b/source/10.mss @@ -1,10 +1,10 @@ @Part(10, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:04 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledSection{Program Structure and Compilation Issues} @Comment{$Source: e:\\cvsroot/ARM/Source/10.mss,v $} -@Comment{$Revision: 1.122 $} +@Comment{$Revision: 1.123 $} @Comment{Corrigendum changes added, 2000/04/24, RLB} @begin{Intro} @@ -28,10 +28,10 @@ computer. A distributed program typically contains multiple partitions, which can execute concurrently.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[program], - Def=[a set of partitions, each of which can execute in a + Def=[set of partitions, each of which can execute in a separate address space, possibly on a separate computer]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[partition], - Def=[a part of a program, which consists of a set of + Def=[part of a program, which consists of a set of interdependent library units], Note1=[Each partition can run in a separate address space, possibly on a separate computer. A program can contain @@ -56,9 +56,9 @@ children, grandchildren, and so on.] @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} This @Chg{Version=[3],New=[clause],Old=[section]} has two @Chg{Version=[3],New=[subclauses],Old=[clauses]}: -@RefSec{Separate Compilation} +@ISODiff{NotISO=[@RefSecFull{Separate Compilation}],ISOOnly=[@RefSecFullNum{Separate Compilation}]} discusses compile-time issues related to separate compilation. -@RefSec{Program Execution} +@ISODiff{NotISO=[@RefSecFull{Program Execution}],ISOOnly=[@RefSecFullNum{Program Execution}]} discusses issues related to what is traditionally known as @lquotes@;link time@rquotes@; and @lquotes@;run time@rquotes@; @em building and executing partitions. @@ -121,7 +121,7 @@ different from that of RM83. @end{DiffWord83} Alternatively, they can appear physically nested within other program units.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[program unit], - Def=[a language construct that is a package, a task unit, a + Def=[language construct that is a package, a task unit, a protected unit, a protected entry, a generic unit, or an explicitly declared subprogram other than an enumeration literal], Note1=[Certain kinds of program units can be separately compiled. @@ -135,7 +135,7 @@ different from that of RM83. @end{DiffWord83} A @nt(compilation_unit) contains either the declaration, the body, or a renaming of a program unit.>}] @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[compilation unit], - Def=[a program unit that is separately compiled], + Def=[program unit that is separately compiled], Note1=[A @nt(compilation_unit) contains either the declaration, the body, or a renaming of a program unit.]} The representation for a @nt is implementation-defined. @@ -168,7 +168,7 @@ but protected entries cannot be separately compiled. A root library unit, together with its children and grandchildren and so on, form a @i(subsystem).>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[library unit], - Def=[a separately compiled program unit, which is a + Def=[separately compiled program unit, which is a package, a subprogram, or a generic unit], Note1=[Library units can have other (logically nested) library units as children, and can have other program units @@ -1136,15 +1136,13 @@ if it is named in the @nt{with_clause} or if it is denoted by a @nt{prefix} in the @nt{with_clause}.],Old=[]} @begin{Discussion} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @nt{With_clause}s control the visibility of declarations or renamings of library units. Mentioning a root library unit in a @nt{with_clause} makes its declaration directly visible. Mentioning a nonroot library unit makes its declaration visible. -See @Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Visibility Rules} -for details. +See @RefSecFullNum{Visibility Rules} for details. @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00114-01]} Note that this rule implies that @lquotes@;@key{with} A.B.C;@rquotes@; is @@ -1735,7 +1733,7 @@ that is disallowed by @RefSec{Compilation Units - Library Units}. @Defn2{Term=[parent body], Sec=(of a subunit)} The @i{parent body} of a subunit is the body of the program unit denoted by its @nt{parent_unit_name}. -@Defn{subunit} The term @i{subunit} is used to refer to +The term @i{subunit}@Defn{subunit} is used to refer to a @nt{subunit} and also to the @nt{proper_body} of a @nt{subunit}. @Chg{Version=[2],New= include any subunit that @@ -1752,7 +1750,7 @@ to a subunit of a subunit as well.]} Text=<@ChgAdded{Version=[5],Text=[A subunit is a body of a program unit that can be compiled separately from its enclosing program unit.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[subunit], - Def=[the body of a program unit that can be compiled + Def=[body of a program unit that can be compiled separately from its enclosing program unit]} The parent body of a subunit shall be present in the current environment, @@ -1773,7 +1771,7 @@ a @nt{protected_@!body_stub} shall be the completion of a @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0444-1]} In contrast, a @nt{subprogram_body_stub} @Chg{Version=[5],New=[can be defined -without it being],Old=[need not be]} the completion of a previous declaration, +without it being],Old=[need not be]} the completion of a previous declaration, @Redundant[in which case the @ntf{_stub} declares the subprogram]. If the @ntf{_stub} is a completion, it shall be the completion of a @nt{subprogram_declaration} or @nt{generic_subprogram_declaration}. @@ -1815,7 +1813,8 @@ the corresponding @nt{proper_body}. @end{LinkTime} @begin{SingleNote} -@leading@;The rules in @RefSec{The Compilation Process} +@leading@;The rules in +@ISODiff{NotISO=[@RefSecFull{The Compilation Process}],ISOOnly=[@RefSecFullNum{The Compilation Process}]} say that a @nt{body_stub} is equivalent to the corresponding @nt{proper_body}. This implies: @begin{Itemize} @@ -1939,7 +1938,8 @@ the outermost declarative region of the context of any @nt{compilation}. At run time, an environment forms the @nt of the body of the environment task of a partition -(see @RefSec{Program Execution}). +(see @ISODiff{NotISO=[@RefSecFull{Program Execution}], +ISOOnly=[@RefSecFullNum{Program Execution}]}). @begin{Ramification} At compile time, there is no particular construct that the declarative region is considered to be nested within @@ -2161,7 +2161,7 @@ The rules of the language are enforced across just as they are enforced within a single compilation unit. @begin{Ramification} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -Note that @Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{General} +Note that @RefSecFullNum{General} requires an implementation to detect illegal compilation units at compile time. @end{Ramification} @@ -2651,7 +2651,7 @@ and possibly on a separate computer.] @begin{LinkTime} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0439-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0439-1],ARef=[AI12-0448-1]} @RootDefn{partition} @Defn{partition building} A partition is a program or part of a program @@ -2666,10 +2666,11 @@ The assignment is done in an implementation-defined manner. The compilation units included in a partition are those of the explicitly assigned library units, as well as other compilation units @i{needed by} those library units. -The compilation units needed by a given compilation unit are determined -as follows +The compilation units needed by a given compilation unit +@Chg{Version=[5],New=[(the @i) ],Old=[]}are +determined as follows (unless specified otherwise via an implementation-defined @nt{pragma}, -or by some other implementation-defined means): +or by some other implementation-defined means):@Chg{Version=[5],New=[@Defn{needed compilation unit}],Old=[]} @IndexSee{Term=[linking],See=(partition building)} @RootDefn2{Term=[compilation units needed], Sec=(by a compilation unit)} @RootDefn2{Term=[needed], Sec=(of a compilation unit by another)} @@ -2695,22 +2696,30 @@ pragmas whose semantics includes reducing the set of compilation units described here. @end{Discussion} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[needed compilation unit], - Def=[a compilation unit that is necessary to produce an executable partition, + Def=[compilation unit that is necessary to produce an executable partition, because some entity declared or defined within the unit is used elsewhere in the partition]} @begin{Itemize} -A compilation unit needs itself; - -If a compilation unit is needed, then so are any compilation units -upon which it depends semantically; - -If a @nt{library_unit_declaration} is needed, +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0448-1]} +A compilation unit @Chg{Version=[5],New=[is a needed compilation unit +of],Old=[needs]} itself; + +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0448-1]} +If a compilation unit is +@Chg{Version=[5],New=[among the ],Old=[]}needed@Chg{Version=[5],New=[ compilation units],Old=[]}, +then so are any compilation units upon which it depends semantically; + +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0448-1]} +If a @nt{library_unit_declaration} is +@Chg{Version=[5],New=[among the ],Old=[]}needed@Chg{Version=[5],New=[ compilation units],Old=[]}, then so is any corresponding @nt{library_unit_body}; @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00217-06]} -If a compilation unit with stubs is needed, +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0448-1]} +If a compilation unit with stubs is +@Chg{Version=[5],New=[among the ],Old=[]}needed@Chg{Version=[5],New=[ compilation units],Old=[]}, then so are any corresponding subunits@Chg{Version=[2],New=[;],Old=[.]} @begin{Discussion} @@ -2719,9 +2728,11 @@ corresponding @ntf{proper_bodies}. @end{Discussion} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00217-06]} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0448-1]} @ChgAdded{Version=[2],Text=[If the (implicit) declaration of the limited view -of a library package is needed, then so is the explicit declaration of the -library package.]} +of a library package is +@Chg{Version=[5],New=[among the ],Old=[]}needed@Chg{Version=[5],New=[ compilation units],Old=[]}, +then so is the explicit declaration of the library package.]} @end{Itemize} @begin{Discussion} @@ -2784,6 +2795,7 @@ An implementation is allowed to support multiple concurrent executions of the same partition. @end{Ramification} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0448-1]} @Redundant[The order of elaboration of library units is determined primarily by the @i{elaboration dependences}.] @Defn2{Term=[elaboration dependence], Sec=(library_item on another)} @@ -2797,7 +2809,8 @@ has a @nt{pragma} Elaborate or Elaborate_All that then there is an elaboration dependence of the given @nt{library_item} upon the body of the other library unit, and, for Elaborate_All only, upon -each @nt{library_item} needed by +each @nt{library_item} @Chg{Version=[5],New=[that is a ],Old=[]}needed +@Chg{Version=[5],New=[compilation unit of],Old=[by]} the declaration of the other library unit. @begin{Discussion} @ChgRef{Version=[1],Kind=[Added],Ref=[8652/0107],ARef=[AI95-00180-01]} @@ -3096,7 +3109,7 @@ the same partition semantically identical). The core language says nothing about inter-partition -consistency; see also @RefSec{Distributed Systems}. +consistency; see also @RefSecFull{Distributed Systems}. @end{Discussion} @end{ImplReq} @@ -3110,7 +3123,7 @@ with implementation-defined semantics. @ImplDef{The semantics of any nonactive partitions supported by the implementation.} @begin{Discussion} -@RefSec{Distributed Systems} defines the concept of passive partitions; +@RefSecFull{Distributed Systems} defines the concept of passive partitions; they may be thought of as a partition without an environment task, or as one with a particularly simple form of environment task, having an infinite loop rather than a call on a main subprogram @@ -3175,7 +3188,8 @@ can have modes that provide other behaviors in addition. An implementation @Chg{Version=[5],New=[can],Old=[may]} provide inter-partition communication mechanism(s) via special packages and pragmas. Standard pragmas for distribution and methods for specifying -inter-partition communication are defined in @RefSec{Distributed Systems}. +inter-partition communication are defined in +@ISODiff{NotISO=[@RefSecFull{Distributed Systems}],ISOOnly=[@RefSecFullNum{Distributed Systems}]}. If no such mechanisms are provided, then each partition is isolated from all others, and behaves as a program in and of itself. @begin{Ramification} @@ -3192,7 +3206,7 @@ Partitions are not required to run in separate address spaces. For example, an implementation @Chg{Version=[5],New=[can],Old=[might]} support dynamic linking via the partition concept. -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0417-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0417-1],ARef=[AI12-0449-1]} An order of elaboration of @nt{library_item}s that is consistent with the partial ordering defined above does not always ensure that each @nt{library_unit_body} is elaborated before any other compilation unit @@ -3201,8 +3215,8 @@ already elaborated. (In particular, there is no requirement that the body of a library unit be elaborated as soon as possible after the @nt{library_unit_declaration} is elaborated, -unless the pragmas@Chg{Version=[5],New=[ or aspects],Old=[]} in subclause -@RefSecNum{Elaboration Control} are used.) +unless the pragmas@Chg{Version=[5],New=[ or aspects],Old=[]} in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Elaboration Control} are used.) @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} A partition (active or otherwise) @Chg{Version=[5],New=[does not @@ -3210,7 +3224,9 @@ necessarily],Old=[need not]} have a main subprogram. In such a case, all the work done by the partition would be done by elaboration of various @nt{library_item}s, and by tasks created by that elaboration. Passive partitions, which cannot have main subprograms, -are defined in @RefSec{Distributed Systems}. +are defined in +@ISODiff{NotISO=[@RefSecFull{Distributed Systems}], +ISOOnly=[@RefSecFullNum{Distributed Systems}]}. @begin{Ramification} The environment task is the outermost semantic level defined by the language. @@ -3255,10 +3271,13 @@ The program as a whole is an entirely different thing. in the elaboration dependence rule was fixed.]} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00217-06]} - @ChgAdded{Version=[2],Text=[The @i relationship was extended to - include limited views.]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0448-1]} + @ChgAdded{Version=[2],Text=[The @Chg{Version=[5],New=[@i],Old=[@i]} + relationship was extended to include limited views.]} @end{DiffWord95} + +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledSubClause{Elaboration Control} @begin{Intro} @@ -3691,7 +3710,7 @@ for],Old=[@nt is applied to]} a protected type, @Chg{Version=[3],New=[the protected type shall not have entries, and ],Old=[]}each component of the protected type shall have preelaborable initialization. -@Chg{Version=[3],New=[@Chg{Version=[5],New=[ If the aspect is specified True +@Chg{Version=[3],New=[@Chg{Version=[5],New=[If the aspect is specified True for a generic formal type, then in a @nt{generic_instantiation} the corresponding actual type shall have preelaborable initialization. If the aspect definition includes one or more Preelaborable_Initialization @@ -3699,7 +3718,7 @@ the aspect definition includes one or more Preelaborable_Initialization preelaborable initialization presuming the types mentioned in the @nt{prefix}es of the @nt{attribute_reference}s all have preelaborable initialization. ],Old=[]}For any other composite type, the -@Chg{Version=[5],New=[ aspect shall be specified statically True or +@Chg{Version=[5],New=[aspect shall be specified statically True or False only if it is confirming],Old=[type shall have preelaborable initialization]}. ],Old=[]}@PDefn{generic contract issue}In addition to the places where @LegalityTitle normally apply @@ -4244,8 +4263,9 @@ previous @nt{with_clause} of the same @nt{context_clause}. @end{StaticSem} @begin{Notes} -A preelaborated library unit is allowed to have nonpreelaborable -children. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +A preelaborated library unit @Chg{Version=[5],New=[can],Old=[is allowed to]} +have nonpreelaborable children. @begin{Ramification} @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0035],ARef=[AI95-00002-01]} But @Chg{New=[generally ], Old=[]}not nonpreelaborated subunits. @@ -4253,8 +4273,9 @@ But @Chg{New=[generally ], Old=[]}not nonpreelaborated subunits. discussed above.)], Old=[]} @end{Ramification} -A library unit that is declared pure is allowed to have impure -children. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +A library unit that is declared pure +@Chg{Version=[5],New=[can],Old=[is allowed to]} have impure children. @begin{Ramification} @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0035],ARef=[AI95-00002-01]} But @Chg{New=[generally ], Old=[]}not impure subunits. diff --git a/source/11.mss b/source/11.mss index da8fea38..b6e44e2b 100644 --- a/source/11.mss +++ b/source/11.mss @@ -1,10 +1,10 @@ @Part(11, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:04 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledSection{Exceptions} @Comment{$Source: e:\\cvsroot/ARM/Source/11.mss,v $} -@Comment{$Revision: 1.113 $} +@Comment{$Revision: 1.114 $} @begin{Intro} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @@ -47,9 +47,9 @@ we sometimes use @lquotes@;@i{occurrence}@rquotes@; as a @lquotes@;exception occurrence@rquotes@;. @end{Honest} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[E],Term=[exception], - Def=[a kind of exceptional situation]} + Def=[kind of exceptional situation]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[E],Term=[exception occurrence], - Def=[a run-time occurrence of an exceptional situation]} + Def=[run-time occurrence of an exceptional situation]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0043-1],ARef=[AI05-0258-1]} @@ -352,7 +352,8 @@ The syntax rule for @nt{handled_sequence_of_statements} is new. These are now used in all the places where handlers are allowed. This obviates the need to explain -(in @Chg{Version=[3],New=[Clauses],Old=[Sections]} 5, 6, 7, and 9) +(in @Chg{Version=[3],New=[Clauses],Old=[Sections]} @RefSecNum{Statements}, +@RefSecNum{Subprograms}, @RefSecNum{Packages}, and @RefSecNum{Tasks and Synchronization}) what portions of the program are handled by the handlers. Note that there are more such cases in Ada 95. @@ -565,7 +566,7 @@ Exception_Occurrence value. This allows the original cause of the exception to be determined. @end{ImplNote} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[E],Term=[raise an exception], - Def=[to abandon normal program execution so as to draw attention + Def=[abandon normal program execution so as to draw attention to the fact that the corresponding situation has arisen]} @end{RunTime} @@ -759,8 +760,8 @@ the @nt{sequence_of_statements}. The rules for exceptions raised in library units, main subprograms and partitions follow from the normal rules, plus the semantics of the environment task -described in @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Program Structure and Compilation Issues} (for example, the +described in +@RefSecFullNum{Program Structure and Compilation Issues} (for example, the environment task of a partition elaborates library units and calls the main subprogram). If an exception is propagated by the main subprogram, it is @@ -770,13 +771,14 @@ Although abnormal termination of tasks is not necessarily an error, abnormal termination of a partition due to an exception @i{is} an error. @end{Ramification} -@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[handle an exception], - Def=[performing some actions in response to the arising of an exception]} +@ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[E],Term=[handle an exception], + Def=[perform some actions in response to the arising of an exception]} @end{RunTime} @begin{Notes} -Note that exceptions raised in a @nt{declarative_part} of a body -are not handled by the handlers of the +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} +@Chg{Version=[5],New=[Exceptions],Old=[Note that exceptions]} raised in a +@nt{declarative_part} of a body are not handled by the handlers of the @nt{handled_@!sequence_of_@!statements} of that body. @end{Notes} @@ -1475,7 +1477,7 @@ appears in any of the following: a @nt{pragma} Assert, a predicate, a precondition, a postcondition, an invariant, a constraint, or a null exclusion. An assertion is expected to be True at run time at certain specified places.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[R],Term=[assertion], - Def=[a boolean expression that is expected to be True at run time at certain + Def=[boolean expression that is expected to be True at run time at certain specified places], Note1=[Certain pragmas and aspects define various kinds of assertions.]} @@ -1549,7 +1551,7 @@ of a @nt{pragma} Assert is type String.]} @SynI@nt{aspect_mark} of a @nt{pragma} Assertion_Policy shall @Chg{Version=[5],New=[identify an @i,@Defn{assertion aspect}@Defn2{Term=[aspect],Sec=[assertion]} -namely],Old=[be]} one of Assert, Static_Predicate, Dynamic_Predicate, +namely],Old=[be]} one of Assert, Static_Predicate, Dynamic_Predicate, Pre, Pre'Class, Post, Post'Class, Type_Invariant, Type_Invariant'Class, @Chg{Version=[5],New=[Default_Initial_Condition, ],Old=[]}or some @Chg{Version=[5],New=[implementation-defined (assertion)],Old=[implementation defined]} @@ -1868,13 +1870,15 @@ would if]} the first expression had not been evaluated.]} @end{Metarules} @begin{Notes} +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00286-01]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1],ARef=[AI12-0447-1]} @ChgAdded{Version=[2],Text=[Normally, the boolean expression in a @nt{pragma} -Assert @Chg{Version=[5],New=[does],Old=[should]} not call functions that have +Assert should not call functions that have significant side effects when the result of the expression is True, so that the particular assertion policy in effect will not affect normal operation of the program.]} +@end{NotISO} @end{Notes} @begin{Extend95} @@ -2044,10 +2048,11 @@ same basic causes. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} The sections labeled @lquotes@;Exceptions Raised During ...@rquotes@; are subsumed by this @Chg{Version=[3],New=[subclause],Old=[clause]}, -and by parts of @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Tasks and Synchronization}. +and by parts of +@RefSecFullNum{Tasks and Synchronization}. @end{DiffWord83} +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledClause{Suppressing Checks} @begin{Intro} @@ -2064,7 +2069,7 @@ check cannot fail, and to request that the compiler optimize by disabling the check. The compiler is not required to honor this request. Suppressing checks that can fail can cause a program to behave in arbitrary ways.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[E],Term=[suppress a check], - Def=[to assert that the check cannot fail, and to + Def=[assert that the check cannot fail, and request that the compiler optimize by disabling the check], Note1=[The compiler is not required to honor this request. Suppressing checks that can fail can cause a program to behave in arbitrary ways.]} @@ -2092,7 +2097,7 @@ in clauses and subclauses throughout the standard. Text=<@ChgAdded{Version=[5],Text=[A check is a test made during execution to determine whether a language rule has been violated.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[E],Term=[check], - Def=[a test made during execution to determine whether a language + Def=[test made during execution to determine whether a language rule has been violated]} @end{Intro} @@ -2731,17 +2736,16 @@ and objects with invalid representations Various actions that are defined to occur in an arbitrary order. -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} Behavior in the presence of a misuse of Unchecked_Deallocation, Unchecked_Access, or imported or exported entity -(see @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Representation Issues}). +(see @RefSecFullNum{Representation Issues}). @end{Itemize} @end{Discussion} @Leading@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @Redundant[As explained in -@RefSec{Conformity of an Implementation}, +@ISODiff{NotISO=[@RefSecFull{Conformity of an Implementation}], + ISOOnly=[@RefSecFullNum{Conformity of an Implementation}]}, the external effect of a program is defined in terms of its interactions with its external environment. Hence, the implementation can perform any internal @@ -2998,5 +3002,5 @@ We moved @Chg{Version=[3],New=[subclause],Old=[clause]} 11.7) ],Old=[]}from after 11.6 to before 11.6, in order to preserve the famous number @lquotes@;11.6@rquotes@; (given the changes to earlier @Chg{Version=[3],New=[subclauses],Old=[clauses]} in -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Exceptions}). +@RefSecFullNum{Exceptions}). @end{DiffWord83} diff --git a/source/12.mss b/source/12.mss index abe15b99..cd9666a6 100644 --- a/source/12.mss +++ b/source/12.mss @@ -1,10 +1,10 @@ @Part(12, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:04 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledSection{Generic Units} @Comment{$Source: e:\\cvsroot/ARM/Source/12.mss,v $} -@Comment{$Revision: 1.119 $} +@Comment{$Revision: 1.120 $} @begin{Intro} @Defn{generic unit} @@ -32,13 +32,13 @@ generic unit. Generic units can be used to perform the role that macros sometimes play in other languages.>}@ChgNote{Correction for AI-00024, no mechanism to correct glossary entries.} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[generic unit], - Def=[a template for a (nongeneric) program unit], + Def=[template for a (nongeneric) program unit], Note1=[The template can be parameterized by objects, types, subprograms, and packages.], Note2=[Generic units can be used to perform the role that macros sometimes play in other languages.]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[generic instance], - Def=[a nongeneric unit created by the instantiation of a generic unit]} + Def=[nongeneric unit created by the instantiation of a generic unit]} @redundant[A generic unit is declared by a @nt{generic_declaration}. This form of declaration has a @nt{generic_@!formal_@!part} declaring any generic @@ -169,12 +169,15 @@ and it can appear in a recursive call of the current instance. For the same reason, this name cannot appear after the reserved word @key{new} in a (recursive) @nt{generic_instantiation}. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} A @nt{default_expression} or @nt{default_name} appearing in a @nt{generic_formal_part} is not evaluated during elaboration of the @nt{generic_formal_part}; instead, it is evaluated when used. -(The usual visibility rules apply to any @nt{name} used in a default: -the denoted declaration therefore has to be visible at the place of the -expression.) +@Chg{Version=[5],New=[However, the],Old=[(The]} usual visibility rules apply +to any @nt{name} used in a default@Chg{Version=[5],New=[, with name +resolution performed based on the location of the @nt{name} within the +@nt{generic_formal_part}.],Old=[: the denoted declaration therefore has +to be visible at the place of the expression.)]} @end{Notes} @begin{Examples} @@ -359,7 +362,6 @@ An instance of a generic unit is declared by a @end{Intro} @begin{MetaRules} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0300-1]} @Defn{generic contract model} @Defn{contract model of generics} @@ -372,8 +374,8 @@ the instances; if each obeys the rules with respect to the @nt{generic_declaration}, then no legality problems will arise. This is really a special case of the @lquotes@;legality determinable via semantic dependences@rquotes@; -@MetaRulesName (see @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Program Structure and Compilation Issues}), +@MetaRulesName (see +@RefSecFullNum{Program Structure and Compilation Issues}), given that a @nt{generic_instantiation} does not depend semantically upon the generic body, nor vice@Chg{Version=[5],New=[ ],Old=[-]}versa. @@ -874,9 +876,12 @@ in @nt{package_specification}s. In an instance, a @nt{generic_formal_parameter_declaration} declares a view whose properties are identical to those of the actual, except @Chg{Version=[5],New=[when],Old=[as]} specified @Chg{Version=[5],New=[otherwise -(in particular, see @RefSec{Preconditions and Postconditions},],Old=[in]} -@RefSec{Formal Objects}@Chg{Version=[5],New=[,],Old=[]} and -@RefSec{Formal Subprograms}@Chg{Version=[5],New=[)],Old=[]}. +(in particular, see @ISODiff{NotISO=[@RefSecFull{Preconditions and Postconditions}], + ISOOnly=[@RefSecFullNum{Preconditions and Postconditions}]},],Old=[in]} +@ISODiff{NotISO=[@RefSecFull{Formal Objects}], + ISOOnly=[@RefSecFullNum{Formal Objects}]}@Chg{Version=[5],New=[,],Old=[]} and +@ISODiff{NotISO=[@RefSecFull{Formal Subprograms}], + ISOOnly=[@RefSecFullNum{Formal Subprograms}]}@Chg{Version=[5],New=[)],Old=[]}. Similarly, for a declaration within a @nt{generic_formal_parameter_declaration}, the corresponding declaration in an instance declares a view whose @@ -1248,7 +1253,7 @@ A := Square(A); T : Table(1 .. 5) := (10, 20, 30, 40, 50); N : Integer := Int_Vectors.Sigma(T); --@Examcom{ 150} - --@Examcom{ (see @RefSec{Generic Bodies} for the body of Sigma)} + --@Examcom{ (see @Chg{Version=[5],New=[@RefSecNum{Generic Bodies}],Old=[@RefSec{Generic Bodies}]} for the body of Sigma)} @key[use] Int_Vectors; M : Integer := Sigma(T); --@Examcom{ 150} @@ -1625,6 +1630,7 @@ the general Dynamic Semantics rule in @RefSecNum{Generic Instantiation}. @end{RunTime} @begin{SingleNote} +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} The constraints that apply to a generic formal object of mode @key{in out} are those of the corresponding generic actual parameter (not those implied by the @nt{subtype_mark} that appears in the @@ -1632,6 +1638,7 @@ those implied by the @nt{subtype_mark} that appears in the Therefore, to avoid confusion, it is recommended that the name of a first subtype be used for the declaration of such a formal object. +@end{NotISO} @begin{Ramification} Constraint checks are done at instantiation time for formal objects of mode @key{in}, @@ -2650,9 +2657,10 @@ formal @em @key[abstract] on the formal indicates that the actual might be abstract. @end{Ramification} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} If the formal has a @nt{discriminant_part}, the actual can be either definite or indefinite. -Otherwise, the actual has to be definite. +Otherwise, the actual @Chg{Version=[5],New=[can only],Old=[has to]} be definite. @end{Notes} @begin{Incompatible83} @@ -3628,6 +3636,7 @@ be the same as]} that of the corresponding parameter of the actual subprogram; similarly, for these parameters, @nt{default_expression}s @Chg{Version=[5],New=[can be different],Old=[need not correspond]}. +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} The constraints that apply to a parameter of a formal subprogram are those of the corresponding formal parameter of the matching actual subprogram (not those implied by the corresponding @nt{subtype_mark} in @@ -3635,6 +3644,7 @@ the @ntf{_specification} of the formal subprogram). A similar remark applies to the result of a function. Therefore, to avoid confusion, it is recommended that the @nt{name} of a first subtype be used in any declaration of a formal subprogram. +@end{NotISO} The subtype specified for a formal parameter of a generic formal subprogram can be any visible subtype, including a generic formal diff --git a/source/13a.mss b/source/13a.mss index 616d372a..c5bc73b7 100644 --- a/source/13a.mss +++ b/source/13a.mss @@ -1,10 +1,10 @@ @Part(13, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:38 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledSection{Representation Issues} @Comment{$Source: e:\\cvsroot/ARM/Source/13a.mss,v $} -@Comment{$Revision: 1.139 $} +@Comment{$Revision: 1.140 $} @begin{Intro} @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0009],ARef=[AI95-00137-01]} @@ -52,11 +52,11 @@ Text=<@ChgAdded{Version=[5],Text=[A representation aspect is an aspect that indicates how an entity is mapped onto the underlying hardware, for example the size or alignment of an object.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[operational aspect], - Def=[an aspect that indicates a logical property + Def=[aspect that indicates a logical property of an entity, such as the precondition of a subprogram, or the procedure used to write a given type of object to a stream]} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[representation aspect], - Def=[an aspect that indicates how an entity is mapped onto the underlying + Def=[aspect that indicates how an entity is mapped onto the underlying hardware, for example the size or alignment of an object]} @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0183-1],ARef=[AI05-0295-1]} @@ -135,7 +135,7 @@ a specifiable property of an entity. An aspect may be specified by an @nt{aspect_specification} on the declaration of the entity. Some aspects may be queried via attributes.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[aspect], - Def=[a specifiable property of an entity], + Def=[specifiable property of an entity], Note1=[An aspect can be specified by an @nt{aspect_specification} on the declaration of the entity. Some aspects can be queried via attributes.]} @end{Intro} @@ -798,7 +798,7 @@ is illegal to specify a@Chg{Version=[5],New=[ nonconfirming],Old=[]}],Old=[no]} type-related representation @Chg{Version=[3],New=[aspect],Old=[items are allowed]} @Chg{Version=[5],New=[for an untagged type @i if it is derived -from ],Old=[if the parent type is]} a by-reference type@Chg{Version=[5],New=[ or +from],Old=[if the parent type is]} a by-reference type@Chg{Version=[5],New=[ or inherits one or more by-reference primitives],Old=[]}, or @Chg{Version=[5],New=[if one or more types],Old=[has any user-defined primitive subprograms.]}@Chg{Version=[4],New=[@Chg{Version=[5],New=[],Old=[ Similarly, @@ -1515,7 +1515,8 @@ A @i{recommended level of support} is and related features in each subclause. These recommendations are changed to requirements for implementations that support the Systems Programming Annex -(see @RefSec{Required Representation Support}). +(see @ISODiff{NotISO=[@RefSecFull{Required Representation Support}], + ISOOnly=[@RefSecFullNum{Required Representation Support}]}). @ChgImplDef{Version=[3],Kind=[Revised],InitialVersion=[0],Text=[The interpretation of each @Chg{Version=[3],New=[],Old=[aspect of @@ -2808,6 +2809,7 @@ required) the rejection of syntax errors within the @nt{aspect_definition}.]} @end{Diffword2012} +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledRevisedClause{Version=[3],New=[Packed Types],Old=[Pragma Pack]} @begin{Intro} @@ -5030,13 +5032,20 @@ Device_Register : Medium; @key[return] T; @key(for) T'@Chg{Version=[2],New=[Input],Old=[Read]} @key(use) @Chg{Version=[2],New=[My_Input],Old=[My_Read]}; --@ExamCom{ see @RefSecNum{Stream-Oriented Attributes}} @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph number not change} +@ChgAdded{Version=[5],Text=[In the Size clause for Short, +fifteen bits is the minimum necessary, +since the type definition requires Short'Small <= 2**(@en@;7).]} @end{Examples} @begin{Notes} -@i{Notes on the examples:} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i{Notes on the examples:} In the Size clause for Short, fifteen bits is the minimum necessary, -since the type definition requires Short'Small <= 2**(@en@;7). +since the type definition requires Short'Small <= 2**(@en@;7).]} @end{Notes} @begin{Extend83} @@ -5869,15 +5878,25 @@ Word : @key[constant] := 4; --@ExamCom{ storage element is byte, 4 bytes per w @key[for] Program_Status_Word'Size @key[use] 8*System.Storage_Unit; @key[for] Program_Status_Word'Alignment @key[use] 8; @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph number not change} +@ChgAdded{Version=[5],Text=[The @nt{record_representation_clause} defines the +record layout. The Size clause guarantees that (at least) eight storage +elements are used for objects of the type. The Alignment clause guarantees that +aliased, imported, or exported objects of the type will have +addresses divisible by eight.]} + @end{Examples} @begin{Notes} -@i{Note on the example:} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i{Note on the example:} The @nt{record_representation_clause} defines the record layout. The Size clause guarantees that (at least) eight storage elements are used for objects of the type. The Alignment clause guarantees that aliased, imported, or exported objects of the type will have -addresses divisible by eight. +addresses divisible by eight.]} @end{Notes} diff --git a/source/13b.mss b/source/13b.mss index 5a38cc37..ffd1a046 100644 --- a/source/13b.mss +++ b/source/13b.mss @@ -1,9 +1,9 @@ @Part(13, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:38 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @Comment{$Source: e:\\cvsroot/ARM/Source/13b.mss,v $} -@Comment{$Revision: 1.135 $} +@Comment{$Revision: 1.136 $} @RMNewPageVer{Version=[0]} @RMNewPageVer{Version=[1]} @@ -699,10 +699,14 @@ machine code function, for example, @lquotes@;Scalar results are returned in register 0@rquotes. @end{Discussion} -Intrinsic subprograms (see @RefSec{Conformance Rules}) +Intrinsic subprograms (see +@ISODiff{NotISO=[@RefSecFull{Conformance Rules}], + ISOOnly=[@RefSecFullNum{Conformance Rules}]}) can also be used to achieve machine code insertions. Interface to assembly language can be achieved -using the features in @RefSec{Interface to Other Languages}. +using the features in +@ISODiff{NotISO=[@RefSecFull{Interface to Other Languages}], + ISOOnly=[@RefSecFullNum{Interface to Other Languages}]}. @end{Notes} @begin{Examples} @@ -1507,12 +1511,14 @@ hard-to-understand bugs.]} @end{StaticSem} @begin{Notes} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} This attribute is provided to support the situation where a local object is to be inserted into a global linked data structure, when the programmer knows that it will always be removed from the data structure prior to exiting the object's scope. The Access attribute would be illegal in this case -(see @RefSec{Operations of Access Types}). +(see @Chg{Version=[5],New=[@RefSecFullNum{Operations of Access Types}], + Old=[@RefSecFull{Operations of Access Types}]}). @begin{Ramification} @PDefn2{Term=[expected type], Sec=(Unchecked_Access attribute)} @@ -1606,7 +1612,7 @@ comes from the storage pool of the type of the @nt{allocator}. Some storage pools may be partitioned into subpools in order to support finer-grained storage management.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[storage pool object], - Def=[an object associated with one or more access + Def=[object associated with one or more access types from which the storage for objects created by allocators of the access type(s) is obtained], Note1=[Some storage pools can be partitioned into subpools in order to @@ -2274,7 +2280,8 @@ mutual exclusion. If they are used inside protected objects, they cannot block. If they are used by interrupt handlers -(see @RefSec{Interrupt Support}), +(see @ISODiff{NotISO=[@RefSecFull{Interrupt Support}], + ISOOnly=[@RefSecFullNum{Interrupt Support}]}), the mutual exclusion mechanism has to work properly in that context. @end{itemize} @@ -3718,7 +3725,7 @@ overridden.]]} @begin{Notes} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0111-3]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1],ARef=[AI12-0447-1]} @ChgAdded{Version=[3],Text=[A user-defined storage pool type that supports subpools can be implemented by extending the Root_Storage_Pool_With_Subpools type, and overriding the primitive subprograms Create_Subpool, @@ -3726,9 +3733,10 @@ Allocate_From_Subpool, and Deallocate_Subpool. Create_Subpool @Chg{Version=[5],New=[is expected to],Old=[should]} call Set_Pool_Of_Subpool before returning the subpool handle. To make use of such a pool, a user @Chg{Version=[5],New=[can],Old=[would]} declare an object of the type -extension, use it to define the Storage_Pool attribute of one or more access -types, and then call Create_Subpool to obtain subpool handles associated with -the pool.]} +extension, @Chg{Version=[5],New=[can ],Old=[]}use it to define the Storage_Pool +attribute of one or more access types, and then +@Chg{Version=[5],New=[can invoke],Old=[call]} Create_Subpool to obtain subpool +handles associated with the pool.]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0111-3]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1]} @@ -4776,7 +4784,7 @@ Text=<@ChgAdded{Version=[3],Text=[A stream is a sequence of elements that can be used, along with the stream-oriented attributes, to support marshalling and unmarshalling of values of most types.]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[T],Term=[stream], - Def=[a sequence of elements that can be used, along with the + Def=[sequence of elements that can be used, along with the stream-oriented attributes, to support marshalling and unmarshalling of values of most types]} @end{Intro} @@ -5095,8 +5103,9 @@ allocation.]}]} @end{ImplAdvice} @begin{Notes} -See @RefSec{The Package Streams.Stream_IO} for an example of extending -type Root_Stream_Type. +See @ISODiff{NotISO=[@RefSecFull{The Package Streams.Stream_IO}], + ISOOnly=[@RefSecFullNum{The Package Streams.Stream_IO}]} +for an example of extending type Root_Stream_Type. @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00227-01]} @ChgAdded{Version=[2],Text=[If the end of stream has been reached, and @@ -5293,7 +5302,7 @@ the following attributes are defined. @ChgRef{Version=[1],Kind=[Added],Ref=[8652/0040],ARef=[AI95-00108-01]} @ChgRef{Version=[2],Kind=[RevisedAdded],ARef=[AI95-00444-01]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0192-1]} -@ChgRef{Version=[5],Kind=[DeletedAdded],ARef=[AI05-0419-1]} +@ChgRef{Version=[5],Kind=[DeletedAdded],ARef=[AI12-0419-1]} @ChgAdded{Version=[1],Text=[@Chg{Version=[5],New=[],Old=[For @Chg{Version=[2],New=[an ],Old=[]}untagged derived @Chg{Version=[2],New=[type],Old=[types]}, the Write @@ -5311,7 +5320,7 @@ Read attributes execute as follows:]}]}]} @begin{TheProof} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0192-1]} - @ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI05-0419-1]} + @ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0419-1]} @ChgAdded{Version=[3],Text=[@Chg{Version=[5],New=[],Old=[The inheritance rules of @RefSecNum{Operational and Representation Aspects} say that only specified or inherited aspects are inherited; we mention it again here as a clarification.]}]} @@ -6477,7 +6486,7 @@ class-wide types descended from S. @end{DiffWord2005} @begin{Inconsistent2012} - @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI05-0419-1]} + @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0419-1]} @ChgAdded{Version=[5],Text=[@Defn{incompatibilities with Ada 2012}The switch from inheritance to @ldquote@;implicitly composed@rdquote aspects means that there exists an exceedingly unlikely case where @@ -7445,16 +7454,14 @@ D is not of type T, its @nt{default_expression} requires that information. @end{Discussion} @begin{Ramification} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} Although we define freezing in terms of the program text as a whole -(i.e. after applying the rules of @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Program Structure and Compilation Issues}), +(i.e. after applying the rules of +@RefSecFullNum{Program Structure and Compilation Issues}), the freezing rules actually have no effect beyond compilation unit boundaries. @end{Ramification} @begin{Reason} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -That is important, because @Chg{Version=[3],New=[Clause],Old=[Section]} -@RefSecNum{Program Structure and Compilation Issues} allows some +That is important, because +@RefSecFullNum{Program Structure and Compilation Issues} allows some implementation definedness in the order of things, and we don't want the freezing rules to be implementation defined. @end{Reason} diff --git a/source/aa-aarm.msm b/source/aa-aarm.msm index 958b5790..24991a00 100644 --- a/source/aa-aarm.msm +++ b/source/aa-aarm.msm @@ -26,8 +26,8 @@ @RTFHeaderPrefix{Version=[2],Text=[ISO/IEC 8652:2007(E) Ed. 3]} @RTFHeaderPrefix{Version=[3],Text=[ISO/IEC 8652:2012(E)]} @RTFHeaderPrefix{Version=[4],Text=[ISO/IEC 8652:2012(E) with COR.1:2016]} -@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 34]}} -@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 34]} +@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 35]}} +@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 35]} @Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[6],Text=[Ada 2022 with Corr 1 Draft 1]} @RTFFooter{UseDate=[T],UseClauseName=[T],UseISOFormat=[F]}@Comment{RM style footers} @RTFPageSize{Letter} @@ -52,7 +52,7 @@    Home Conformity Assessment   Test Suite ARGAda Standard -
 
Annotated Ada Reference Manual (Ada 2022 Draft 34)Legal Information
} +
 
Annotated Ada Reference Manual (Ada 2022 Draft 35)Legal Information
} @HTMLFooter{
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
} @HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#000080],VLink=[#330033],ALink=[#0000FF]} diff --git a/source/aa-rm.msm b/source/aa-rm.msm index d6b6511c..91d01960 100644 --- a/source/aa-rm.msm +++ b/source/aa-rm.msm @@ -26,8 +26,8 @@ @Comment{PDFs: }@RTFHeaderPrefix{Version=[3],Text=[ISO/IEC 8652:2012(E)]} @Comment{Springer: @RTFHeaderPrefix{Version=[3],Text=[Ada Reference Manual - 2012 Edition]}} @Comment{PDFs: }@RTFHeaderPrefix{Version=[4],Text=[ISO/IEC 8652:2012(E) with COR.1:2016]} -@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 34]}} -@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 34]} +@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 35]}} +@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 35]} @Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[6],Text=[Ada 2022 with Corr 1 Draft 1]} @RTFFooter{UseDate=[T],UseClauseName=[T],UseISOFormat=[F]}@Comment{RM style footers} @RTFPageSize{Ada95} @@ -52,7 +52,7 @@    Home Conformity Assessment   Test Suite ARGAda Standard -
 
Ada Reference Manual (Ada 2022 Draft 34)Legal Information
} +
 
Ada Reference Manual (Ada 2022 Draft 35)Legal Information
} @HTMLFooter{
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
} @HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#000080],VLink=[#330033],ALink=[#0000FF]} diff --git a/source/aarm.msm b/source/aarm.msm index 8c969424..30d9a88b 100644 --- a/source/aarm.msm +++ b/source/aarm.msm @@ -26,8 +26,8 @@ @RTFHeaderPrefix{Version=[2],Text=[ISO/IEC 8652:2007(E) Ed. 3]} @RTFHeaderPrefix{Version=[3],Text=[ISO/IEC 8652:2012(E)]} @RTFHeaderPrefix{Version=[4],Text=[ISO/IEC 8652:2012(E) with COR.1:2016]} -@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 34]}} -@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 34]} +@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 35]}} +@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 35]} @Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[6],Text=[Ada 2022 with Corr 1 Draft 1]} @RTFFooter{UseDate=[T],UseClauseName=[T],UseISOFormat=[F]}@Comment{RM style footers} @RTFPageSize{Letter} @@ -48,7 +48,7 @@ UseButtons=[T],OnTop=[T],OnBottom=[T]} @Comment{We let the program link to the index} @HTMLTabs{EmulateFixedOnly} -@HTMLHeader{
Annotated Ada Reference Manual (Ada 2022 Draft 34)Legal Information
} +@HTMLHeader{
Annotated Ada Reference Manual (Ada 2022 Draft 35)Legal Information
} @HTMLFooter{
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
} @HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#000080],VLink=[#330033],ALink=[#0000FF]} diff --git a/source/biblio.mss b/source/biblio.mss index 559816e4..6aa1e70d 100644 --- a/source/biblio.mss +++ b/source/biblio.mss @@ -1,10 +1,10 @@ @Part(01, Root="ada.mss") -@Comment{$Date: 2022/05/14 04:06:51 $} +@Comment{$Date: 2023/01/05 05:49:11 $} @Comment{$Source: e:\\cvsroot/ARM/Source/biblio.mss,v $} -@Comment{$Revision: 1.1 $} +@Comment{$Revision: 1.2 $} @Comment{Header and introductory text is found in ISO_Bib.mss and RM_Bib.mss.} @@ -15,7 +15,7 @@ @Defn2{Term=[character set standard],Sec=(7-bit)} ISO/IEC 646:1991, @i{Information technology @em ISO 7-bit coded character - set for information interchange}.]} + set for information interchange}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} @ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 1539-1:2018} @@ -23,28 +23,28 @@ ISO/IEC 646:1991, @Defn{Fortran standard} ISO/IEC 1539-1:2018, @i{Information technology @em Programming languages @em -Fortran @em Part 1: Base language}.]} +Fortran @em Part 1: Base language}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} @ChgAdded{Version=[5],Text=[@Defn{ISO 1989:2002} @Defn{1989:2002, ISO standard} @Defn{COBOL standard} ISO@Chg{Version=[2],New=[/IEC],Old=[]} 1989:2002, -@i{Information technology @em Programming languages @em COBOL}.]} +@i{Information technology @em Programming languages @em COBOL}]} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 6429:1992} @Defn{6429:1992, ISO/IEC standard} @Defn2{Term=[character set standard],Sec=(control functions)} ISO/IEC 6429:1992, @i{Information technology @em Control functions for coded - graphic character sets}.]} +character sets}]} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[@Defn{ISO 8601:2004} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1],ARef=[AI12-0450-1]} +@ChgAdded{Version=[5],Text=[@Defn{ISO 8601-1:2019}@Defn{8601-1:2019, ISO standard} @Defn{date and time formatting standard} -ISO 8601:2004, @i{Data elements and interchange formats @em Information -interchange @em Representation of dates and times}.]} +ISO 8601-1:2019, @i{Data elements and interchange formats @em Information +interchange @em Part 1, Representation of dates and times}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} @ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 8859-1:1998} @@ -53,35 +53,28 @@ interchange @em Representation of dates and times}.]} ISO/IEC 8859-1:1998, @i{Information technology @em 8-bit single-byte coded graphic character -sets @em Part 1: Latin alphabet No. 1}.]} +sets @em Part 1: Latin alphabet No. 1}]} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 9899:2011} -@Defn{9899:2011, ISO/IEC standard} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1],ARef=[AI12-0450-1]} +@ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 9899:2018} +@Defn{9899:2018, ISO/IEC standard} @Defn{C standard} -ISO/IEC 9899:2011, +ISO/IEC 9899:2018, @i{Information technology @em Programming -languages @em C}.]} +languages @em C}]} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 14882:2011} -@Defn{14882:2011, ISO/IEC standard} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1],ARef=[AI12-0450-1]} +@ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 14882:2020} +@Defn{14882:2020, ISO/IEC standard} @Defn{C++ standard} -ISO/IEC 14882:2011, -@i{Information technology @em Programming languages @em C++}.]} - -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[@Defn{ISO/IEC TR 19769:2004} -@Defn{19769:2004, ISO/IEC technical report} -ISO/IEC TR 19769:2004, @i{Information technology @em Programming languages, -their environments and system software interfaces @em Extensions for the -programming language C to support new character data types}.]} +ISO/IEC 14882:2020, +@i{Information technology @em Programming languages @em C++}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0437-1]} @ChgAdded{Version=[5],Text=[@Defn{ISO/IEC 60559:2020} @Defn{60559:2020, ISO/IEC standard} ISO/IEC 60559:2020, @i{Information technology @em Microprocessor Systems -@em Floating-Point arithmetic}.]} +@em Floating-Point arithmetic}]} @begin{Discussion} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0437-1]} @@ -90,12 +83,13 @@ POSIX, @i{Portable Operating System Interface (POSIX) @em Part 1: System Application Program Interface (API) [C Language]}, The Institute of Electrical and Electronics Engineers, - 1990.]} + 1990]} @end{Discussion} @end{Intro} @begin{DiffWord2012} - @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} - @ChgAdded{Version=[5],Text=[Moved the majority of references here.]} + @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1],ARef=[AI12-0450-1]} + @ChgAdded{Version=[5],Text=[Moved the majority of references here, updating + the dates and names for some.]} @end{DiffWord2012} diff --git a/source/ds.mss b/source/ds.mss index 424a69ed..fcb5eb3f 100644 --- a/source/ds.mss +++ b/source/ds.mss @@ -1,7 +1,7 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/ds.mss,v $ } -@comment{ $Revision: 1.89 $ $Date: 2022/09/17 06:51:39 $ $Author: randy $ } +@comment{ $Revision: 1.90 $ $Date: 2023/01/05 05:49:08 $ $Author: randy $ } @Part(dist, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:39 $} +@Comment{$Date: 2023/01/05 05:49:08 $} @LabeledNormativeAnnex{Distributed Systems} @@ -302,7 +302,7 @@ considered a categorization pragma]}. A library package or generic library package is called a @i{shared passive} library unit if @Chg{Version=[3],New=[the],Old=[a]} Shared_Passive @Chg{Version=[3],New=[aspect of the unit is True],Old=[pragma -applies to it]}. @Defn{remote types library unit} A library package or generic +applies to it]}. @Defn{remote types library unit}A library package or generic library package is called a @i{remote types} library unit if @Chg{Version=[3],New=[the],Old=[a]} Remote_Types @Chg{Version=[3],New=[aspect of the unit is True],Old=[pragma applies to it]}. @Defn{remote call interface} A @@ -906,7 +906,8 @@ A value of a remote access-to-class-wide type shall be dereferenced (or implicitly converted to an anonymous access type) only as part of a dispatching call @Chg{Version=[4],New=[to a primitive operation of the designated type ],Old=[]}where the value designates -a controlling operand of the call (see @RefSec{Remote Subprogram Calls}); +a controlling operand of the call (see @ISODiff{NotISO=[@RefSecFull{Remote Subprogram Calls}], + ISOOnly=[@RefSecFullNum{Remote Subprogram Calls}]}); @begin{Ramification} @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0034-1]} @ChgAdded{Version=[4],Text=[Stream attributes of the designated type are not @@ -935,7 +936,7 @@ access-to-class-wide type shall not be an actual parameter for a generic formal access type@Chg{New=[.],Old=[;]}@Chg{Version=[2],New=[ The Storage_Size attribute of a remote access-to-class-wide type yields 0@Chg{Version=[4], New=[],Old=[; it is not allowed in an @nt{attribute_definition_clause}]}.], -Old=[]}@Chg{Version=[4],New=[ The Storage_Pool and Storage_Size aspects +Old=[]}@Chg{Version=[4],New=[ The Storage_Pool and Storage_Size aspects shall not be specified for a remote access-to-class-wide type.],Old=[]} @begin{Reason} @ChgRef{Version=[2],Kind=[Revised]} @@ -2340,7 +2341,7 @@ across active partitions:} @key{end} Tape_Client; @end{example} -@leading@keepnext@i{Notes on the example}: +@leading@keepnext@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0452-1]}@i{@Chg{Version=[5],New=[Discussion of],Old=[Notes on]} the example}: @begin{Discussion} The example does not show the case where tapes are removed from or added to the system. In the former case, an appropriate exception needs to be defined diff --git a/source/foreword_tail.mss b/source/foreword_tail.mss index 4ad6fcd2..2b61afe2 100644 --- a/source/foreword_tail.mss +++ b/source/foreword_tail.mss @@ -1,114 +1,117 @@ @Part(foreword_tail, root="ada.mss") @comment{$Source: e:\\cvsroot/ARM/Source/foreword_tail.mss,v $} -@comment{$Revision: 1.3 $ $Date: 2022/09/17 06:51:40 $} +@comment{$Revision: 1.4 $ $Date: 2023/01/05 05:49:11 $} @Comment{This file contains the ending shared part of the Foreword.} @Comment{The beginning of the Foreword is found in ISO_Forward.mss and RM_Forward.mss} @begin{Intro} -@begin{ISOOnly} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[The main changes are as follows:]} -@end{ISOOnly} -@begin{NotISO} -@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Type=[Leading],Text=[Significant changes in this edition -are:]} - -@end{NotISO} - - +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Significant changes +in this edition are],ISOOnly=[The main changes are as follows]}:]} @begin{Itemize} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[Improved support for parallel execution is provided via -the introduction of parallel loops, parallel blocks, parallel container -iteration, and parallel reduction.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Improved],ISOOnly=[improved]} +support for parallel execution is provided via the introduction of parallel +loops, parallel blocks, parallel container iteration, and parallel +reduction@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[More precise specification of subprogram interfaces is -supported via the new aspects Global, Global'Class, and Nonblocking. The Global -aspects, in particular, help to determine whether two constructs can -safely execute in parallel.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[More],ISOOnly=[more]} precise +specification of subprogram interfaces is supported via the new aspects +Global, Global'Class, and Nonblocking. The Global aspects, in particular, +help to determine whether two constructs can +safely execute in parallel@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} @ChgAdded{Version=[5],Text=[Pre and Post aspects can now be specified for access-to-subprogram types and for generic formal subprograms; a postcondition for the default initialization of a type can be specified using the new -Default_Initial_Condition aspect.]} +Default_Initial_Condition aspect@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[The behavior of many predefined container operations -is now more precisely specified by using pre- and postcondition specifications -instead of English descriptions; a restricted (@lquotes@;stable@rquotes) -view for most containers is introduced to support more efficient -iteration.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[The],ISOOnly=[the]} behavior of +many predefined container operations is now more precisely specified by using +pre- and postcondition specifications instead of English descriptions; a +restricted (@lquotes@;stable@rquotes) view for most containers is introduced +to support more efficient iteration@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[More flexible uses of static expressions are supported -via the introduction of static expression functions along with fewer -restrictions on static strings.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[More],ISOOnly=[more]} flexible +uses of static expressions are supported via the introduction of static +expression functions along with fewer restrictions on static +strings@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[The Image attribute is supported for nonscalar types, -and a user-specifiable attribute Put_Image is provided, which determines -the value of the Image attribute for a user-defined type.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[The],ISOOnly=[the]} Image +attribute is supported for nonscalar types, and a user-specifiable attribute +Put_Image is provided, which determines the value of the Image attribute for +a user-defined type@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[The use of numeric and string literals is generalized to -allow their use with other categories of types, via the new aspects Integer_Literal, -Real_Literal, and String_Literal.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[The],ISOOnly=[the]} use of numeric +and string literals is generalized to allow their use with other categories of +types, via the new aspects Integer_Literal, Real_Literal, and +String_Literal@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[Array and record aggregates are made more flexible: -index parameters are allowed in an array aggregate to define the components as a -function of their array index; discriminants can be defined more flexibly within -an aggregate for a variant record type.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Array],ISOOnly=[array]} and +record aggregates are made more flexible: index parameters are allowed in an +array aggregate to define the components as a function of their array index; +discriminants can be defined more flexibly within an aggregate for a +variant record type@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[New types of aggregates are provided: delta -aggregates to allow the construction of a new object by incremental updates to -an existing object; container aggregates to allow construction of an object of a -container type by directly specifying its elements.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[New],ISOOnly=[new]} types of +aggregates are provided: delta aggregates to allow the construction of a new +object by incremental updates to an existing object; container aggregates to +allow construction of an object of a container type by directly specifying +its elements@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[A shorthand is provided, using the token '@@', to -refer to the target of an assignment statement in the expression defining its -new value.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[A],ISOOnly=[a]} shorthand is +provided, using the token '@@', to refer to the target of an assignment +statement in the expression defining its new value@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[Declare expressions are provided that permit the -definition and use of local constants or renamings, to allow a large expression -to be simplified by defining common parts as named entities.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Declare],ISOOnly=[declare]} +expressions are provided that permit the definition and use of local constants +or renamings, to allow a large expression to be simplified by defining common +parts as named entities@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[Support for lightweight iteration is added via the -introduction of procedural iterators.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Support],ISOOnly=[support]} for +lightweight iteration is added via the introduction of procedural +iterators@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[Support for the map-reduce programming strategy is -added via the introduction of reduction expressions.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Support],ISOOnly=[support]} for the +map-reduce programming strategy is added via the introduction of reduction +expressions@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[For constructs that use iterators of any sort, a -filter can be specified that restricts the elements produced by the iteration to -those that satisfy the condition of the filter.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[For],ISOOnly=[for]} constructs +that use iterators of any sort, a filter can be specified that restricts the +elements produced by the iteration to those that satisfy the condition of the +filter@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[Predefined packages supporting arbitrary-precision -integer and real arithmetic are provided.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[Predefined],ISOOnly=[predefined]} +packages supporting arbitrary-precision integer and real arithmetic +are provided@ISODiff{NotISO=[.],ISOOnly=[;]}]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0313-1],ARef=[AI12-0441-1]} -@ChgAdded{Version=[5],Text=[The Jorvik profile is introduced to support hard -real-time applications that want to go beyond the restrictions of the Ravenscar -profile.]} +@ChgAdded{Version=[5],Text=[@ISODiff{NotISO=[The],ISOOnly=[the]} Jorvik profile +is introduced to support hard real-time applications that want to go beyond the +restrictions of the Ravenscar profile.]} @end{Itemize} @begin{ISOOnly}@Comment{Rest of ISO boilerplate} -Any feedback or questions on this document should be directed to the user's +Any feedback or questions on this document should be directed to the user@rquote@;s national standards body. A complete listing of these bodies can be found at @Urllink{URL=[https://www.iso.org/members.html],Text=[www.iso.org/members.html],AllFormats=[T]} and @Urllink{URL=[https://www.iec.ch/national-committees], diff --git a/source/general_body.mss b/source/general_body.mss index 51f8e77d..8e3f0469 100644 --- a/source/general_body.mss +++ b/source/general_body.mss @@ -1,9 +1,9 @@ @Part(01, Root="ada.mss") -@Comment{$Date: 2022/09/23 04:34:04 $} +@Comment{$Date: 2023/01/05 05:49:11 $} @Comment{$Source: e:\\cvsroot/ARM/Source/general_body.mss,v $} -@Comment{$Revision: 1.5 $} +@Comment{$Revision: 1.6 $} @Comment{The clause header is found in General.Mss. Other parts are found in other files, depending upon the version. Note that the subclause labeled @@ -59,7 +59,7 @@ Clauses 1 through 16 @end{Itemize} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[core language], - Def=[a clause or annex in which are defined language constructs or + Def=[clause or annex in which are defined language constructs or capabilities that are provided by all conforming implementations], Note1=[A construct is said to be part of the core language if it is defined in a core language clause or annex.]} @@ -100,10 +100,11 @@ by certain application areas: @end{Itemize} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[specialized needs annex], - Def=[an annex in which are defined language + Def=[annex in which are defined language constructs or capabilities that are not necessarily provided by all conforming implementations]} +@begin{NotISO}@Comment{ISO doesn't allow this anymore} @begin{WideAbove} @Leading@Defn{normative} @Defn2{Term=[Annex],Sec=(normative)} @@ -118,6 +119,7 @@ is informative: Each @Chg{Version=[3],New=[],Old=[clause or ]}subclause whose title starts with the word @lquotes@;Example@rquotes@; or @lquotes@;Examples@rquotes@;. @end(Itemize) +@end{NotISO} @begin{NotISO}@Comment{This is given above in ISO versions} All implementations shall conform to the core language. @@ -126,10 +128,11 @@ Specialized Needs Annexes. @end{NotISO} @begin{WideAbove} -@Leading@Keepnext@Defn{informative} +@Leading@Keepnext@ISODiff{NotISO=[@Defn{informative} @IndexSee{Term=[nonnormative],See=(informative)} -@Defn2{Term=[Annex],Sec=(informative)} -The following Annexes are informative: +@Defn2{Term=[Annex],Sec=(informative)}],ISOOnly=[]} +The following Annexes @ISODiff{NotISO=[are informative],ISOOnly=[provide +additional information]}: @end{WideAbove} @begin{Itemize} @RefSec{Language-Defined Aspects and Attributes} @@ -218,7 +221,7 @@ to all of them. @Chgref{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @Chgref{Version=[4],Kind=[Revised],ARef=[AI12-0056-1]} Each @Chg{Version=[4],New=[clause],Old=[section]} is divided into -@Chg{Version=[3],New=[],Old=[clauses and]} subclauses that have a +@Chg{Version=[3],New=[],Old=[clauses and ]}subclauses that have a common structure. Each @Chg{Version=[3],New=[],Old=[section, ]}clause@Chg{Version=[3],New=[],Old=[,]} and subclause first introduces its subject. @@ -428,14 +431,14 @@ However, it shall support at least parameterless procedures.@rquotes @Defn{implementation advice} @Defn{advice} Optional advice given to the implementer. -The word @lquotes@;should@rquotes@; is used to indicate that the advice is -a recommendation, not a requirement. -It is implementation defined -whether or not a given recommendation is obeyed. +@ISODiff{NotISO=[The word @lquotes@;should@rquotes@; is used to indicate +that the advice is a recommendation, not a requirement. ],ISOOnly=[]}It is +implementation defined whether or not a given recommendation is +obeyed.@Comment{"ISO Policies" don't allow talking about verbal forms in the body of the Standard} @ChgImplDef{Version=[2],Kind=[Revised],InitialVersion=[0], Text=[Whether or not each recommendation given in @ImplAdviceTitle is followed@Chg{Version=[2], -New=[ @em see @RefSec{Implementation Advice} for a listing],Old=[]}.]} +New=[ @em see @RefSecNum{Implementation Advice} for a listing],Old=[]}.]} @begin{Discussion} @ChgRef{Version=[1],Kind=[Revised]} The advice generally shows the intended implementation, but @@ -464,13 +467,13 @@ burden implementations by requiring the behavior. @begin{Notes} @Defn{notes} Notes emphasize consequences of the rules -described in the (sub)clause or elsewhere. -This material is informative. +described in the (sub)clause or elsewhere.@ISODiff{NotISO=[ +This material is informative.],ISOOnly=[]} @end{Notes} @begin{Examples} -@NewExample@;Examples illustrate the possible forms of the constructs described. -This material is informative. +@NewExample@;Examples illustrate the possible forms of the constructs described.@ISODiff{NotISO=[ +This material is informative.],ISOOnly=[]} @begin{Discussion} @ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0386-1]} @ChgAdded{Version=[5],Text=[Names used in examples refer either to @@ -1215,7 +1218,12 @@ capability required by the core language as specified. In addition, an implementation that conforms to this @StdTitle may conform to one or more Specialized Needs Annexes (or to none). -Conformance to a Specialized Needs Annex means that each capability +Conformance to a Specialized Needs Annex +@ISODiff{NotISO=[],ISOOnly=[(@RefSecNum{Systems Programming}, +@RefSecNum{Real-Time Systems}, @RefSecNum{Distributed Systems}, +@RefSecNum{Information Systems}, @RefSecNum{Numerics}, and +@RefSecNum{High Integrity Systems})]}means +that each capability required by the Annex @Chg{Version=[5],New=[shall be],Old=[is]} provided as specified. @begin{Discussion} @@ -1343,7 +1351,7 @@ it might cause the program to be less portable, however. @end(Discussion) @ChgDocReq{Version=[2],Kind=[AddedNormal],Text=[@ChgAdded{Version=[2],Text=[ The behavior of implementations in implementation-defined situations -shall be documented @em see @RefSec{Implementation-Defined Characteristics} +shall be documented @em see @RefSecNum{Implementation-Defined Characteristics} for a listing.]}]} @end{DocReq} @@ -1552,7 +1560,7 @@ ASCII characters; no characters outside of the 7-bit range are required.]} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00395-01]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0227-1],ARef=[AI05-0299-1]} -@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[2],Text=[When this @IntlStdName mentions the conversion of some character or sequence of characters to upper case, it means the character or sequence of characters obtained by using @@ -1560,7 +1568,7 @@ the character or sequence of characters obtained by using full case folding]}, as defined by documents referenced in @Chg{Version=[5],New=[],Old=[the note in ]}@Chg{Version=[3],New=[Clause],Old=[section]} @Chg{Version=[5],New=[2],Old=[1]} -of ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}.]} +of ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}.]} @begin{Discussion} @ChgRef{Version=[2],Kind=[AddedNormal]} @ChgRef{Version=[3],Kind=[DeletedAddedNoDelMsg]} @@ -1600,7 +1608,7 @@ Names of syntactic categories are set in a different font, (explicit or implicit) that is an instance of a syntactic category defined under @lquotes@;@SyntaxTitle@rquotes@;.>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[construct], - Def=[a piece of text (explicit or implicit) that is an instance + Def=[piece of text (explicit or implicit) that is an instance of a syntactic category defined under @SyntaxTitle]} @begin{Ramification} For example, an @nt{expression} is a construct. diff --git a/source/infosys.mss b/source/infosys.mss index 5a718ceb..aa1cd5da 100644 --- a/source/infosys.mss +++ b/source/infosys.mss @@ -1,8 +1,8 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/infosys.mss,v $ } -@comment{ $Revision: 1.53 $ $Date: 2022/09/17 06:51:39 $ $Author: randy $ } +@comment{ $Revision: 1.54 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @Part(infosys, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:39 $} +@Comment{$Date: 2023/01/05 05:49:09 $} @LabeledNormativeAnnex{Information Systems} @begin{Intro} @@ -27,18 +27,22 @@ support formatted and localized output of decimal data, based on @end{itemize} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00434-01]} -See also: @RefSec{Fixed Point Types}; @RefSec{Operations of Fixed Point Types}; -@RefSec{Type Conversions}; -@RefSec{Operational and Representation Attributes}; -@RefSec(Input-Output for Real Types);@Chg{Version=[2], +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +@Chg{Version=[5],New=[Other relevant facilities can be found in],Old=[See also]}: +@ISODiff{NotISO=[@RefSecFull{Fixed Point Types}],ISOOnly=[@RefSecFullNum{Fixed Point Types}]}; +@ISODiff{NotISO=[@RefSecFull{Operations of Fixed Point Types}],ISOOnly=[@RefSecFullNum{Operations of Fixed Point Types}]}; +@ISODiff{NotISO=[@RefSecFull{Type Conversions}],ISOOnly=[@RefSecFullNum{Type Conversions}]}; +@ISODiff{NotISO=[@RefSecFull{Operational and Representation Attributes}],ISOOnly=[@RefSecFullNum{Operational and Representation Attributes}]}; +@ISODiff{NotISO=[@RefSecFull{Input-Output for Real Types}],ISOOnly=[@RefSecFullNum{Input-Output for Real Types}]};@Chg{Version=[2], New=[],Old=[@RefSec{Interfacing with COBOL};]} -@RefSec{Interfacing with C and C++};@Chg{Version=[2], -New=[ @RefSec{Interfacing with COBOL};],Old=[]} -@RefSec{Numerics}. +@ISODiff{NotISO=[@RefSecFull{Interfacing with C and C++}],ISOOnly=[@RefSecFullNum{Interfacing with C and C++}]};@Chg{Version=[2], +New=[ @ISODiff{NotISO=[@RefSecFull{Interfacing with COBOL}],ISOOnly=[@RefSecFullNum{Interfacing with COBOL}]};],Old=[]} +@ISODiff{NotISO=[@RefSecFull{Numerics}],ISOOnly=[@RefSecFullNum{Numerics}]}. The character and string handling packages in -@RefSec{Predefined Language Environment} - are also relevant for Information Systems. +@ISODiff{NotISO=[@RefSecFull{Predefined Language Environment}], + ISOOnly=[@RefSecFullNum{Predefined Language Environment}]} +are also relevant for Information Systems. @end{Intro} @begin{ImplAdvice} @@ -326,7 +330,8 @@ indicates the space character. The generic packages Text_IO.Decimal_IO@Chg{Version=[2],New=[,],Old=[ and]} Wide_@!Text_IO.Decimal_IO@Chg{Version=[2],New=[, and Wide_@!Wide_@!Text_IO.Decimal_IO],Old=[]} -(see @RefSec(Input-Output for Real Types)) +(see @ISODiff{NotISO=[@RefSecFull{Input-Output for Real Types}], +ISOOnly=[@RefSecFullNum{Input-Output for Real Types}]}) provide text input and nonedited text output for decimal types. @end{Intro} @@ -693,7 +698,8 @@ and the edited output string is the concatenation of string values derived from these categories according to the following mapping rules. -Table F-1 shows the mapping from a sign control symbol to a +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} +Table @Chg{Version=[5],New=[F.1],Old=[F-1]} shows the mapping from a sign control symbol to a corresponding character or string in the edited output. In the columns showing the edited output, a lower-case 'b' represents the space character. @@ -703,7 +709,7 @@ is produced. @Table{Columns=<3>,Alignment=,FirstColWidth=[1],LastColWidth=[1], NoBreak=[T],Border=[T],SmallSize=[F], -Caption=<@b{Table F-1: Edited Output for Sign Control Symbols}>, +Caption=<@b{Table @Chg{Version=[5],New=[F.1],Old=[F-1]}: Edited Output for Sign Control Symbols}>, Headers=<@b{Sign Control Symbol}@\@b{Edited Output for @*Nonnegative Number}@\@b{Edited Output for @*Negative Number}>, Body=['+'@\'+'@\'@en@;' '@en@;'@\'b'@\'@en@;' @@ -712,8 +718,9 @@ Body=['+'@\'+'@\'@en@;' "CR"@\"bb"@\"CR"@Last "DB"@\"bb"@\"DB"]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} An instance of @ntf{fixed_LHS_sign} maps to a character as shown in -Table F-1. +Table @Chg{Version=[5],New=[F.1],Old=[F-1]}. An instance of @ntf{fixed_$_char} maps to Currency. @@ -797,9 +804,9 @@ where: edited output string is produced. @end{Enumerate} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} An instance of @ntf{RHS_sign} maps to a character or string -as shown in Table F-1. - +as shown in Table @Chg{Version=[5],New=[F.1],Old=[F-1]}. An instance of @ntf{floating_LHS_sign} maps to the string obtained as follows. @begin{Enumerate} @@ -808,8 +815,9 @@ An instance of @ntf{floating_LHS_sign} maps to the string obtained as follows. from the @i{integer_part} of the mapping of the @ntf{number} to the right of the @ntf{floating_LHS_sign} instance. + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} The next Character to the left is replaced - with the character given by the entry in Table F-1 + with the character given by the entry in Table @Chg{Version=[5],New=[F.1],Old=[F-1]} corresponding to the @ntf{LHS_Sign} Character. A @ntf{context_sensitive_insertion} Character is replaced @@ -1204,7 +1212,9 @@ raises the exception Layout_Error. @Trailing@;Each of these Put procedures outputs Image(Item, Pic, Currency, Fill, Separator, Radix_Mark) consistent with the conventions for Put for other real types in case -of bounded line length (see @RefSec{Get and Put Procedures}). +of bounded line length (see +@ISODiff{NotISO=[@RefSecFull{Get and Put Procedures}], + ISOOnly=[@RefSecFullNum{Get and Put Procedures}]}). @begin{Example} @key(procedure) Put (To : @key(out) String; @@ -1238,34 +1248,78 @@ if its expanded form exceeds 30 characters. @end{Discussion} @end{ImplReq} -@begin{SingleNote} -@Leading@;The rules for edited output are based on COBOL (ANSI X3.23:1985, -endorsed by ISO as ISO 1989-1985), with the -following differences: +@begin{Notes} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0450-1]} +@ChgDeleted{Version=[5],Type=[Leading],Text=[The rules for edited output +are based on COBOL (ANSI X3.23:1985, endorsed by ISO as ISO 1989-1985), +with the following differences:]} @begin{Itemize} - The COBOL provisions for picture string localization and for 'P' format - are absent from Ada. +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg]} + @ChgDeleted{Version=[5],Text=[The COBOL provisions for picture string + localization and for 'P' format are absent from Ada.]} - @Leading@;The following Ada facilities are not in COBOL: +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg]} + @ChgDeleted{Version=[5],Type=[Leading],Text=[The following Ada facilities are not in COBOL:]} @begin{InnerItemize} - currency symbol placement after the number, +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg]} + @ChgDeleted{Version=[5],Text=[currency symbol placement after the number,]} - localization of edited output string for multi-character - currency string values, including support for both length-preserving - and length-expanding currency symbols in picture strings +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg]} + @ChgDeleted{Version=[5],Text=[localization of edited output string for + multi-character currency string values, including support for both + length-preserving and length-expanding currency symbols in picture strings]} - localization of the radix mark, digits separator, and - fill character, and +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg]} + @ChgDeleted{Version=[5],Text=[llocalization of the radix mark, digits separator, and + fill character, and]} - parenthesization of negative values. +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg]} + @ChgDeleted{Version=[5],Text=[parenthesization of negative values.]} @end{InnerItemize} @end{Itemize} @ChgNote{The following paragraph is missing a number in the original version. To give it a number in the new version, it is marked as an insertion.} -@ChgRef{Version=[0],Kind=[Added]}@NoPrefix -@Chg{New=[],Old=[@Noparanum@;]}The value of 30 for Max_Picture_Length is the -same limit as in COBOL. -@end{SingleNote} +@ChgRef{Version=[0],Kind=[Added]} +@ChgRef{Version=[5],Kind=[DeletedAddedNoDelMsg],ARef=[AI12-0450-1]} +@ChgDeleted{Version=[5],NoPrefix=[T],Text=[@Chg{New=[],Old=[@Noparanum@;]}The value +of 30 for Max_Picture_Length is the same limit as in COBOL.]} +@end{Notes} +@begin{Discussion} +@Comment{We can't talk about the 1985 version of anything in the actual +Standard, so this information has been moved to an AARM note.} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0450-1]} +@ChgAdded{Version=[5],Type=[Leading],Text=[The rules for edited output +were based on the 1985 version of COBOL (ANSI X3.23:1985, endorsed by ISO +as ISO 1989-1985), with the following differences:]} +@begin{Itemize} +@ChgRef{Version=[5],Kind=[AddedNormal]} + @ChgAdded{Version=[5],Text=[The COBOL provisions for picture string + localization and for 'P' format are absent from Ada.]} + +@ChgRef{Version=[5],Kind=[AddedNormal]} + @ChgAdded{Version=[5],Type=[Leading],Text=[The following Ada facilities are + not in the 1985 version of COBOL:]} +@begin{InnerItemize} +@ChgRef{Version=[5],Kind=[AddedNormal]} + @ChgAdded{Version=[5],Text=[currency symbol placement after the number;]} + +@ChgRef{Version=[5],Kind=[AddedNormal]} + @ChgAdded{Version=[5],Text=[localization of edited output string for + multi-character currency string values, including support for both + length-preserving and length-expanding currency symbols in picture strings;]} + +@ChgRef{Version=[5],Kind=[AddedNormal]} + @ChgAdded{Version=[5],Text=[localization of the radix mark, digits separator, and + fill character; and]} + +@ChgRef{Version=[5],Kind=[AddedNormal]} + @ChgAdded{Version=[5],Text=[parenthesization of negative values.]} +@end{InnerItemize} +@end{Itemize} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0450-1]} +@ChgAdded{Version=[5],NoPrefix=[T],Text=[@Chg{New=[],Old=[@Noparanum@;]}The value +of 30 for Max_Picture_Length is the same limit as in COBOL.]} +@end{Discussion} @begin{Reason} There are several reasons we have not adopted the COBOL-style permission to diff --git a/source/interface.mss b/source/interface.mss index 31a37db3..ae44955d 100644 --- a/source/interface.mss +++ b/source/interface.mss @@ -1,8 +1,8 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/interface.mss,v $ } -@comment{ $Revision: 1.93 $ $Date: 2022/09/17 06:51:40 $ $Author: randy $ } +@comment{ $Revision: 1.94 $ $Date: 2023/01/05 05:49:12 $ $Author: randy $ } @Part(interface, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:40 $} +@Comment{$Date: 2023/01/05 05:49:12 $} @LabeledNormativeAnnex{Interface to Other Languages} @begin{Intro} @@ -72,7 +72,7 @@ Convention.@Defn{interfacing aspect}@Defn2{Term=[aspect],Sec=[interfacing]}]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0229-1],ARef=[AI05-0269-1]} @Chg{Version=[3],New=[@AspectDefn{Import}Specifying the],Old=[A @nt{pragma}]} Import -@Chg{Version=[3],New=[aspect to have the value True ],Old=[]}is used to import +@Chg{Version=[3],New=[aspect to have the value True ],Old=[]}is used to import an entity defined in a foreign language into an Ada program, thus allowing a foreign-language subprogram to be called from Ada, or a foreign-language variable to be accessed from Ada. @@ -234,7 +234,8 @@ shall be the name of a @i{convention}. The convention names are implementation defined, except for certain language-defined ones, such as Ada and Intrinsic, -as explained in @RefSec{Conformance Rules}. +as explained in +@ISODiff{NotISO=[@RefSecFull{Conformance Rules}],ISOOnly=[@RefSecFullNum{Conformance Rules}]}. @Redundant[Additional convention names generally represent the calling conventions of foreign languages, language implementations, or specific run-time models.] @@ -403,8 +404,8 @@ then the @nt{pragma} Import is the completion of all of them]}. @end(Discussion) @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0229-1]} -@Defn{imported entity} @Defn{exported entity} -An entity @Chg{Version=[3],New=[with a True],Old=[specified +@Defn{imported entity}@Defn{exported entity}An entity +@Chg{Version=[3],New=[with a True],Old=[specified as the Entity argument to a @nt[pragma]]} Import@Chg{Version=[3],New=[ aspect],Old=[]} (or @Chg{Version=[3],New=[],Old=[@nt[pragma] ]}Export@Chg{Version=[3],New=[ aspect],Old=[]}) is said to be @i{imported} @@ -622,7 +623,7 @@ from a pure package causes erroneous execution.],Old=[]}]} real change, so no Chgref} @ChgImplAdvice{Version=[3],Kind=[RevisedAdded],InitialVersion=[2], Text=[@ChgAdded{Version=[2], -Text=[If @Chg{Version=[3],New=[],Old=[@nt{pragma} ]} Export is supported +Text=[If @Chg{Version=[3],New=[],Old=[@nt{pragma} ]}Export is supported for a language, the main program should be able to be written in that language. Subprograms named "adainit" and "adafinal" @@ -653,7 +654,7 @@ for objects of @i[L]-compatible types and for subprograms, and @Chg{Version=[3],New=[the],Old=[@nt(pragma)]} Convention @Chg{Version=[3],New=[aspect ],Old=[]}for @i[L]-eligible types and for subprograms, presuming the other language has corresponding features. -@Chg{Version=[3],New=[Specifying the ],Old=[@nt{Pragma}]} Convention +@Chg{Version=[3],New=[Specifying the],Old=[@nt{Pragma}]} Convention @Chg{Version=[3],New=[aspect ],Old=[]}@Chg{Version=[5],New=[should],Old=[need not]} be supported for @Chg{Version=[5],New=[],Old=[scalar types]}@Chg{Version=[4],New=[@Chg{Version=[5],New=[],Old=[, other than]} @@ -748,7 +749,9 @@ in an interfacing pragma can denote more than one entity in the case of overloading. Such a @nt{pragma} applies to all of the denoted entities.]} -See also @RefSec{Machine Code Insertions}. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +@Chg{Version=[5],New=[Machine code insertions can also be relevant for interfacing; +see @RefSecNum{Machine Code Insertions}],Old=[See also @RefSec{Machine Code Insertions}]}. @begin{Ramification} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0229-1]} The Intrinsic convention (see @refsecnum(Conformance Rules)) @@ -1140,7 +1143,8 @@ should provide the corresponding package or packages described in the following @Chg{Version=[3],New=[subclauses],Old=[clauses]}. @ChgImplAdvice{Version=[2],Kind=[Added],Text=[@ChgAdded{Version=[2], Text=[If an interface to C, COBOL, or Fortran is provided, the corresponding -package or packages described in @RefSec{Interface to Other Languages} +package or packages described in +@ISODiff{NotISO=[@RefSecFull{Interface to Other Languages}],ISOOnly=[@RefSecFullNum{Interface to Other Languages}]} should also be provided.]}]} @begin{ImplNote} @Leading@;The intention is that an implementation might support several @@ -1323,7 +1327,8 @@ Old=[@VirtName{implementation-defined}]}; Trim_Nul : @key(in) Boolean := True); @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00285-01]} -@ChgAdded{Version=[2],Text=[ -- @ExamCom[ISO/IEC 10646:2003 compatible types defined by ISO/IEC TR 19769:2004.]]} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0450-1]} +@ChgAdded{Version=[2],Text=[ -- @ExamCom[ISO/IEC 10646@Chg{Version=[5],New=[],Old=[:2003]} compatible types@Chg{Version=[5],New=[],Old=[ defined by ISO/IEC TR 19769:2004]}.]]} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00285-01]} @ChgAdded{Version=[2],Text=[ @key @AdaTypeDefn{char16_t} @key @VirtName{};]} @@ -2651,12 +2656,14 @@ the array containing the Element designated by Target. @end{erron} @begin{SingleNote} +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} @Leading@;To compose a Pointer from an Element_Array, use 'Access on the first element. For example (assuming appropriate instantiations): @begin{example} Some_Array : Element_Array(0..5) ; Some_Pointer : Pointer := Some_Array(0)'Access; @end{example} +@end{NotISO} @end{SingleNote} @begin{Examples} @@ -2878,8 +2885,10 @@ These checks include:]} @begin{Itemize} @ChgRef{Version=[2],Kind=[AddedNormal]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} @ChgAdded{Version=[2],Text=[The check performed when addressing a variant - component (i.e., a component that was declared in a variant part) of an + component (@Chg{Version=[5],New=[that is],Old=[i.e.]}, a component that was + declared in a variant part) of an unchecked union object that the object has this component (see @RefSecNum{Selected Components}).]} @@ -3832,12 +3841,12 @@ type (see @RefSecNum(Interfacing Aspects)). @end[ImplReq] @begin{ImplPerm} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0058-1],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0058-1],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} An implementation may add additional declarations to the Fortran interface packages. For example, @Chg{Version=[5],New=[declarations are permitted for the character types corresponding to Fortran character kinds 'ascii' and 'iso_10646', which in turn correspond to ISO/IEC 646:1991 and -to UCS-4 as specified in ISO/IEC 10646:2017],Old=[the Fortran interface +to UCS-4 as specified in ISO/IEC 10646:2020],Old=[the Fortran interface package for an implementation of Fortran 77 (ANSI X3.9-1978) that defines types like Integer*@i{n}, Real*@i{n}, Logical*@i{n}, and Complex*@i{n} may contain the declarations of types named diff --git a/source/intro.mss b/source/intro.mss index c293e3e1..aa31e1fd 100644 --- a/source/intro.mss +++ b/source/intro.mss @@ -1,6 +1,6 @@ @Part(intro, root="ada.mss") @comment{$Source: e:\\cvsroot/ARM/Source/intro.mss,v $} -@comment{$Revision: 1.4 $ $Date: 2022/09/17 06:51:40 $} +@comment{$Revision: 1.5 $ $Date: 2023/01/05 05:49:12 $} @UnNumberedSection{Introduction} @@ -232,7 +232,7 @@ specification, containing the information that @Chg{Version=[5],New=[is],Old=[must be]} visible to other units, and a body, containing the implementation details, which @Chg{Version=[5],New=[are],Old=[need]} -not @Chg{Version=[5],New=[],Old=[be]} visible to other +not @Chg{Version=[5],New=[],Old=[be ]}visible to other units. Most program units can be compiled separately. This distinction of the specification and body, and the @@ -451,7 +451,7 @@ an operand of any type in a derivation class. For record and private types, the derivatives @Chg{Version=[5],New=[can],Old=[may]} be extensions of the parent type. Types that support these object-oriented capabilities of class-wide operations and type extension -@Chg{Version=[5],New=[have to],Old=[must]} be tagged, so that +@Chg{Version=[5],New=[are],Old=[must be]} tagged, so that the specific type of an operand within a derivation class can be identified at run time. When an operation of a tagged type is applied to an operand whose specific type is not @@ -633,9 +633,9 @@ to provide specific support for certain application areas:]} @begin{ISOOnly} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00387-01]} @ChgRef{Version=[3],Kind=[RevisedAdded]} -@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0313-1]} -@ChgAdded{Version=[2],Text=[@Chg{Version=[3],New=[This International Standard -replaces the @Chg{Version=[5],New=[third],Old=[second]} edition of +@ChgRef{Version=[5],Kind=[DeletedAdded],ARef=[AI12-0313-1]}@Comment{Moved to Foreword} +@ChgAdded{Version=[2],Text=[@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[This +International Standard replaces the @Chg{Version=[5],New=[third],Old=[second]} edition of @Chg{Version=[5],New=[2012],Old=[1995]}. It],Old=[Amendment 1]} modifies the @Chg{Version=[3],New=[previous edition],Old=[1995 International Standard]} by making changes and additions that improve the capability of the language and @@ -644,7 +644,7 @@ language.@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[ This edition incorporates the changes from Amendment 1 (ISO/IEC 8652:1995:AMD 1:2007), which],Old=[In particular the changes]} were designed to improve the portability of programs, interfacing to other -languages, and both the object-oriented and real-time capabilities.]}]} +languages, and both the object-oriented and real-time capabilities.]}]}]} @end{ISOOnly} @begin{NotISO} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00387-01]} diff --git a/source/iso-fdis.msm b/source/iso-fdis.msm index 168cbc03..0f32c024 100644 --- a/source/iso-fdis.msm +++ b/source/iso-fdis.msm @@ -89,8 +89,6 @@ @Source{Name=<12.MSS>,SectionName=<15>,SectionNumber=[15],NewSection=[T]} @Source{Name=<13A.MSS>,SectionName=<16>,SectionNumber=[16],NewSection=[T]} @Source{Name=<13B.MSS>,SectionName=<16>,SectionNumber=[16],NewSection=[F]} -@Comment{Now, the "Standard Libraries" separator page} -@Source{Name=,SectionName=,SectionNumber=[0],NewSection=[T]} @Comment{Annex A; all of the files starting with "Pre_" are part of Annex A.} @Source{Name=,SectionName=,SectionNumber=[A],NewSection=[T]} @Source{Name=,SectionName=,SectionNumber=[A],NewSection=[F]} diff --git a/source/iso_foreword.mss b/source/iso_foreword.mss index 9b69611b..99ebdb4f 100644 --- a/source/iso_foreword.mss +++ b/source/iso_foreword.mss @@ -1,6 +1,6 @@ @Part(iso_foreword, root="ada.mss") @comment{$Source: e:\\cvsroot/ARM/Source/iso_foreword.mss,v $} -@comment{$Revision: 1.3 $ $Date: 2022/09/17 06:51:40 $} +@comment{$Revision: 1.4 $ $Date: 2023/01/05 05:49:12 $} @UnNumberedSection(Foreword) @@ -56,7 +56,7 @@ environments and system software interfaces}. This fourth edition cancels and replaces the third edition (ISO/IEC 8652:2012), which has been technically -revised. It also incorporates Technical Corrigendum ISO/IEC 8652:2012:Cor.1:2016. +revised. It also incorporates the Technical Corrigendum ISO/IEC 8652:2012/Cor.1:2016. @Comment{The remainder of the Foreword is found in Forward-Tail.mss} diff --git a/source/iso_scope.mss b/source/iso_scope.mss index 243d80cc..2acae744 100644 --- a/source/iso_scope.mss +++ b/source/iso_scope.mss @@ -9,30 +9,30 @@ two horizontal rules at the top of page 1. (RLB-The following is a hack: I probably ought to add a style just for this purpose) @end{Comment} -@thickline +@ChgDeleted{Version=[5],Text=[@thickline]} @begin{WideAbove} -@noparanum@leading@tabclear()@tabset(P45) -@Swiss<@Grow[@B{INTERNATIONAL STANDARD@\ISO/IEC 8652:@Chg{Version=[2],New=[@Chg{Version=[5],New=[202x],Old=[@Chg{Version=[3],New=[2012(E)@Chg{Version=[4],New=[ with Cor 1:2016],Old=[]}],Old=[2007(E), Ed. 3]}]}],Old=[@Chg{Version=[1], New=[1995(E) with COR.1:2001], Old=[1995(E)]}]}}]> +@ChgDeleted{Version=[5],Noparanum=[T],Type=[Leading],Text=[@tabclear()@tabset(P45) +@Swiss<@Grow[@B{INTERNATIONAL STANDARD@\ISO/IEC 8652:@Chg{Version=[2],New=[@Chg{Version=[5],New=[202x],Old=[@Chg{Version=[3],New=[2012(E)@Chg{Version=[4],New=[ with Cor 1:2016],Old=[]}],Old=[2007(E), Ed. 3]}]}],Old=[@Chg{Version=[1], New=[1995(E) with COR.1:2001], Old=[1995(E)]}]}}]>]} @end{WideAbove} -@thickline +@ChgDeleted{Version=[5],Text=[@thickline]} @begin{Title} @noparanum@ @*@comment{Some vertical whitespace} -@noparanum@Swiss{@b{Information technology @Em Programming}}@* -@noparanum@Swiss{@b{Languages @Em Ada}} +@noparanum@Swiss{@b{Information technology @Em Programming@Chg{Version=[5],New=[ Languages @Em Ada],Old=[]}}}@Chg{Version=[5],New=[],Old=[@* +@noparanum@Swiss{@b{Languages @Em Ada}}]} @noparanum@ @*@comment{Some vertical whitespace} @end{Title} @end{ISOOnly} @LabeledSectionNoBreak{Scope} -@Comment{$Date: 2022/05/14 04:06:52 $} +@Comment{$Date: 2023/01/05 05:49:12 $} @Comment{$Source: e:\\cvsroot/ARM/Source/iso_scope.mss,v $} -@Comment{$Revision: 1.1 $} +@Comment{$Revision: 1.2 $} @begin{Intro} This @IntlStdTitle specifies the form and meaning of programs written in Ada. diff --git a/source/langdef.mss b/source/langdef.mss index 6f8cd76e..4ba947c4 100644 --- a/source/langdef.mss +++ b/source/langdef.mss @@ -1,16 +1,17 @@ @Part(glossary, Root="ada.mss") -@Comment{$Date: 2012/11/28 23:53:06 $} +@Comment{$Date: 2023/01/05 05:49:12 $} @LabeledAddedInformativeAnnex{Version=[2],Name=[Language-Defined Entities]} @comment{$Source: e:\\cvsroot/ARM/Source/langdef.mss,v $} -@comment{$Revision: 1.8 $} +@comment{$Revision: 1.9 $} @begin{Intro} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00440-01]} @ChgAdded{Version=[2],Text=[This annex lists the language-defined entities of the language. A list of language-defined library units can be found -in @RefSec{Predefined Language Environment}.]} +in @ISODiff{NotISO=[@RefSecFull{Predefined Language Environment}], + ISOOnly=[@RefSecFullNum{Predefined Language Environment}]}.]} @end{Intro} @LabeledAddedClause{Version=[2],Name=[Language-Defined Packages]} diff --git a/source/norm-iso-rm.msm b/source/norm-iso-rm.msm index a045b507..826ee8b5 100644 --- a/source/norm-iso-rm.msm +++ b/source/norm-iso-rm.msm @@ -34,8 +34,8 @@ @Comment{PDFs: }@RTFHeaderPrefix{Version=[3],Text=[ISO/IEC 8652:2012(E)]} @Comment{Springer: @RTFHeaderPrefix{Version=[3],Text=[Ada Reference Manual - 2012 Edition]}} @Comment{PDFs: }@RTFHeaderPrefix{Version=[4],Text=[ISO/IEC 8652:2012(E) with COR.1:2016]} -@Comment{Final form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:202x(E) Draft 34]}} -@Comment{Working (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 34]} +@Comment{Final form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:202x(E) Draft 35]}} +@Comment{Working (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 35]} @RTFFooter{UseDate=[T],UseClauseName=[T],UseISOFormat=[F]}@Comment{RM style footers} @RTFPageSize{Ada95} @RTFSizes{Small} @@ -54,7 +54,7 @@ UseButtons=[T],OnTop=[T],OnBottom=[T]} @Comment{We let the program link to the index} @HTMLTabs{EmulateFixedOnly} -@HTMLHeader{} +@HTMLHeader{
Ada Reference Manual (Ada 2022 Draft 35)Legal Information
} @HTMLFooter{
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
} @HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#000080],VLink=[#330033],ALink=[#0000FF]} diff --git a/source/note-iso-rm.msm b/source/note-iso-rm.msm index 316cb10d..5d9ae5e0 100644 --- a/source/note-iso-rm.msm +++ b/source/note-iso-rm.msm @@ -31,8 +31,8 @@ @Comment{PDFs: }@RTFHeaderPrefix{Version=[3],Text=[ISO/IEC 8652:2012(E)]} @Comment{Springer: @RTFHeaderPrefix{Version=[3],Text=[Ada Reference Manual - 2012 Edition]}} @Comment{PDFs: }@RTFHeaderPrefix{Version=[4],Text=[ISO/IEC 8652:2012(E) with COR.1:2016]} -@Comment{Final form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:202x(E) Draft 34]}} -@Comment{Working (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 34]} +@Comment{Final form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:202x(E) Draft 35]}} +@Comment{Working (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 35]} @RTFFooter{UseDate=[T],UseClauseName=[T],UseISOFormat=[F]}@Comment{RM style footers} @RTFPageSize{Ada95} @RTFSizes{Small} @@ -51,7 +51,7 @@ UseButtons=[T],OnTop=[T],OnBottom=[T]} @Comment{We let the program link to the index} @HTMLTabs{EmulateFixedOnly} -@HTMLHeader{
Ada Reference Manual (Ada 2022 Draft 34)Legal Information
} +@HTMLHeader{
Ada Reference Manual (Ada 2022 Draft 35)Legal Information
} @HTMLFooter{
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
} @HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#000080],VLink=[#330033],ALink=[#0000FF]} diff --git a/source/numerics.mss b/source/numerics.mss index 00e8fa85..5f359643 100644 --- a/source/numerics.mss +++ b/source/numerics.mss @@ -1,8 +1,8 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/numerics.mss,v $ } -@comment{ $Revision: 1.80 $ $Date: 2022/06/21 06:08:02 $ $Author: randy $ } +@comment{ $Revision: 1.81 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @Part(numerics, Root="ada.mss") -@Comment{$Date: 2022/06/21 06:08:02 $} +@Comment{$Date: 2023/01/05 05:49:09 $} @LabeledNormativeAnnex{Numerics} @begin{Intro} @@ -265,7 +265,7 @@ Real'Base.} @VirtName{a} + @VirtName{b}*i (or @VirtName{a} + @VirtName{b}*j), if desired. Of course, in some contexts the sum will need to be parenthesized. - @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0437-1]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0437-1],ARef=[AI12-0453-1]} When an Ada binding to @Chg{Version=[5],New=[ISO/IEC 60559:2020],Old=[IEC 559:1989]} that provides (signed) infinities as the result of operations that overflow becomes available, it will be @@ -276,8 +276,8 @@ Real'Base.} @en@VirtName{b}@Times @VirtName{d} + @VirtName{a}@Times @VirtName{d}*i, but if one cannot avoid representing the pure-imaginary value @VirtName{d}*i as the complex value 0.0 + @VirtName{d}*i, then a NaN ("Not-a-Number") could be produced - as the result of multiplying @VirtName{a} by 0.0 (e.g., when @VirtName{a} is - infinite); the NaN could later trigger an exception. + as the result of multiplying @VirtName{a} by 0.0 (@Chg{Version=[5],New=[for example],Old=[e.g.]}, + when @VirtName{a} is infinite); the NaN could later trigger an exception. Providing the Imaginary type and overloadings of the arithmetic operators for mixtures of Imaginary and Complex operands gives the programmer the same control over avoiding premature coercion of @@ -299,6 +299,7 @@ Real'Base.} @end{itemize} @end{Reason} @begin{Reason} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} The base subtype Real'Base is used for the component type of Complex, the parent type of Imaginary, and the parameter and result types of some of the subprograms to maximize the chances of being able to pass meaningful values @@ -308,9 +309,10 @@ Real'Base.} subprograms in Numerics.Generic_Complex_Types share with those in Numerics.Generic_Elementary_Functions, and indeed even with the predefined arithmetic operations (see @RefSecNum{Operators and Expression Evaluation}), - the property of being free of range checks on input - and output, i.e., of being able to exploit the base range of the relevant - floating point type fully. As a result, the user loses the ability to + the property of being free of range checks on input and output, + @Chg{Version=[5],New=[that is],Old=[i.e.]}, of being able to exploit the + base range of the relevant floating point type fully. As a result, the user + loses the ability to impose application-oriented bounds on the range of values that the components of a complex variable can acquire; however, it can be argued that few, if any, applications have a naturally square domain (as opposed to a @@ -1439,6 +1441,7 @@ to T'Model_Emin. type, which figure in the accuracy and range (overflow avoidance) requirements. + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} In hardware that is free of arithmetic anomalies, T'Model_Mantissa, T'Model_Emin, T'Safe_First, and T'Safe_Last will yield the same values as T'Machine_Mantissa, T'Machine_Emin, T'Base'First, and T'Base'Last, @@ -1448,7 +1451,8 @@ to T'Model_Emin. model-oriented attributes to have these optimal values, since the hardware, by definition, and therefore the implementation, cannot conform to the stringencies of the resulting model; in this case, the values yielded by the - model-oriented parameters have to be made more conservative (i.e., have to + model-oriented parameters have to be made more conservative + (@Chg{Version=[5],New=[that is],Old=[i.e.]}, have to be penalized), with the result that the model numbers are more widely separated than the machine numbers, and the safe range is a subrange of the base range. The implementation will then be able to conform to the @@ -1529,10 +1533,11 @@ T'Safe_First and T'Safe_Last; otherwise, type is False.} @end(itemize) +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} For any predefined relation on operands of a floating point type T, the -implementation may deliver any value (i.e., either True or False) obtained by -applying the (exact) mathematical comparison to values arbitrarily chosen from -the respective operand intervals. +implementation may deliver any value (@Chg{Version=[5],New=[that is],Old=[i.e.]}, +either True or False) obtained by applying the (exact) mathematical comparison +to values arbitrarily chosen from the respective operand intervals. The result of a membership test is defined in terms of comparisons of the operand value with the lower and upper bounds of the given range or type @@ -1559,9 +1564,11 @@ restricted to the safe range, are an infinite set. @begin{Inconsistent83} @Defn{inconsistencies with Ada 83} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} Giving the model numbers the hardware radix, instead of always a radix of two, allows (in conjunction with other changes) some borderline declared -types to be represented with less precision than in Ada 83 (i.e., with single +types to be represented with less precision than in Ada 83 +(@Chg{Version=[5],New=[that is],Old=[i.e.]}, with single precision, whereas Ada 83 would have used double precision). Because the lower precision satisfies the requirements of the model (and did so in Ada 83 as well), this change is viewed as a desirable correction of an anomaly, rather @@ -1832,19 +1839,23 @@ fully specified. accuracy of certain fixed point multiplications and divisions.} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} When one operand of a fixed-fixed multiplication or division is of type @i(universal_real), that operand is not implicitly converted in the usual sense, since the context does not determine a unique target type, but the accuracy of -the result of the multiplication or division (i.e., whether the result has to +the result of the multiplication or division +(@Chg{Version=[5],New=[that is],Old=[i.e.]}, whether the result has to belong to the perfect result set or merely the close result set) depends on the value of the operand of type @i(universal_real) and on the types of the other operand and of the result. @begin{Discussion} -We need not consider here the multiplication or -division of two such operands, since in that case either the operation is -evaluated exactly (i.e., it is an operation of a static expression all of whose -operators are of a root numeric type) or it is considered to be an operation of -a floating point type. + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} + We need not consider here the multiplication or + division of two such operands, since in that case either the operation is + evaluated exactly (@Chg{Version=[5],New=[that is],Old=[i.e.]}, it is an + operation of a static expression all of whose + operators are of a root numeric type) or it is considered to be an operation of + a floating point type. @end{Discussion} @Leading@;For a fixed point multiplication or division whose (exact) @@ -1912,14 +1923,16 @@ are defined as follows: integers containing the perfect result set as a subset. @end(itemize) +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} The result of a fixed point multiplication or division shall belong either to the perfect result set or to the close result set, as described below, if overflow does not occur. In the following cases, if the result type is a fixed point type, let @VirtName{s} be its @i(small); -otherwise, i.e. when the result type is an integer type, -let @VirtName{s} be 1.0. +otherwise, @Chg{Version=[5],New=[that is],Old=[i.e.]} when the result type +is an integer type, let @VirtName{s} be 1.0. @begin(itemize) + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} For a multiplication or division neither of whose operands is of type @i(universal_real), let @VirtName{l} and @VirtName{r} be the @i(smalls) of the left and right @@ -1929,7 +1942,8 @@ let @VirtName{s} be 1.0. this case), the result shall belong to the perfect result set; otherwise, it belongs to the close result set. For a division, if @VirtName{l}@ /@ (@VirtName{r}@ @Times@ @VirtName{s}) is an - integer or the reciprocal of an integer (i.e., the @i(smalls) are + integer or the reciprocal of an integer + (@Chg{Version=[5],New=[that is],Old=[i.e.]}, the @i(smalls) are compatible), the result shall belong to the perfect result set; otherwise, it belongs to the close result set. @begin{Ramification} @@ -2108,12 +2122,13 @@ angle threshold.} @end{ImplNote} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00434-01]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} The prescribed results specified in @RefSecNum{Elementary Functions} for certain functions at particular parameter values take precedence over the maximum relative error bounds; effectively, they narrow to a single value the result interval allowed by the maximum relative error bounds. Additional rules with a -similar effect are given by @Chg{Version=[2],New=[],Old=[the ]}table -@Chg{Version=[2],New=[G-1],Old=[below]} for the inverse trigonometric +similar effect are given by @Chg{Version=[2],New=[],Old=[the ]}@Chg{Version=[5],New=[Table],Old=[table]} +@Chg{Version=[2],New=[@Chg{Version=[5],New=[G.1],Old=[G-1]}],Old=[below]} for the inverse trigonometric functions, at particular parameter values for which the mathematical result is possibly not a model number of @i{EF}.Float_Type (or is, indeed, even transcendental). In each table entry, the values of the parameters are such @@ -2133,7 +2148,7 @@ with the indicated sign. @Table[Columns=<5>,Alignment=,FirstColWidth=[2],LastColWidth=[1], NoBreak=[T],Border=[T],SmallSize=[F], -Caption=<@b{@Chg{Version=[2],New=[Table G-1: ],Old=[]}Tightly Approximated Elementary Function Results}>, +Caption=<@b{@Chg{Version=[2],New=[Table @Chg{Version=[5],New=[G.1],Old=[G-1]}: ],Old=[]}Tightly Approximated Elementary Function Results}>, Headers=<@b{Function}@\@b{Value of X}@\@b{Value of Y}@\@b{Exact Result @*when Cycle @*Specified}@\@b{Exact Result @*when Cycle @*Omitted}>, Body=,Alignment=,FirstColWidth=[2],LastColWidth=[1], NoBreak=[T],Border=[T],SmallSize=[F], -Caption=<@b{@Chg{Version=[2],New=[Table G-2: ],Old=[]}Error Bounds for Particular Complex Functions}>, +Caption=<@b{@Chg{Version=[2],New=[Table @Chg{Version=[5],New=[G.2],Old=[G-2]}: ],Old=[]}Error Bounds for Particular Complex Functions}>, Headers=<@b{Function or Operator}@\@b{Nature of @*Result}@\@b{Nature of @*Bound}@\@b{Error Bound}>, Body=} @begin{Notes} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0440-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[3],Text=[The results returned by these functions @Chg{Version=[5],New=[can],Old=[may]} depend -on which particular version of the 10646 standard is supported by the +on which particular version of @Chg{Version=[5],New=[ISO/IEC],Old=[the]} +10646@Chg{Version=[5],New=[],Old=[ standard]} is supported by the implementation (see @RefSecNum{Character Set}).]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0286-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @ChgAdded{Version=[3],Text=[The case insensitive equality comparison routines -provided in @RefSec{String Comparison} are also available for wide strings +provided in +@Chg{Version=[5],New=[@RefSecNum{String Comparison}],Old=[@RefSec{String Comparison}]} +are also available for wide strings (see @RefSecNum{Wide_String Handling}).]} @end{Notes} diff --git a/source/pre_con1.mss b/source/pre_con1.mss index 95e0620a..1f0ad008 100644 --- a/source/pre_con1.mss +++ b/source/pre_con1.mss @@ -1,6 +1,6 @@ @Part(precontainers-1, Root="ada.mss") @comment{ $Source: e:\\cvsroot/ARM/Source/pre_con1.mss,v $ } -@comment{ $Revision: 1.19 $ $Date: 2022/06/21 06:08:03 $ $Author: randy $ } +@comment{ $Revision: 1.20 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @LabeledAddedSubclause{Version=[2],Name=[Maps]} @@ -76,7 +76,7 @@ different for hashed maps and ordered maps.]} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00302-03]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0111-1],ARef=[AI12-0112-1]} @ChgAdded{Version=[2],Text=[@Redundant[Some -operations @Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a map]}@Defn2{Term=[tamper with elements],Sec=[of a map]}],Old=[of +operations@Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a map]}@Defn2{Term=[tamper with elements],Sec=[of a map]}],Old=[ of these generic packages have access-to-subprogram parameters. To ensure such operations are well-defined, they guard against certain actions by the designated @@ -3985,7 +3985,7 @@ hashed sets and ordered sets.]} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00302-03]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0111-1],ARef=[AI12-0112-1]} @ChgAdded{Version=[2],Text=[@Redundant[Some -operations @Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a set]}@Defn2{Term=[tamper with elements],Sec=[of a set]}],Old=[of +operations@Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a set]}@Defn2{Term=[tamper with elements],Sec=[of a set]}],Old=[ of these generic packages have access-to-subprogram parameters. To ensure such operations are well-defined, they guard against certain actions by the designated diff --git a/source/pre_con2.mss b/source/pre_con2.mss index a56617aa..a3cb89b5 100644 --- a/source/pre_con2.mss +++ b/source/pre_con2.mss @@ -1,6 +1,6 @@ @Part(precontainers-2, Root="ada.mss") @comment{ $Source: e:\\cvsroot/ARM/Source/pre_con2.mss,v $ } -@comment{ $Revision: 1.51 $ $Date: 2022/09/17 06:51:39 $ $Author: randy $ } +@comment{ $Revision: 1.52 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @LabeledAddedSubclause{Version=[3],Name=[The Generic Package Containers.Multiway_Trees]} @@ -1241,7 +1241,7 @@ structure as was written by Tree'Write.]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0136-1]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0111-1],ARef=[AI12-0112-1]} @ChgAdded{Version=[3],Text=[@Redundant[Some -operations @Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a tree]}@Defn2{Term=[tamper with elements],Sec=[of a tree]}],Old=[of +operations@Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a tree]}@Defn2{Term=[tamper with elements],Sec=[of a tree]}],Old=[ of this generic package have access-to-subprogram parameters. To ensure such operations are well-defined, they guard against certain actions by the designated subprogram. In particular, some operations]} check for @@ -4968,14 +4968,14 @@ same value as Empty_Holder.]} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0069-1],ARef=[AI05-0262-1]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0112-1]} -@ChgAdded{Version=[3],Text=[@Redundant[Some operations -@Chg{Version=[5],New=[],Old=[of this generic package have access-to-subprogram +@ChgAdded{Version=[3],Text=[@Redundant[Some +operations@Chg{Version=[5],New=[],Old=[ of this generic package have access-to-subprogram parameters. To ensure such operations are well-defined, they guard against certain actions by the designated subprogram. In particular, some operations]} check for @ldquote@;tampering with the element@rdquote of a container because they depend @Defn2{Term=[tamper with elements],Sec=[of a holder]}on the element -of the container not being replaced.]@Chg{Version=[5],New=[When +of the container not being replaced.]@Chg{Version=[5],New=[ When tampering with the element is @i@Defn2{Term=[prohibited],Sec=[tampering with a holder]} @Defn2{Term=[tampering],Sec=[prohibited for a holder]}for a particular holder object @i, Program_Error is propagated by the finalization of diff --git a/source/pre_containers.mss b/source/pre_containers.mss index da4ab843..b8179c9e 100644 --- a/source/pre_containers.mss +++ b/source/pre_containers.mss @@ -1,10 +1,11 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/pre_containers.mss,v $ } -@comment{ $Revision: 1.121 $ $Date: 2022/06/21 06:08:03 $ $Author: randy $ } +@comment{ $Revision: 1.122 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @Part(precontainers, Root="ada.mss") -@Comment{$Date: 2022/06/21 06:08:03 $} +@Comment{$Date: 2023/01/05 05:49:09 $} -@RMNewPage +@rmnewpagever{Version=[2]}@Comment{Page break in Ada 2005 RM} +@rmnewpagever{Version=[3]}@Comment{Page break in Ada 2012 RM} @LabeledAddedClause{Version=[2],Name=[Containers]} @begin{Intro} @@ -19,7 +20,7 @@ objects all of the same type, which could be class-wide. Several predefined container types are provided by the children of package Ada.Containers (see @RefSecNum{The Package Containers}).]}>} @ChgTermDef{Version=[5],Kind=(AddedNormal),Group=[C],Term=[container], - Def=[a structured object that represents a collection of elements all of the + Def=[structured object that represents a collection of elements all of the same (potentially class-wide) type, such as a vector or a tree], Note1=[Several predefined container types are provided by the children of package Ada.Containers (see @RefSecNum{The Package Containers}).]} @@ -341,15 +342,18 @@ implementations that are unstable if given buggy hash functions, et al.]} @begin{StaticSem} @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0035-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @ChgAdded{Version=[4],Text=[Certain subprograms declared within instances of some of the generic packages presented in this clause are said to @i. These subprograms are those corresponding (in the sense -of the copying described in subclause @RefSecNum{Generic Instantiation}) to -subprograms that have formal parameters of a generic formal indefinite type and +of the copying described in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Generic Instantiation}) +to subprograms that have formal parameters of a generic formal indefinite type and that are identified as performing indefinite insertion in the subclause defining the generic package.@Defn{perform indefinite insertion}]} @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0035-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @ChgAdded{Version=[4],Type=[Leading],Text=[If a subprogram performs indefinite insertion, then certain run-time checks are performed as part of a call to the subprogram; if any of these checks fail, then the resulting exception is @@ -358,9 +362,9 @@ checks are performed for each parameter corresponding (in the sense of the copying described in @RefSecNum{Generic Instantiation}) to a parameter in the corresponding generic whose type is a generic formal indefinite type. The checks performed for a given parameter are those checks explicitly specified in -subclause @RefSecNum{Allocators} that would be performed as part of the -evaluation of an initialized allocator whose access type is declared immediately -within the instance, where:]} +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Allocators} +that would be performed as part of the evaluation of an initialized allocator +whose access type is declared immediately within the instance, where:]} @begin{Itemize} @ChgRef{Version=[4],Kind=[AddedNormal]} @@ -378,12 +382,14 @@ within the instance, where:]} @begin{Discussion} @ChgRef{Version=[4],Kind=[AddedNormal]} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} @ChgAdded{Version=[4],Text=[The phrase "explicitly specified" means those - checks for which subclause @RefSecNum{Allocators} includes the phrase " is raised if ...". It does not refer, for example, to any checks - performed as part of any subtype conversion. In particular, this wording - includes the checks described in subclause @RefSecNum{Allocators} to be - performed in the case of a class-wide designated type, and of a designated + checks for which @Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Allocators} + includes the phrase " is raised if ...". It does not refer, + for example, to any checks performed as part of any subtype conversion. In + particular, this wording includes the checks described in + @Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Allocators} + to be performed in the case of a class-wide designated type, and of a designated subtype that has access discriminant parts. These checks are needed to prevent containers from outliving their contained (Element_Type or Key_Type) values.]} @end{Discussion} @@ -1935,8 +1941,8 @@ then the operation propagates Constraint_Error.]}]}@ChgNote{Covered by precondit @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00302-03]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0111-1],ARef=[AI12-0112-1]} @ChgAdded{Version=[2],Text=[@Redundant[Some -operations @Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a vector]}@Defn2{Term=[tamper with elements],Sec=[of a vector]}],Old=[of this generic package have -access-to-subprogram parameters. To +operations@Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a vector]}@Defn2{Term=[tamper with elements],Sec=[of a vector]}],Old=[ of +this generic package have access-to-subprogram parameters. To ensure such operations are well-defined, they guard against certain actions by the designated subprogram. In particular, some operations]} check for @lquotes@;tampering with cursors@rquotes of a container because they depend on @@ -5681,7 +5687,7 @@ elements as was written by List'Write.]} @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00302-03]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0111-1],ARef=[AI12-0112-1]} @ChgAdded{Version=[2],Text=[@Redundant[Some -operations @Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a list]}@Defn2{Term=[tamper with elements],Sec=[of a list]}],Old=[of +operations@Chg{Version=[5],New=[@Defn2{Term=[tamper with cursors],Sec=[of a list]}@Defn2{Term=[tamper with elements],Sec=[of a list]}],Old=[ of this generic package have access-to-subprogram parameters. To ensure such operations are well-defined, they guard against certain actions by the designated subprogram. In particular, some operations]} check for diff --git a/source/pre_dirs.mss b/source/pre_dirs.mss index 44a67b82..f9435e61 100644 --- a/source/pre_dirs.mss +++ b/source/pre_dirs.mss @@ -1,10 +1,11 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/pre_dirs.mss,v $ } -@comment{ $Revision: 1.60 $ $Date: 2022/06/21 06:08:02 $ $Author: randy $ } +@comment{ $Revision: 1.61 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @Part(predefdirs, Root="ada.mss") -@Comment{$Date: 2022/06/21 06:08:02 $} +@Comment{$Date: 2023/01/05 05:49:09 $} @RMNewPageVer{Version=[2]}@Comment{For printed version of Ada 2005 RM} +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledAddedClause{Version=[2],Name=[The Package Directories]} @begin{Intro} @@ -1255,13 +1256,15 @@ Containing_Directory will always raise Use_Error.]} deletion of directories, then Create_Directory, Create_Path, Delete_Directory, and Delete_Tree will always propagate Use_Error.]} +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} @ChgRef{Version=[2],Kind=[AddedNormal]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1],ARef=[AI12-0447-1]} @ChgAdded{Version=[2],Text=[To move a file or directory to a different location, use Rename. Most target systems will allow renaming of files from one directory to another. If the target file or directory @Chg{Version=[5],New=[can],Old=[might]} already exist, -@Chg{Version=[5],New=[delete it],Old=[it should be deleted]} first.]} +it should be deleted first.]} +@end{NotISO} @begin{Discussion} @ChgRef{Version=[2],Kind=[AddedNormal]} @ChgAdded{Version=[2],Type=[Leading],Text=[While Rename is only guaranteed to diff --git a/source/pre_io.mss b/source/pre_io.mss index 9df208b5..7004c094 100644 --- a/source/pre_io.mss +++ b/source/pre_io.mss @@ -1,9 +1,9 @@ @Part(predefio, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:39 $} +@Comment{$Date: 2023/01/05 05:49:09 $} @Comment{$Source: e:\\cvsroot/ARM/Source/pre_io.mss,v $} -@Comment{$Revision: 1.85 $} +@Comment{$Revision: 1.86 $} @LabeledClause{Input-Output} @begin{Intro} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @@ -140,21 +140,23 @@ only writing, or only appending are to be performed. @end{DescribeCode} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} Several file management operations are common to Sequential_IO, Direct_IO, Text_IO, @Chg{Version=[2],New=[],Old=[and ]}Wide_Text_IO@Chg{Version=[2], New=[, and Wide_Wide_Text_IO],Old=[]}. -These operations are described in subclause -@RefSecNum{File Management} for +These operations are described in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{File Management} for sequential and direct files. -Any additional effects concerning text -input-output are described in subclause @RefSecNum{Text File Management}. +Any additional effects concerning text input-output are described in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Text File Management}. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The exceptions that can be propagated by the execution of an input-output subprogram are defined in the package IO_Exceptions; the situations in which they can be propagated are described following the description of -the subprogram (and in @Chg{Version=[3],New=[subclause],Old=[clause]} -@RefSecNum{Exceptions in Input-Output}). +the subprogram (and in +@Chg{Version=[5],New=[],Old=[@Chg{Version=[3],New=[subclause],Old=[clause]} ]}@RefSecNum{Exceptions in Input-Output}). The exceptions Storage_Error and Program_Error may be propagated. (Program_Error can only be propagated due to errors made by the caller of the subprogram.) Finally, exceptions can be propagated @@ -456,14 +458,15 @@ any nesting depth, so this note is obsolete.} @begin{StaticSem} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} The procedures and functions described in this subclause provide for the control of external files; their declarations are repeated in each of the packages for sequential, direct, text, and stream input-output. For text input-output, the procedures Create, Open, and Reset have -additional effects described in subclause -@RefSecNum{Text File Management}. +additional effects described in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Text File Management}. @begin{DescribeCode} @begin{Example}@Keepnext @key[procedure] Create(File : @key[in] @key[out] File_Type; @@ -760,7 +763,8 @@ The exception End_Error is propagated if no more elements can be read from the given file. The exception Data_Error can be propagated if the element read cannot be interpreted as a value of the subtype Element_Type -(see @RefSec{Exceptions in Input-Output}). +(see @ISODiff{NotISO=[@RefSecFull{Exceptions in Input-Output}], + ISOOnly=[@RefSecFullNum{Exceptions in Input-Output}]}). @begin{Discussion} Data_Error need not be propagated if the check is too complex. See @RefSec{Exceptions in Input-Output}. @@ -1159,17 +1163,19 @@ Storage_IO is new in Ada 95.]} @begin{StaticSem} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} This @Chg{Version=[3],New=[subclause],Old=[clause]} describes the package Text_IO, which provides facilities for input and output in human-readable form. Each file is read or written sequentially, as a sequence of characters grouped into lines, and as a sequence of lines grouped into pages. The specification of the -package is given below in subclause -@RefSecNum{The Package Text_IO}. +package is given below in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{The Package Text_IO}. @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -The facilities for file management given above, in subclauses -@RefSecNum{File Management} and +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +The facilities for file management given above, in +@Chg{Version=[5],New=[],Old=[subclauses ]}@RefSecNum{File Management} and @RefSecNum{Sequential Input-Output Operations}, are available for text input-output. In place of Read and Write, however, there are procedures Get and Put that input values of @@ -1179,7 +1185,7 @@ in a parameter Item. Several overloaded procedures of these names exist, for different types of Item. These Get procedures analyze the input sequences of characters based on lexical elements (see -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Lexical Elements}) and +@RefSecFullNum{Lexical Elements}) and return the corresponding values; the Put procedures output the given values as appropriate lexical elements. Procedures Get and Put are also available that input and output individual characters treated as @@ -1918,12 +1924,13 @@ generic packages Modular_IO and Decimal_IO are new in Ada 95. @LabeledSubClause{Text File Management} @begin{StaticSem} -@Leading@;The only allowed file modes for text files are the modes In_File, +@Leading@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +The only allowed file modes for text files are the modes In_File, Out_File, and Append_File. -The subprograms given in subclause @RefSecNum{File Management} for the control of -external files, and the function End_Of_File given in subclause -@RefSecNum{Sequential Input-Output Operations} for -sequential input-output, are also available for text files. There is +The subprograms given in @Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{File Management} +for the control of external files, and the function End_Of_File given in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum{Sequential Input-Output Operations} +for sequential input-output, are also available for text files. There is also a version of End_Of_File that refers to the current default input file. For text files, the procedures have the following additional effects: @@ -2580,8 +2587,9 @@ string is insufficient for the output of the item. @end{StaticSem} @begin{Examples} -@NewExample@;In the examples, here and in subclauses -@RefSecNum{Input-Output for Integer Types} +@NewExample@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +In the examples, here and in +@Chg{Version=[5],New=[],Old=[subclauses ]}@RefSecNum{Input-Output for Integer Types} and @RefSecNum{Input-Output for Real Types}, the string quotes and the lower case letter b are not transferred: they are shown only to reveal the layout and spaces. @@ -4057,8 +4065,10 @@ needs finalization@PDefn2{Term=,Sec=} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00283-01]} @ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0130-1]} -The subprograms @Chg{Version=[2],New=[given in subclause -@RefSecNum(File Management) for the control of external files (],Old=[]}Create, +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0449-1]} +The subprograms @Chg{Version=[2],New=[given in +@Chg{Version=[5],New=[],Old=[subclause ]}@RefSecNum(File Management) + for the control of external files (],Old=[]}Create, Open, Close, Delete, Reset, Mode, Name, Form,@Chg{Version=[2],New=[@Chg{Version=[4],New=[],Old=[ and]}],Old=[]} Is_Open@Chg{Version=[2],New=[@Chg{Version=[4],New=[, and Flush],Old=[]}) diff --git a/source/pre_locales.mss b/source/pre_locales.mss index 6f5dcd1b..fb6b4c5b 100644 --- a/source/pre_locales.mss +++ b/source/pre_locales.mss @@ -1,8 +1,8 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/pre_locales.mss,v $ } -@comment{ $Revision: 1.11 $ $Date: 2022/09/17 06:51:39 $ $Author: randy $ } +@comment{ $Revision: 1.12 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @Part(predefenviron, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:39 $} +@Comment{$Date: 2023/01/05 05:49:09 $} @LabeledAddedClause{Version=[3],Name=[The Package Locales]} @@ -102,12 +102,12 @@ string representation of an ISO 639-3:2007 alpha-3 code that identifies a langua @end{Discussion} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0127-2],ARef=[AI05-0248-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0446-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0446-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[3],Text=[Function Country returns the code of the country associated with the active locale. If the Country_Code associated with the active locale cannot be determined from the environment, then Country returns Country_Unknown.@Chg{Version=[5],New=[ Otherwise, the result is an upper-case -string representation of an ISO 3166-1:2006 alpha-2 code that identifies a +string representation of an ISO 3166-1:2020 alpha-2 code that identifies a country.],Old=[]}]} @begin{Discussion} diff --git a/source/pre_math.mss b/source/pre_math.mss index 648d21e3..dd814f30 100644 --- a/source/pre_math.mss +++ b/source/pre_math.mss @@ -1,8 +1,8 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/pre_math.mss,v $ } -@comment{ $Revision: 1.54 $ $Date: 2022/09/17 06:51:39 $ $Author: randy $ } +@comment{ $Revision: 1.55 $ $Date: 2023/01/05 05:49:09 $ $Author: randy $ } @Part(predefmath, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:39 $} +@Comment{$Date: 2023/01/05 05:49:09 $} @LabeledClause{The Numerics Packages} @@ -14,8 +14,8 @@ together with nongeneric equivalents; two others, the package Float_Random and the generic package Discrete_Random, are defined in @RefSecNum{Random Number Generation}. -Additional (optional) -children are defined in @RefSec{Numerics}. +Additional (optional) children are defined in +@ISODiff{NotISO=[@RefSecFull{Numerics}],ISOOnly=[@RefSecFullNum{Numerics}]}. @end{Intro} @begin{StaticSem} @@ -280,9 +280,11 @@ the result at poles is unspecified. infinite values. @end{Discussion} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} When one parameter of a function with multiple parameters represents a pole and -another is outside the function's domain, the latter takes precedence (i.e., -Numerics.Argument_Error is raised). +another is outside the function's domain, the latter takes precedence +@Chg{Version=[5],New=[and],Old=[(i.e.,]} Numerics.Argument_Error is +raised@Chg{Version=[5],New=[],Old=[)]}. @end{RunTime} @begin{ImplReq} @@ -344,8 +346,9 @@ shall be as follows: in Numerics.Generic_Elementary_Functions, when Float_Type'Signed_Zeros is True.} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} @redundant[A zero result that is not a prescribed result - (i.e., one that results from + (@Chg{Version=[5],New=[that is],Old=[i.e.]}, one that results from rounding or underflow) has the correct mathematical sign.] @begin{Reason} This is a consequence of the rules specified in IEC 559:1989 as they @@ -841,7 +844,8 @@ Different sequences of random numbers can be obtained from a given generator in different program executions by explicitly initializing the generator to a time-dependent state. -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1],ARef=[AI12-0447-1]} A given implementation of the Random function in Numerics.Float_Random @Chg{Version=[5],New=[is not guaranteed to],Old=[may or may not]} be capable of delivering the values 0.0 or 1.0. @Chg{Version=[5],New=[Applications will be @@ -849,9 +853,8 @@ more portable if they],Old=[Portable applications should]} assume that these values, or values sufficiently close to them to behave indistinguishably from them, can occur. If a sequence of random integers from some @Chg{Version=[5],New=[],Old=[fixed ]}range is -@Chg{Version=[5],New=[necessary],Old=[needed]}, @Chg{Version=[5],New=[it is -preferred that ],Old=[]}the -application @Chg{Version=[5],New=[uses one of],Old=[should use]} the Random +@Chg{Version=[5],New=[necessary],Old=[needed]}, the +application should use@Chg{Version=[5],New=[ one of],Old=[]} the Random @Chg{Version=[5],New=[functions],Old=[function]} in an appropriate instantiation of Numerics.Discrete_Random, rather than transforming the result of the Random function in @@ -872,7 +875,7 @@ result of the floating point Random function such as would give a uniform distribution. But this is only true if the period of the underlying generator is a multiple of @exam{M}. (This usually requires that @exam{M} be a power of two.) In other cases, the @key[mod] operation maps slightly -more random values to a some result values than others. It is easy to see +more random values to some result values than others. It is easy to see this: consider a 4-bit random integer (with a range of 0 .. 15). If one @key[mod]s this by 6 to get a value in 0 .. 5 (to which one would add 1 to get the value of a die roll), 3 values would be mapped to each value 0 .. 3, but @@ -901,6 +904,7 @@ in this expression, the addition of Float'Model_Small avoids the exception that would be raised were Log to be given the value zero, without affecting the result (in most implementations) when Random returns a nonzero value. +@end{NotISO} @end{Notes} @begin{Examples} @@ -979,17 +983,31 @@ with a separate generator of event probabilities in each task:} ... -- @ExamCom{Wait for the Worker tasks to terminate}@Softpage @key[end] Parallel_Simulation; @end{Example} + +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0452-1]}@ChgNote{The +intent is that the paragraph number not change} +@ChgAdded{Version=[5],Text=[Although each Worker task initializes its generator +to a different state, those +states will be the same in every execution of the program. The generator +states can be initialized uniquely in each program execution by instantiating +Ada.Numerics.Discrete_Random for the type Integer in the main procedure, +resetting the generator obtained from that instance to a time-dependent state, +and then using random integers obtained from that generator to initialize the +generators in each Worker task.]} + + @end{Examples} @begin{Notes} -@i{Notes on the last example:} +@ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0452-1]} +@ChgDeleted{Version=[5],Text=[@i{Notes on the last example:} Although each Worker task initializes its generator to a different state, those states will be the same in every execution of the program. The generator states can be initialized uniquely in each program execution by instantiating Ada.Numerics.Discrete_Random for the type Integer in the main procedure, resetting the generator obtained from that instance to a time-dependent state, and then using random integers obtained from that generator to initialize the -generators in each Worker task. +generators in each Worker task.]} @end{Notes} @begin{Incompatible95} diff --git a/source/pre_standard.mss b/source/pre_standard.mss index 0c8fc505..aad46475 100644 --- a/source/pre_standard.mss +++ b/source/pre_standard.mss @@ -1,8 +1,8 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/pre_standard.mss,v $ } -@comment{ $Revision: 1.48 $ $Date: 2022/06/21 06:08:04 $ $Author: randy $ } +@comment{ $Revision: 1.49 $ $Date: 2023/01/05 05:49:12 $ $Author: randy $ } @Part(predefstandard, Root="ada.mss") -@Comment{$Date: 2022/06/21 06:08:04 $} +@Comment{$Date: 2023/01/05 05:49:12 $} @RMNewPageVer{Version=[2]}@Comment{For printed version of Ada 2005 RM} @RMNewPageVer{Version=[3]}@Comment{For printed version of Ada 2012 RM} @@ -251,17 +251,17 @@ the visible part of package Standard.} @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00395-01]}@Comment{Odd missing paragraph number here} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0266-1]} -@ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI12-0263-1]} -@Chg{Version=[2],New=[],Old=[@noparanum@;]} --@ExamCom{ The declaration of type Wide_Character is based on the standard @Chg{Version=[2],New=[ISO/IEC],Old=[ISO]} 10646@Chg{Version=[2],New=[:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]}],Old=[]} BMP character@Chg{Version=[2],New=[],Old=[ set.]}} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} +@Chg{Version=[2],New=[],Old=[@noparanum@;]} --@ExamCom{ The declaration of type Wide_Character is based on the standard @Chg{Version=[2],New=[ISO/IEC],Old=[ISO]} 10646@Chg{Version=[2],New=[:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]}],Old=[]} BMP character@Chg{Version=[2],New=[],Old=[ set.]}} --@ExamCom{ @Chg{Version=[2],New=[set. ],Old=[]}The first 256 positions have the same contents as type Character. See @refsecnum[Character types].} @comment[blank line] @key[type] @AdaTypeDefn{Wide_Character} @key[is] (@VirtName[nul], @VirtName[soh] ... @VirtName[@Chg{Version=[2],New=[Hex_0000FFFE],Old=[FFFE]}], @VirtName[@Chg{Version=[2],New=[Hex_0000FFFF],Old=[FFFF]}]); @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00285-01],ARef=[AI95-00395-01]} @ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0266-1]} -@ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[2],Text=[ --@ExamCom[ The declaration of type Wide_Wide_Character is based on the full] - --@ExamCom[ ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2017],Old=[2011]}],Old=[2003]} character set. The first 65536 positions have the] + --@ExamCom[ ISO/IEC 10646:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2020],Old=[2011]}],Old=[2003]} character set. The first 65536 positions have the] --@ExamCom[ same contents as type Wide_Character. See @refsecnum[Character types].] @comment[blank line] @key[type] @AdaTypeDefn{Wide_Wide_Character} @key[is] (@VirtName[nul], @VirtName[soh] ... @VirtName[Hex_7FFFFFFE], @VirtName[Hex_7FFFFFFF]); @@ -399,8 +399,9 @@ enumeration type Boolean can be written showing the two enumeration literals False and True, the short-circuit control forms cannot be expressed in the language. -As explained in @RefSec{Declarative Region} -and @RefSec{The Compilation Process}, +As explained in +@ISODiff{NotISO=[@RefSecFull{Declarative Region}],ISOOnly=[@RefSecFullNum{Declarative Region}]} +and @ISODiff{NotISO=[@RefSecFull{The Compilation Process}],ISOOnly=[@RefSecFullNum{The Compilation Process}]}, the declarative region of the package Standard encloses every library unit and consequently the main subprogram; the declaration of every library unit is assumed to occur @@ -408,7 +409,9 @@ within this declarative region. @nt{Library_item}s are assumed to be ordered in such a way that there are no forward semantic dependences. -However, as explained in @RefSec{Visibility}, the only library units that are +However, as explained in +@ISODiff{NotISO=[@RefSecFull{Visibility}],ISOOnly=[@RefSecFullNum{Visibility}]}, +the only library units that are visible within a given compilation unit are the library units named by all @nt{with_clause}s that apply to the given unit, diff --git a/source/pre_strings.mss b/source/pre_strings.mss index 13cffa7d..0b2489f9 100644 --- a/source/pre_strings.mss +++ b/source/pre_strings.mss @@ -1,7 +1,7 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/pre_strings.mss,v $ } -@comment{ $Revision: 1.96 $ $Date: 2022/09/17 06:51:40 $ $Author: randy $ } +@comment{ $Revision: 1.97 $ $Date: 2023/01/05 05:49:12 $ $Author: randy $ } @Part(predefstrings, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:40 $} +@Comment{$Date: 2023/01/05 05:49:12 $} @RMNewPageVer{Version=[3]}@Comment{For printed version of Ada 2012 RM} @LabeledClause{String Handling} @@ -81,6 +81,7 @@ common to the string handling packages. @RMNewPageVer{Version=[1]}@Comment{Insert page break so printed Ada 95 w/ Corr RM looks better.} +@notisormnewpagever{Version=[5]}@Comment{Page break in Ada 2022 RM} @LabeledSubClause{The Package Strings.Maps} @begin{Intro} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0445-1]} @@ -2487,9 +2488,11 @@ character mapping in Characters.Handling @begin{SingleNote} @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0114-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0450-1]} @ChgAdded{Version=[3],Text=[There are certain characters which are defined to be -lower case letters by ISO 10646 and are therefore allowed in identifiers, but -are not considered lower case letters by Ada.Strings.Maps.Constants.]} +lower case letters by ISO@Chg{Version=[5],New=[/IEC],Old=[]} 10646 and are +therefore allowed in identifiers, but are not considered lower case letters +by Ada.Strings.Maps.Constants.]} @begin{Reason} @ChgRef{Version=[3],Kind=[AddedNormal]} @@ -3370,12 +3373,12 @@ Strings.Equal_Case_Insensitive has the following declaration:]} @begin{DescribeCode} @ChgRef{Version=[3],Kind=[AddedNormal]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[3],Type=[Trailing],Text=[Returns True if the strings consist of the same sequence of characters after applying locale-independent simple case folding, as defined by documents referenced in @Chg{Version=[5],New=[],Old=[the note in ]}Clause @Chg{Version=[5],New=[2],Old=[1]} -of ISO/IEC 10646:@Chg{Version=[5],New=[2017],Old=[2011]}. +of ISO/IEC 10646:@Chg{Version=[5],New=[2020],Old=[2011]}. Otherwise, returns False. This function uses the same method as is used to determine whether two identifiers are the same.]} @@ -3390,10 +3393,10 @@ used to determine whether two identifiers are the same.]} function will never change for strings made up solely of defined code points; there is no such guarantee for case conversion to lower case.]} - @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0263-1]} + @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0263-1]} @ChgAdded{Version=[5],Text=[The @ldquote@;documents referenced@rdquote means Unicode, Chapter 4 (specifically, section 4.2 @em - Case). See the Implementation Notes in subclause @RefSecNum{Identifiers} for + Case). See the Implementation Notes in @RefSecNum{Identifiers} for a source for machine-readable definitions of these properties.]} @end{Discussion} @end{DescribeCode} diff --git a/source/real_attribs.mss b/source/real_attribs.mss index e35b397c..d7d60cae 100644 --- a/source/real_attribs.mss +++ b/source/real_attribs.mss @@ -1,9 +1,9 @@ @Part(realattribs, Root="ada.mss") -@Comment{$Date: 2022/05/14 04:06:51 $} +@Comment{$Date: 2023/01/05 05:49:10 $} @comment{$Source: e:\\cvsroot/ARM/Source/real_attribs.mss,v $} -@comment{$Revision: 1.29 $} +@comment{$Revision: 1.30 $} @LabeledSubClause{Attributes of Floating Point Types} @@ -268,12 +268,14 @@ S of a floating point type @VirtName{T}. canonical-form representation of @VirtName{X}. @end{Discussion} @begin{Ramification} - If @VirtName{Adjustment} is sufficiently small (i.e., sufficiently negative), the - result is + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} + If @VirtName{Adjustment} is sufficiently small (@Chg{Version=[5],New=[that is],Old=[i.e.]}, + sufficiently negative), the result is either zero, @VirtName{T}'Model_Small, or (if @VirtName{T}'Denorm is True) a denormalized number. @end{Ramification} + @AttributeLeading{Prefix=, AttrName=, Text=[S'Floor denotes a function with the following specification: @@ -282,9 +284,10 @@ S of a floating point type @VirtName{T}. @key(return) @VirtName{T} @end{DescExample} - @NoPrefix@;The function yields the value @Floor{@VirtName{X}}, - i.e., the largest (most positive) integral value less than or equal to - @VirtName{X}. + @NoPrefix@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} + The function yields the value @Floor{@VirtName{X}}, + @Chg{Version=[5],New=[that is],Old=[i.e.]}, the largest (most positive) + integral value less than or equal to @VirtName{X}. When @VirtName{X} is zero, the result has the sign of @VirtName{X}; a zero result otherwise has a positive sign.]} @@ -297,12 +300,13 @@ S of a floating point type @VirtName{T}. @key(return) @VirtName{T} @end{DescExample} - @NoPrefix@;The function yields the value @Ceiling{@VirtName{X}}, - i.e., the smallest (most negative) integral value greater than or equal to - @VirtName{X}. + @NoPrefix@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} + The function yields the value @Ceiling{@VirtName{X}}, + @Chg{Version=[5],New=[that is],Old=[i.e.]}, the smallest (most negative) + integral value greater than or equal to @VirtName{X}. When @VirtName{X} is zero, the - result has the sign of @VirtName{X}; a zero result otherwise has a negative sign - when S'Signed_Zeros is True.]} + result has the sign of @VirtName{X}; a zero result otherwise has + a negative sign when S'Signed_Zeros is True.]} @AttributeLeading{Prefix=, AttrName=, Text=[S'Rounding denotes a function with the following @@ -576,15 +580,16 @@ a floating point type @VirtName{T}. @VirtName{T}@R('Machine_Radix)@+{@VirtName{T}@R('Model_Emin) @en 1}. The value of this attribute is of the type @i{universal_real}.]} @begin{Discussion} + @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} In most implementations, this attribute yields the smallest positive normalized number of the type @VirtName{T}, - i.e. the number corresponding to the positive underflow - threshold. In some implementations employing a radix-complement + @Chg{Version=[5],New=[that is,],Old=[i.e.]} the number corresponding to the + positive underflow threshold. In some implementations employing a radix-complement representation for the type @VirtName{T}, the positive underflow threshold is closer to zero than is the negative underflow threshold, with the consequence that the smallest positive normalized number does not coincide with - the positive underflow threshold (i.e., it exceeds the latter). Further - discussion can be found in + the positive underflow threshold @Chg{Version=[5],New=[that is],Old=[i.e.]}, it + exceeds the latter). Further discussion can be found in @RefSecNum{Model-Oriented Attributes of Floating Point Types}. @end{Discussion} diff --git a/source/refs.mss b/source/refs.mss index 76d64b49..d6493e84 100644 --- a/source/refs.mss +++ b/source/refs.mss @@ -1,10 +1,10 @@ @Part(01, Root="ada.mss") -@Comment{$Date: 2022/09/02 07:54:32 $} +@Comment{$Date: 2023/01/05 05:49:10 $} @Comment{$Source: e:\\cvsroot/ARM/Source/refs.mss,v $} -@Comment{$Revision: 1.1 $} +@Comment{$Revision: 1.2 $} @Comment{Header and introductory text is found in ISO_Refs.mss and RM_Refs.mss.} @@ -21,7 +21,7 @@ deleted if the paragraphs are ever renumbered.} @Defn{639-3:2007, ISO standard} @Defn{Language code standard} ISO 639-3:2007, @i{Codes for the representation of names of languages @em Part -3: Alpha-3 code for comprehensive coverage of languages}.],Old=[]} +3: Alpha-3 code for comprehensive coverage of languages}@Chg{Version=[5],New=[],Old=[.]}],Old=[]} @ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0441-1]} @ChgDeleted{Version=[5],Text=[@Defn{ISO/IEC 646:1991} @@ -53,11 +53,13 @@ ISO@Chg{Version=[2],New=[/IEC],Old=[]} 1989:@Chg{Version=[2],New=[2002],Old=[198 @i{@Chg{Version=[2],New=[Information technology @em ],Old=[]}Programming languages @em COBOL}.]} @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0127-2],ARef=[AI05-0299-1]} -@Chg{Version=[3],New=[@Defn{ISO/IEC 3166-1:2006} -@Defn{3166-1:2006, ISO/IEC standard} -@Defn{Country code standard} -ISO/IEC 3166-1:2006, @i{Codes for the representation of names of countries and -their subdivisions @em Part 1: Country Codes}.],Old=[]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0450-1]} +@Chg{Version=[3],New=[@Chg{Version=[5],New=[@Defn{ISO 3166-1:2020} +@Defn{3166-1:2020, ISO standard}],Old=[@Defn{ISO 3166-1:2006} +@Defn{3166-1:2006, ISO standard}]}@Defn{Country code standard} +ISO@Chg{Version=[5],New=[],Old=[/IEC]} 3166-1:@Chg{Version=[5],New=[2020],Old=[2006]}, +@i{Codes for the representation of names of countries and +their subdivisions @em Part 1: Country Codes}@Chg{Version=[5],New=[],Old=[.]}],Old=[]} @ChgRef{Version=[5],Kind=[DeletedNoDelMsg],ARef=[AI12-0441-1]} @ChgDeleted{Version=[5],Text=[@Defn{ISO/IEC 6429:1992} @@ -112,16 +114,16 @@ Corrigendum 1:2001 and Technical Corrigendum 2:2004]}],Old=[]}.]} @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0001],ARef=[AI95-00124-01]} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00285-01]} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0266-1]} -@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0260-1]} -@Chg{Version=[2],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2017} -@Defn{10646:2017, ISO/IEC standard}],Old=[@Chg{Version=[3],New=[@Defn{ISO/IEC 10646:2011} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0260-1],ARef=[AI12-0450-1]} +@Chg{Version=[2],New=[@Chg{Version=[5],New=[@Defn{ISO/IEC 10646:2020} +@Defn{10646:2020, ISO/IEC standard}],Old=[@Chg{Version=[3],New=[@Defn{ISO/IEC 10646:2011} @Defn{10646:2011, ISO/IEC standard}],Old=[@Defn{ISO/IEC 10646:2003} @Defn{10646:2003, ISO/IEC standard}]}]} @Defn2{Term=[character set standard],Sec=(16 and 32-bit)} -ISO/IEC 10646:@Chg{Version=[5],New=[2017],Old=[@Chg{Version=[3],New=[2011],Old=[2003]}]}, +ISO/IEC 10646:@Chg{Version=[5],New=[2020],Old=[@Chg{Version=[3],New=[2011],Old=[2003]}]}, @i{Information technology @em Universal@Chg{Version=[5],New=[],Old=[ Multiple-Octet]} -Coded Character Set (UCS)}.], -Old=[@Defn{ISO/IEC 10646-1:1993} +@Chg{Version=[5],New=[coded character set],Old=[Coded Character Set]} +(UCS)}@Chg{Version=[5],New=[],Old=[.]}],Old=[@Defn{ISO/IEC 10646-1:1993} @Defn{10646-1:1993, ISO/IEC standard} @Defn2{Term=[character set standard],Sec=(16-bit)} ISO/IEC 10646-1:1993, @@ -197,8 +199,9 @@ POSIX, @end{DiffWord2005} @begin{DiffWord2012} - @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1]} + @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0441-1],ARef=[AI12-0450-1]} @ChgAdded{Version=[5],Text=[Moved all informative references to the - (new) @RefSec{Bibliography}.]} + (new) @RefSec{Bibliography}. Revised remaining references to the most + recent version.]} @end{DiffWord2012} diff --git a/source/rm.msm b/source/rm.msm index b3dde868..c1027883 100644 --- a/source/rm.msm +++ b/source/rm.msm @@ -26,8 +26,8 @@ @Comment{PDFs: }@RTFHeaderPrefix{Version=[3],Text=[ISO/IEC 8652:2012(E)]} @Comment{Springer: @RTFHeaderPrefix{Version=[3],Text=[Ada Reference Manual - 2012 Edition]}} @Comment{PDFs: }@RTFHeaderPrefix{Version=[4],Text=[ISO/IEC 8652:2012(E) with COR.1:2016]} -@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 34]}} -@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 34]} +@Comment{ISO form: @RTFHeaderPrefix{Version=[5],Text=[ISO/IEC 8652:2022(E) Draft 35]}} +@Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[5],Text=[Ada 2022 Draft 35]} @Comment{Usual (No ISO)}@RTFHeaderPrefix{Version=[6],Text=[Ada 2022 with Corr 1 Draft 1]} @RTFFooter{UseDate=[T],UseClauseName=[T],UseISOFormat=[F]}@Comment{RM style footers} @RTFPageSize{Ada95} @@ -48,7 +48,7 @@ UseButtons=[T],OnTop=[T],OnBottom=[T]} @Comment{We let the program link to the index} @HTMLTabs{EmulateFixedOnly} -@HTMLHeader{
Ada Reference Manual (Ada 2022 Draft 34)Legal Information
} +@HTMLHeader{
Ada Reference Manual (Ada 2022 Draft 35)Legal Information
} @HTMLFooter{
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
} @HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#000080],VLink=[#330033],ALink=[#0000FF]} diff --git a/source/rm_term.mss b/source/rm_term.mss index c793a002..a888cee7 100644 --- a/source/rm_term.mss +++ b/source/rm_term.mss @@ -1,8 +1,8 @@ @Part(RM_Term, Root="ada.mss") -@Comment{$Date: 2022/07/06 03:35:26 $} +@Comment{$Date: 2023/01/05 05:49:12 $} @Comment{$Source: e:\\cvsroot/ARM/Source/rm_term.mss,v $} -@Comment{$Revision: 1.3 $} +@Comment{$Revision: 1.4 $} @Comment{The RM version of "Terms and Definitions". Note that the ISO version only shares generated content, so we don't try to share any part of this @@ -36,20 +36,20 @@ they have to be somewhere.} @begin{Discussion} The index contains an entry for every defined term. -@ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00415-01]} +@ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00415-01]} @ChgAdded{Version=[2],Text=[The contents of the @i can be accessed on @URLLink{URL=[http://www.mathworld.com],Text=[http://www.mathworld.com]}. The ISBN number of the book is ISBN 1584883472.]} -@ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0443-1]} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0443-1]} @ChgAdded{Version=[5],Text=[The definitions found in this subclause are short, descriptive definitions. These are most useful for comprehension when an exact meaning is not needed. More formal, detailed definitions are found in the body of the @IntlStdTitle; these are needed to determine the exact application of rules to constructs and entities.]} -@ChgRef{Version=[5],Kind=[Added],ARef=[AI12-0443-1]} +@ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0443-1]} @ChgAdded{Version=[5],Text=[To see the difference, consider @ldquote@;aliased view@rdquote. The descriptive definition is @ldquote@;a view of an object that can be designated by an access value@rdquote. @@ -74,6 +74,7 @@ like this in the body of the AARM near its detailed formal definition.]} @ChgRef{Version=[1],Kind=[Revised]} @ChgRef{Version=[2],Kind=[Revised]} @ChgRef{Version=[3],Kind=[Revised]} +@ChgRef{Version=[5],Kind=[Revised]} Here are some AARM-only definitions: @Defn{Ada Rapporteur Group (ARG)} @Defn(ARG) @@ -83,7 +84,9 @@ The Ada Rapporteur Group (ARG) interprets the @Chg{Version=[1],New=,Old=<>}>,Old=<>} +Ada Issues created for Ada 2005 are denoted as "AI05"@Chg{Version=[5],New=[, +Ada Issues created for Ada 2012 are denoted as "AI12", and Ada Issues created +for Ada 2022 are denoted as "AI22"],Old=[]}.>,Old=<>}>,Old=<>} @Defn{Ada Commentary Integration Document (ACID)} @Defn(ACID) The Ada Commentary Integration Document (ACID) diff --git a/source/rt.mss b/source/rt.mss index 08b822c4..cfd16782 100644 --- a/source/rt.mss +++ b/source/rt.mss @@ -1,7 +1,7 @@ @Comment{ $Source: e:\\cvsroot/ARM/Source/rt.mss,v $ } -@comment{ $Revision: 1.136 $ $Date: 2022/06/21 06:08:04 $ $Author: randy $ } +@comment{ $Revision: 1.137 $ $Date: 2023/01/05 05:49:10 $ $Author: randy $ } @Part(realtime, Root="ada.mss") -@Comment{$Date: 2022/06/21 06:08:04 $} +@Comment{$Date: 2023/01/05 05:49:10 $} @LabeledNormativeAnnex{Real-Time Systems} @@ -12,7 +12,8 @@ This Annex specifies additional characteristics of Ada implementations intended for real-time systems software. To conform to this Annex, an implementation shall also conform to -@Chg{Version=[5],New=[@RefSec{Systems Programming}],Old=[the Systems Programming Annex]}. +@Chg{Version=[5],New=[@ISODiff{NotISO=[@RefSecFull{Systems Programming}], +ISOOnly=[@RefSecFullNum{Systems Programming}]}],Old=[the Systems Programming Annex]}. @end{Intro} @begin{Metrics} @@ -72,7 +73,8 @@ This kind of metric can only be partially tested, by finding the value of V for one or more test programs. The metrics do not cover the whole language; they are limited -to features that are specified in @RefSec{Systems Programming} +to features that are specified in +@ISODiff{NotISO=[@RefSecFull{Systems Programming}],ISOOnly=[@RefSecFullNum{Systems Programming}]} and in this Annex. The metrics are intended to provide guidance to potential users as to whether a particular implementation of such a feature is going to be adequate for a @@ -782,8 +784,7 @@ point.]}]} @begin{Notes} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} -@Chg{Version=[3],New=[Clause],Old=[Section]} @RefSecNum{Tasks and Synchronization} +@RefSecFullNum{Tasks and Synchronization} specifies under which circumstances a task becomes ready. The ready state is affected by the rules for task activation and termination, delay statements, and entry calls. @@ -814,8 +815,10 @@ multiprocessors where dispatching is implemented using a single ready queue, as well as those with separate dispatching domains.] The priority of a task is determined by rules specified in this subclause, and -under @RefSec{Task Priorities}, @RefSec{Priority Ceiling Locking}, and -@RefSec{Dynamic Priorities}. +under +@ISODiff{NotISO=[@RefSecFull{Task Priorities}, @RefSecFull{Priority Ceiling Locking}, and +@RefSecFull{Dynamic Priorities}],ISOOnly=[@RefSecFullNum{Task Priorities}, +@RefSecFullNum{Priority Ceiling Locking}, and @RefSecFullNum{Dynamic Priorities}]}. @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00321-01]} @ChgNote{This note is moved up from the next subclause.} @@ -1554,9 +1557,8 @@ Non_Premptive_FIFO_Within_Priorities policy],Old=[]} to execute within a protected object without raising its active priority provided the associated protected unit does not contain @Chg{Version=[3],New=[any subprograms with aspects Interrupt_Handler or Attach_Handler specified, nor -does the unit have aspect],Old=[pragma]} Interrupt_Priority -@Chg{Version=[3],New=[ specified. When the locking policy -(see @RefSecNum{Priority Ceiling Locking}) is +does the unit have aspect],Old=[pragma]} Interrupt_Priority@Chg{Version=[3],New=[ specified. +When the locking policy (see @RefSecNum{Priority Ceiling Locking}) is Ceiling_Locking, an implementation taking advantage of this permission shall ensure that a call to Yield_to_Higher that occurs within a protected action uses the ceiling priority of the protected object (rather than the active priority of @@ -2562,12 +2564,12 @@ Program_Error is raised in the calling task;@Defn2{Term=[Program_Error],Sec=(rai @ChgRef{Version=[2],Kind=[Added]} @ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0404-1]}@ChgNote{Also changed paragraph numbers} -@ChgAdded{Version=[2],Text=[when the entry is open@Chg{Version=[5],New=[,],Old=[]} the entry body is executed +@ChgAdded{Version=[2],Text=[when the entry is open@Chg{Version=[5],New=[,],Old=[]} the entry body is executed at the ceiling priority of the protected object;]} @ChgRef{Version=[2],Kind=[Added]} @ChgRef{Version=[5],Kind=[RevisedAdded],ARef=[AI12-0404-1]}@ChgNote{Also changed paragraph numbers} -@ChgAdded{Version=[2],Text=[when the entry is open@Chg{Version=[5],New=[,],Old=[]} the entry body is executed +@ChgAdded{Version=[2],Text=[when the entry is open@Chg{Version=[5],New=[,],Old=[]} the entry body is executed at the ceiling priority of the protected object and then Program_Error is raised in the calling task; or]} @@ -2670,9 +2672,13 @@ protected actions of that object execute. In the extreme, if the ceiling is Interrupt_Priority'Last, all blockable interrupts are blocked during that time. -The ceiling priority of a protected object has to be in the -Interrupt_Priority range if one of its procedures is to be used as -an interrupt handler (see @RefSecNum{Interrupt Support}). +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[As described in @RefSecNum{Protected Procedure Handlers}, +a check is made whenever an interrupt is handled by one of the protected +procedures of a protected object that its],Old=[The]} ceiling priority +@Chg{Version=[5],New=[is],Old=[of a protected object has to be]} in the +Interrupt_Priority range@Chg{Version=[5],New=[],Old=[ if one of its +procedures is to be used as an interrupt handler (see @RefSecNum{Interrupt Support})]}. @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} When specifying the ceiling of a protected object, @@ -3490,14 +3496,17 @@ beginning of @RefSec{Predefined Language Environment}. @end{TheProof} @ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0092-1]} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} The rule for when Tasking_Error is raised for Set_Priority or Get_Priority is different from the rule for when Tasking_Error is raised on an entry call (see @RefSecNum{Entry Calls}). In particular, -@Chg{Version=[3],New=[],Old=[setting or ]}querying the priority of -a completed or an abnormal -task is allowed, so long as the task is not yet -terminated@Chg{Version=[3],New=[, and setting the priority of a task -is allowed for any task state (including for terminated tasks)],Old=[]}. +@Chg{Version=[3],New=[],Old=[setting or ]}@Chg{Version=[5],New=[],Old=[querying ]}the +priority of a completed or an abnormal +task @Chg{Version=[5],New=[can be queried],Old=[is allowed,]} so long as +the task is not yet terminated@Chg{Version=[3],New=[, and +@Chg{Version=[5],New=[],Old=[setting ]}the priority of a task +@Chg{Version=[5],New=[can be set in],Old=[is allowed for]} any task state +(including for terminated tasks)],Old=[]}. @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0442-1]} Changing the priorities of a set of tasks can be performed by a @@ -4594,8 +4603,11 @@ The required range and accuracy of Time are such that used as the representation. @end{ImplNote} -Time_Span_First shall be no greater than @en@;3600 seconds, and -Time_Span_Last shall be no less than 3600 seconds. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0451-1]} +@Chg{Version=[5],New=[The value of ],Old=[]}Time_Span_First@Chg{Version=[5],New=[ in seconds],Old=[]} +shall be no greater than @en@;3600@Chg{Version=[5],New=[],Old=[ seconds]}, and +@Chg{Version=[5],New=[the value of ],Old=[]}Time_Span_Last@Chg{Version=[5],New=[ in seconds],Old=[]} +shall be no less than 3600@Chg{Version=[5],New=[],Old=[ seconds]}. @begin{Reason} This is equivalent to @PorM one hour and there is still room for a two-microsecond resolution. @@ -5721,12 +5733,14 @@ partition will execute on a single CPU unless the programmer explicitly uses aspect CPU to specify the CPU assignments for tasks. The use of multiple CPUs requires care, as many guarantees of single CPU scheduling no longer apply.]} +@begin{NotISO}@ChgNote{Usage Advice not allowed in notes} @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0055-1]} @ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0291-1]} @ChgAdded{Version=[4],Text=[It is not recommended to specify the CPU of a task to be Not_A_Specific_CPU when the Ravenscar @Chg{Version=[5],New=[or Jorvik ],Old=[]}profile is in effect. How a partition executes strongly depends on the assignment of tasks to CPUs.]} +@end{NotISO} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0291-1]} @ChgAdded{Version=[5],Text=[Any unit that meets the requirements of the diff --git a/source/safety.mss b/source/safety.mss index 69c95235..e79a779e 100644 --- a/source/safety.mss +++ b/source/safety.mss @@ -1,8 +1,8 @@ @Comment{ $Source: e:\\cvsroot/ARM/Source/safety.mss,v $ } -@Comment{ $Revision: 1.77 $ $Date: 2022/09/17 06:51:39 $ $Author: randy $ } +@Comment{ $Revision: 1.78 $ $Date: 2023/01/05 05:49:10 $ $Author: randy $ } @Part(safety, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:39 $} +@Comment{$Date: 2023/01/05 05:49:10 $} @LabeledRevisedNormativeAnnex{Version=[2], New=[High Integrity Systems], Old=[Safety and Security]} @@ -619,10 +619,14 @@ be provided.]}]} @begin{Notes} @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00209-01]} -The implementation is not allowed to perform @lquotes@;dead store elimination@rquotes@; on -the last assignment to a variable prior to a point where the -variable is inspectable. -Thus an inspection point has the effect of an +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} +@Chg{Version=[5],New=[Because reaching an inspection point is considered +an external interaction relative to the values of the inspectable variables, +the],Old=[The]} implementation @Chg{Version=[5],New=[cannot],Old=[is not +allowed to]} perform @lquotes@;dead store elimination@rquotes@; on +the last assignment to @Chg{Version=[5],New=[such ],Old=[]}a variable prior to +@Chg{Version=[5],New=[an inspection point],Old=[a point where the +variable is inspectable]}. Thus an inspection point has the effect of an implicit @Chg{Version=[2],New=[read of],Old=[reference to]} each of its inspectable objects. @@ -640,8 +644,9 @@ to check that a program did not have a `storage leak'. @end{Discussion} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} The identification of the mapping from source program objects to machine -resources is allowed to be in the form of an +resources @Chg{Version=[5],New=[can],Old=[is allowed to]} be in the form of an annotated object listing, in human-readable or tool-processable form. @begin{Discussion} diff --git a/source/sp.mss b/source/sp.mss index 09d432ff..acdb2570 100644 --- a/source/sp.mss +++ b/source/sp.mss @@ -1,7 +1,7 @@ @comment{ $Source: e:\\cvsroot/ARM/Source/sp.mss,v $ } -@comment{ $Revision: 1.99 $ $Date: 2022/09/17 06:51:40 $ $Author: randy $ } +@comment{ $Revision: 1.100 $ $Date: 2023/01/05 05:49:10 $ $Author: randy $ } @Part(sysprog, Root="ada.mss") -@Comment{$Date: 2022/09/17 06:51:40 $} +@Comment{$Date: 2023/01/05 05:49:10 $} @LabeledNormativeAnnex{Systems Programming} @@ -155,14 +155,22 @@ constructs. Examples of such instructions include: @begin{itemize} -Atomic read-modify-write operations @em e.g., test and set, compare and swap, +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} +Atomic read-modify-write operations @em +@Chg{Version=[5],New=[for example],Old=[e.g.]}, test and set, compare and swap, decrement and test, enqueue/dequeue. -Standard numeric functions @em e.g., @i{sin}, @i{log}. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} +Standard numeric functions @em @Chg{Version=[5],New=[for example],Old=[e.g.]}, +@i{sin}, @i{log}. -String manipulation operations @em e.g., translate and test. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} +String manipulation operations @em +@Chg{Version=[5],New=[for example],Old=[e.g.]}, translate and test. -Vector operations @em e.g., compare vector against thresholds. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} +Vector operations @em @Chg{Version=[5],New=[for example],Old=[e.g.]}, compare +vector against thresholds. Direct operations on I/O ports. @@ -184,12 +192,11 @@ items and related features. @end{Intro} @begin{ImplReq} -@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0299-1]} @PDefn2{Term=[recommended level of support], Sec=(required in Systems Programming Annex)} The implementation shall support at least the functionality -defined by the recommended levels of support in @Chg{Version=[3],New=[Clause], -Old=[Section]} @RefSecNum{Representation Issues}. +defined by the recommended levels of support in +@RefSecFullNum{Representation Issues}. @end{ImplReq} @LabeledClause{Interrupt Support} @@ -306,8 +313,10 @@ Which run-time stack an interrupt handler uses when it executes as a result of an interrupt delivery; if this is configurable, what is the mechanism to do so; how to specify how much space to reserve on that stack. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} Any implementation- or hardware-specific activity that happens -before a user-defined interrupt handler gets control (e.g., +before a user-defined interrupt handler gets control +(@Chg{Version=[5],New=[for example],Old=[e.g.]}, reading device registers, acknowledging devices). Any timing or other limitations imposed on the execution of interrupt handlers. @@ -320,9 +329,10 @@ can attach the corresponding handlers. Whether the interrupted task is allowed to resume execution before the interrupt handler returns. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} The treatment of interrupt occurrences that are generated while -the interrupt is blocked; i.e., whether one or more occurrences -are held for later delivery, or all are lost. +the interrupt is blocked; @Chg{Version=[5],New=[that is],Old=[i.e.]}, whether +one or more occurrences are held for later delivery, or all are lost. Whether predefined or implementation-defined exceptions are raised as a result of the occurrence of any interrupt, and the mapping between the @@ -356,9 +366,11 @@ This issue is tightly related to the issue of scheduling on a multi-processor. In a sense, if a particular interrupt source is not available to all processors, the system is not truly homogeneous. +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0453-1]} One way to approach this problem is to assign sub-ranges within -Interrupt_Id to each interrupt subsystem, such that @lquotes@;similar@rquotes@; interrupt -sources (e.g. a timer) in different subsystems get a distinct id. +Interrupt_Id to each interrupt subsystem, such that @lquotes@;similar@rquotes@; +interrupt sources (@Chg{Version=[5],New=[for example],Old=[e.g.]} a timer) in +different subsystems get a distinct id. @end{Discussion} Implementations are allowed to impose timing or other limitations on the @@ -398,11 +410,13 @@ actions should be provided.]}]} @begin{Notes} +@ChgRef{Version=[5],Kind=[Revised],ARef=[AI12-0447-1]} The default treatment for an interrupt can be to keep the interrupt pending or to deliver it to an implementation-defined handler. Examples of actions that an implementation-defined -handler is allowed to perform include aborting the partition, ignoring -(i.e., discarding occurrences of) the interrupt, or queuing one +handler @Chg{Version=[5],New=[can],Old=[is allowed to]} perform include +aborting the partition, ignoring (@Chg{Version=[5],New=[that is],Old=[i.e.]}, +discarding occurrences of) the interrupt, or queuing one or more occurrences of the interrupt for possible later delivery when a user-defined handler is attached to that interrupt. @@ -2247,10 +2261,10 @@ other language-defined library units that manipulate atomic objects; its declaration is empty.]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0234-1]} -@ChgAdded{Version=[5],Text=[A call to a subprogram is said to be @i -@Defn{lock-free} if the subprogram is guaranteed to return from the call while -keeping the processor of the logical thread of control busy for the duration of -the call.]} +@ChgAdded{Version=[5],Text=[A call to a subprogram is said to be +@i@Defn{lock-free} if the subprogram is guaranteed to return from the +call while keeping the processor of the logical thread of control busy for the +duration of the call.]} @ChgRef{Version=[5],Kind=[AddedNormal],ARef=[AI12-0234-1]} @ChgAdded{Version=[5],Text=[In each child package, a function Is_Lock_Free(...) diff --git a/source/title.mss b/source/title.mss index 04186a75..8e091e04 100644 --- a/source/title.mss +++ b/source/title.mss @@ -1,13 +1,13 @@ @Part(title, Root="ada.mss") @comment{$Source: e:\\cvsroot/ARM/Source/title.mss,v $} -@comment{$Revision: 1.96 $ $Date: 2022/09/17 06:51:40 $} +@comment{$Revision: 1.97 $ $Date: 2023/01/05 05:49:11 $} @begin{ISOOnly} @Noparanum@Right{@Swiss{@Grow{@Chg{Version=[3],New=[@b{ISO/IEC JTC 1/SC 22 N}],Old=[@B{INTERNATIONAL STANDARD} ISO/IEC 8652:@Chg{Version=[2],New=[2007(E) Ed. 3],Old=[1995(E)@Chg{Version=[1], New=[ with COR.1:2001], Old=[]}]}]}}}} @Comment{CD draft text} -@Noparanum@Right{@Swiss{@Chg{Version=[5],New=[Date: 2022-06-20],Old=[]}}} +@Noparanum@Right{@Swiss{@Chg{Version=[5],New=[Date: 2022-12-29],Old=[]}}} @Noparanum@Right{@Swiss{@Grow{@Chg{Version=[5],New=[@B{ISO/IEC 8652:2022(E)}],Old=[]}}}} @@ -15,7 +15,7 @@ @end{ISOOnly} @begin{NotISO} @Comment{@Noparanum@Right{@Swiss{@Grow{@B{Ada Reference Manual}, ISO/IEC 8652:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2022(E)],Old=[2012(E)@Chg{Version=[4], New=[ with COR.1:2016],Old=[]}]}],Old=[@Chg{Version=[2],New=[2007(E) Ed. 3],Old=[1995(E)@Chg{Version=[1], New=[ with COR.1:2001], Old=[]}]}]}}}}} -@Noparanum@Right{@Swiss{@Grow{@B{Ada Reference Manual}, @Chg{Version=[3],New=[@Chg{Version=[5],New=[2022],Old=[2012]}],Old=[@Chg{Version=[2],New=[2007],Old=[1995]}]} Edition@Chg{Version=[5],New=<, Draft 34>,Old=[]}}}} +@Noparanum@Right{@Swiss{@Grow{@B{Ada Reference Manual}, @Chg{Version=[3],New=[@Chg{Version=[5],New=[2022],Old=[2012]}],Old=[@Chg{Version=[2],New=[2007],Old=[1995]}]} Edition@Chg{Version=[5],New=<, Draft 35>,Old=[]}}}} @end{NotISO} @Noparanum@ @* @@ -67,10 +67,10 @@ End comment} @Noparanum@ @;@comment{A dummy paragraph containing just a blank} -@Noparanum@Center{@Swiss{@Grow{@Chg{Version=[5],New=[2022],Old=[@Chg{Version=[3],New=[2012],Old=[1995]}]} Edition@Chg{Version=[5],New=<, Draft 34>,Old=[]}}}} +@Noparanum@Center{@Swiss{@Grow{@Chg{Version=[5],New=[2022],Old=[@Chg{Version=[3],New=[2012],Old=[1995]}]} Edition@Chg{Version=[5],New=<, Draft 35>,Old=[]}}}} @Noparanum@Center{@Swiss{@Chg{Version=[3],New=[@Chg{Version=[4],New=[@Chg{Version=[5],New=[],Old=[@Grow{with 2016 corrections}]}],Old=[]}],Old=[@Chg{Version=[1], New=[@Grow{with 2001 corrections}], Old=[]}]}}} @Noparanum@Center{@Swiss{@Chg{Version=[3],New=[],Old=[@Chg{Version=[2], New=[@Grow{and 2007 Amendment}], Old=[]}]}}} -@Comment{@Noparanum@Center{@Swiss{@Grow{ISO/IEC 8652:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2022],Old=[2012]}],Old=[1995]}(E)@Chg{Version=[5],New=<, Draft 34>,Old=[]}}}}} +@Comment{@Noparanum@Center{@Swiss{@Grow{ISO/IEC 8652:@Chg{Version=[3],New=[@Chg{Version=[5],New=[2022],Old=[2012]}],Old=[1995]}(E)@Chg{Version=[5],New=<, Draft 35>,Old=[]}}}}} @Comment{@Noparanum@Center{@Swiss{@Chg{Version=[3],New=[@Chg{Version=[4],New=[@Chg{Version=[5],New=[],Old=[@Grow{with Technical Corrigendum 1}]}],Old=[]}],Old=[@Chg{Version=[1], New=[@Grow{with Technical Corrigendum 1}], Old=[]}]}}}} @Comment{@Noparanum@Center{@Swiss{@Chg{Version=[3],New=[],Old=[@Chg{Version=[2], New=[@Grow{and Amendment 1}], Old=[]}]}}}} @end{NotISO}