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

Differences between 1.4 and version 1.5
Log of other versions for file ai12s/ai12-0317-1.txt

--- ai12s/ai12-0317-1.txt	2019/02/23 00:29:34	1.4
+++ ai12s/ai12-0317-1.txt	2019/02/26 01:44:31	1.5
@@ -1,4 +1,4 @@
-!standard 3.10.2(16.1/5)                                 19-02-24  AI12-0317-1/04
+!standard 3.10.2(16.1/5)                                 19-02-25  AI12-0317-1/05
 !standard 4.3.2(5.1/5)
 !standard 4.3.2(5.2/5)
 !standard 4.3.2(5.3/5)
@@ -18,8 +18,6 @@
 
 Introduce two new terms to avoid duplicate wording in a number of places.
 
-!problem
-
 AI12-0236 exacerbates the problem of having to enumerate all cases where
 a construct like parenthesized expression or conditional expression
 passes through some property or some requirement to its operand(s). 
@@ -43,8 +41,8 @@
 Modify RM 3.10.2(16.1/5):
 
   In the above rules, the {constituents of a name or expression (see
-  4.4) are considered to be used in a context if the enclosing name or
-  expression is used in a given context.} [operand of a view conversion,
+  4.4) are considered to be used in a given context if the enclosing name or
+  expression is used in that context.} [operand of a view conversion,
   parenthesized expression or qualified_expression is considered to be
   used in a context if the view conversion, parenthesized expression or
   qualified_expression itself is used in that context. Similarly, a
@@ -81,13 +79,18 @@
       body_expression;
 
     * otherwise, the expression (or name) itself.
+    
+  In certain contexts, we specify that a constituent shall (or shall
+  not) be /newly constructed/.  This means the constituent shall (or
+  shall not) be an aggregate or a function_call; in either case, a
+  raise_expression is permitted.
    
 Modify RM 4.5.9(6/5):
 
   A declare_item that is an object_renaming_declaration (see 8.5.1)
-  shall not rename an object of a limited type {if any constituent (see
-  4.4) of the object_name is a value conversion or is newly constructed
-  (see 7.5).} [that is a function_call, aggregate, a parenthesized
+  shall not rename an object of a limited type {if any constituent 
+  of the object_name is a value conversion or is newly constructed
+  (see 4.4).} [that is a function_call, aggregate, a parenthesized
   expression, qualified_expression, or type_conversion with an operand
   of one of these, a conditional_expression that has at least one
   dependent_expression that is one of these, or a declare_expression
@@ -110,14 +113,13 @@
 
 Modify RM 7.5(2.1/5):
 
-  In the following contexts, an expression of a limited type is not
-  permitted unless [it is] {each of its constituents (see 4.4) is either
-  a raise_expression or /newly constructed/, that is,} an aggregate[,]
-  or a function_call[, a raise_expression, a parenthesized expression or
-  qualified_expression whose operand is permitted by this rule, a
-  conditional_expression all of whose dependent_expressions are
-  permitted by this rule, or a declare_expression whose body_expression
-  is permitted by this rule]:
+  In the following contexts, an expression of a limited type is [not]
+  permitted {only if each of its constituents is /newly constructed/
+  (see 4.4):} [unless it is an aggregate, a function_call, a
+  raise_expression, a parenthesized expression or qualified_expression
+  whose operand is permitted by this rule, a conditional_expression all
+  of whose dependent_expressions are permitted by this rule, or a
+  declare_expression whose body_expression is permitted by this rule:]
   ...
 
 !discussion
@@ -680,5 +682,48 @@
 OK, enough said.  Hence, here is yet another version.
 
 [This is version /04 of the AI - Editor.]
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Saturday, February 23, 2019  10:22 AM
+
+After more thought, I decided putting the definition of "newly constructed" in
+section 7.5 was not great, especially as I found new places where it might be 
+used which had nothing to do with limited types.  Also, my handling of 
+raise-expressions was not ideal, in that they had to be handled as special 
+cases when we started talking about newly-constructed objects.  I felt a more 
+general permission would be useful.  So, here is one more version (yeah, I 
+know, Randy already uploaded all the AIs).
+
+So this is an update to what is now identified as AI12-0317-1...
+
+[This is version /05 of the AI - Editor.]
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Saturday, February 23, 2019  8:20 PM
+
+> After more thought, I decided putting the definition of 
+> "newly constructed" in section 7.5 was not great, especially 
+> as I found new places where it might be used which had 
+> nothing to do with limited types.
+
+The AI doesn't use it in any such places, or even tell us in the !discussion 
+where they might be.
+
+> Also, my handling of 
+> raise-expressions was not ideal, in that they had to be 
+> handled as special cases when we started talking about 
+> newly-constructed objects.  I felt a more general permission 
+> would be useful.  So, here is one more version (yeah, I know, 
+> Randy already uploaded all the AIs).
+
+Sigh. I suppose it doesn't pay to insist on discussing the previous version, 
+and if I don't post it half of the group won't find it, so I've posted an 
+update.
+ 
+> So this is an update to what is now identified as AI12-0317-1...
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent