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

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

--- ai12s/ai12-0425-1.txt	2021/03/14 10:29:22	1.2
+++ ai12s/ai12-0425-1.txt	2021/03/18 06:29:54	1.3
@@ -1,4 +1,9 @@
-!standard 13.6(2)                               21-03-14  AI12-0425-1/02
+!standard 1.1.1(14)                                 21-03-17  AI12-0425-1/03
+!standard 3.3.1(33/2) 
+!standard 4.5.2(37/5)
+!standard 4.10(37/5)
+!standard 6.1.2(0/5)
+!standard 13.6(2)
 !standard J.15.8(1/3)
 !standard N(16)
 !standard N(22)
@@ -40,6 +45,34 @@
 subprogram, or generic unit". This seems better without the "always". Change
 this? (Yes.)
 
+(5) 4.5.2(35) says that the following examples are of expressions, but
+4.5.2(37/5) contains an object declaration -- which is surely not an
+expression. Change this? (Yes.)
+
+(6) 4.10(37/5) says:
+
+   If S is a composite subtype, the leading character of the image of a 
+   component value or index value is a space, and the immediately preceding
+   character is an open parenthesis or bracket, then the space may be omitted.
+   The same transformation is also permitted if the leading character of the 
+   component image is a space (in which case one of the two spaces may be
+   omitted). 
+
+It seems like the second sentence is wrong, and should be something more like
+
+  The same transformation is also permitted if the immediately preceding
+  character is a space (in which case one of the two spaces may be omitted). 
+
+But we could combine the two sentences to simplify this. Should this be 
+reworded? (Yes.)
+
+(7) There is a syntax section, not identified as such, mixed in the middle
+of the Global aspect definition. This is an unusual organization; could we
+organize this subclause more conventionally? (Yes.)
+
+(8) 1.1.1(14) should end with a semicolon (;) rather than a period (it is
+in the middle of a list. Fix this? (Yes.)
+
 !recommendation
 
 (1) Replace J.15.8(1/3) with: "The following pragmas are defined with the 
@@ -55,6 +88,19 @@
 
 (4) Follow the suggestion in the question.
 
+(5) Add "A_String : constant String := "A";" to the end of 3.3.1(33/2). Then
+use A_String in the example 4.5.2(37/5).
+
+(6) Combine the two sentences.
+
+(7) Rearrange the start of 6.1.2.
+
+(8) The suggested change should be made.
+
+Interestingly, this is wrong in every version of Ada, going all the way back 
+to version 3.0 of Ada 9x (1993) -- which is the first draft of Ada 9x that 
+had wording for subclause 1.1.1. It has escaped every reviewer since then.
+
 !wording
 
 [Editor's note: Changes (1) and (2) were applied to Draft 29 of the Ada 202x
@@ -90,10 +136,137 @@
   Library unit. A library unit is a separately compiled program unit, and is
   [always] a package, subprogram, or generic unit. 
 
+(5) Add at the end of 3.3.1(33/2):
+  A_String : constant String := "A";
+
+Replace 4.5.2(37/5) with:
+
+   A_String = "A"                      -- True (see 3.3.1)
+   "" < A_String and A_String < "Aa"   -- True
+   A_String < "Bb" and A_String < "A " -- True
+
+(6) Replace 4.10(37/5):
+   If S is a composite subtype, the leading character of the image of a 
+   component value or index value is a space, and the immediately preceding
+   character is an open parenthesis or bracket, then the space may be omitted.
+   The same transformation is also permitted if the leading character of the 
+   component image is a space (in which case one of the two spaces may be
+   omitted). 
+
+with:
+
+   If S is a composite subtype, the leading character of the image M of a 
+   component value or index value is a space, and the immediately preceding
+   character (if any) is an open parenthesis, open bracket, or space, then the
+   leading space of the image M may be omitted. 
+
+(7) Replace the start of 6.1.2 (down to the previous Static Semantics heading,
+which is deleted):
+
+  The Global and Global'Class aspects of a program unit are used to identify
+  the objects global to the unit that might be read or written during its
+  execution.
+
+      Syntax
+
+  global_aspect_definition ::= 
+      null
+    <<the entirety of paragraphs 3 though 9 here>>
+
+       Name Resolution Rules
+
+  A global_name shall resolve to statically denote an object or a package
+  (including a limited view of a package). 
+
+       Static Semantics
+
+  For a subprogram, an entry, an access-to-subprogram type, a task
+  unit, a protected unit, or a library package or generic library package,
+  the following language-defined aspect may be specified
+  with an aspect_specification (see 13.1.1):
+
+  Global
+      The Global aspect shall be specified with a global_aspect_definition.
+
+      The Global aspect identifies the set of variables (which, for the 
+      purposes of this clause, includes all constants except those which are
+      known to have no variable views (see 3.3)) that are global to a callable
+      entity or task body, and that are read or updated as part of the
+      execution of the callable entity or task body. If specified for 
+      a protected unit, it refers to all of the protected operations of the 
+      protected unit. Constants of any type may also be mentioned in a Global
+      aspect.
+
+      If not specified or otherwise defined below, the aspect defaults to 
+      the Global aspect for the enclosing library unit if the entity is
+      declared at library level, and to Unspecified otherwise. If not 
+      specified for a library unit, the aspect defaults to Global => null
+      for a library unit that is declared Pure, and to Global => Unspecified
+      otherwise.
+
+  For a dispatching subprogram, the following language-defined
+  aspect may be specified with an aspect_specification (see 13.1.1):
+
+  Global'Class
+      The Global'Class aspect shall be specified with a 
+      global_aspect_definition. This aspect identifies an upper bound on the
+      set of variables global to a dispatching operation that can be read
+      or updated as a result of a dispatching call on the operation. If not
+      specified, the aspect defaults to the Global aspect for the
+      dispatching subprogram.
+
+  Together, we refer to the Global and Global'Class aspects as global
+  aspects.
+
+  <<Continuing as before from paragraph 16.>>
+
+
 !discussion
 
 (See !recommendation.)
 
+!corrigendum 1.1.1(14)
+
+@drepl
+@xbullet<The effect of unspecified execution.>
+@dby
+@xbullet<The effect of unspecified execution;>
+
+!corrigendum 3.3.1(33/2)
+
+@drepl
+@xcode<Limit     : @b<constant> Integer := 10_000;
+Low_Limit : @b<constant> Integer := Limit/10;
+Tolerance : @b<constant> Real := Dispersion(1.15);
+Hello_Msg : @b<constant access> String := Hello'Access; --@ft<@i< see 3.10.2>>>
+@dby
+@xcode<Limit     : @b<constant> Integer := 10_000;
+Low_Limit : @b<constant> Integer := Limit/10;
+Tolerance : @b<constant> Real := Dispersion(1.15);
+A_String  : @b<constant> String := "A";
+Hello_Msg : @b<constant access> String := Hello'Access; --@ft<@i< see 3.10.2>>>
+
+!corrigendum 4.5.2(37)
+
+@drepl
+@xcode<"" < "A" @b<and> "A" < "Aa"     --@ft<@i<  True>>
+"Aa" < "B" @b<and> "A" < "A  "  --@ft<@i<  True>>>
+@dby
+@xcode<A_String = "A"                       --@ft<@i< True (see 3.3.1)>>
+"" < A_String @b<and> A_String < "Aa"    --@ft<@i< True>>
+A_String < "Bb" @b<and> A_String < "A  " --@ft<@i< True>>>
+
+!corrigendum 4.10(0)
+
+@dinsc
+
+** Force a conflict; the actual changes are in the conflict file. **
+
+!corrigendum 6.1.2(0)
+
+@dinsc
+
+** Force a conflict; the actual changes are in the conflict file. **
 !corrigendum 13.6(2)
 
 @drepl
@@ -139,10 +312,50 @@
 
 From an informal RM review from John Barnes (March 8, 2021)
 
+4.5.2(37/5)      its not an expression. perhaps make it a comment
+
+6.1.2(2/5)       strange layout, usually a central heading for syntax
+
 N(16)           elementary type   not really a definition but simply stating a property.
 	Better to say An elementary type is a type that does  not have components
 
 N(22) library unit  “is always”  is a bit strange. maybe delete always.
 
- 
+****************************************************************
+
+From some private mail from Steve Baird:
+
+In 4.10 (Image attributes), this looks wrong to me: 
+
+> If S is a composite subtype, the leading character of the image of a 
+> component value or index value is a space, and the immediately preceding
+> character is an open parenthesis or bracket, then the space may be omitted.
+> The same transformation is also permitted if the leading character of the 
+> component image is a space (in which case one of the two spaces may be
+> omitted). 
+
+It seems like the second sentence is wrong, and should be something more like
+
+  The same transformation is also permitted if the immediately preceding
+  character is a space (in which case one of the two spaces may be omitted). 
+	
+But if we are going to do that, then perhaps  replace the entire paragraph with
+
+  If S is a composite subtype, the leading character of the image of a
+  component value or index value is a space, and the immediately preceding
+  character (if any) is an open parenthesis, bracket, or space, then the 
+  leading space of the image may be omitted.
+
+[Editor's note: some wordsmithing followed, resulting in the proposed wording change.]
+
+****************************************************************
+
+From an informal RM review from John Barnes (March 17, 2021)
+
+1.1.1(14)	Ends with period should be semicolon. Wrong in 2012 also.
+
+****************************************************************
+
+
+
 

Questions? Ask the ACAA Technical Agent