CVS difference for ai12s/ai12-0201-1.txt
--- ai12s/ai12-0201-1.txt 2016/08/19 04:23:58 1.1
+++ ai12s/ai12-0201-1.txt 2016/10/07 01:20:17 1.2
@@ -151,3 +151,97 @@
****************************************************************
+From: Randy Brukardt
+Sent: Thursday, August 18, 2016 11:25 PM
+
+> Now that we have static membership tests for strings (e.g. S in "abc"
+> -- RM 4.9(11/4)) it seems odd to not permit static equality tests for
+> strings (e.g. S = "abc").
+
+Attached is the AI I wrote for this thread [this is version /01 of the AI -
+Editor]; I'm posting it just in case Tucker gets ambitious -- I'd hate for
+him to repeat my work.
+
+****************************************************************
+
+From: Jeff Cousins
+Sent: Tuesday, August 23, 2016 9:30 AM
+
+Looks an ok write-up to me, thanks Randy,
+
+****************************************************************
+
+From: Jeff Cousins
+Sent: Monday, September 5, 2016 8:15 AM
+
+I'm probably going to regret asking this, but...
+
+Whilst we're on the subject of static-ness, what was the background behind
+only scalars and strings being static, and no other composites?
+
+It has long confused users that code such as:
+
+package Pure_Test1 is
+
+ pragma Pure;
+
+ type Node_Array_Type is array (0..63) of Boolean;
+
+ type Node_Array_Record_Type is record
+ Node_Array : Node_Array_Type;
+ end record;
+
+ Null_Node_Array_Record : constant Node_Array_Record_Type := (Node_Array => (others => False));
+
+end Pure_Test1;
+
+is valid, but not:
+
+package Pure_Test2 is
+
+ pragma Pure;
+
+ type Node_Array_Type is array (0..63) of Boolean;
+
+ Null_Node_Array : constant Node_Array_Type := (others => False);
+
+ type Node_Array_Record_Type is record
+ Node_Array : Node_Array_Type;
+ end record;
+
+ Null_Node_Array_Record : constant Node_Array_Record_Type := (Node_Array => Null_Node_Array);
+
+end Pure_Test2;
+
+even though it is generally preferred to use named objects and types rather
+than anonymous ones.
+
+****************************************************************
+
+From: Bob Duff
+Sent: Monday, September 5, 2016 10:42 AM
+
+> Whilst we're on the subject of static-ness, what was the background
+> behind only scalars and strings being static, and no other composites?
+
+Ada 83 was scalars only. We added static strings in Ada 95 to support pragmas
+that need them (link names and so forth).
+
+And there's a 200 character limit, so it's not a fully general feature.
+
+I think concerns were ease of implementation, and ease of efficient
+implementation (particular memory use at compile time).
+
+In your example, I'd probably give up on pragma Pure, rather than give up on
+the named constant. I agree it's a bit annoying to have to give up one or the
+other.
+
+****************************************************************
+
+From: Jeff Cousins
+Sent: Monday, September 5, 2016 10:54 AM
+
+Thanks Bob.
+
+****************************************************************
+
Questions? Ask the ACAA Technical Agent