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

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

--- ai12s/ai12-0207-1.txt	2016/12/19 23:43:09	1.2
+++ ai12s/ai12-0207-1.txt	2017/08/04 05:56:00	1.3
@@ -1,11 +1,15 @@
-!standard 6.3.1(13.1/3)                                    16-12-19  AI12-0207-1/02
+!standard 6.3.1(13.1/3)                                    17-08-03  AI12-0207-1/03
+!standard B.1(19)
+!standard B.1(21/3)
 !class binding interpretation 16-12-15
+!status Amendment 1-2012 17-08-03
+!status ARG Approved 9-0-1  17-06-16
 !status work item 16-12-15
 !status received 16-09-19
 !priority Low
 !difficulty Medium
 !qualifier Omission
-!subject Convention of anonymous access-to-subprogram types
+!subject Convention of anonymous access types
 !summary
 
 The convention of an anonymous access-to-subprogram type in the
@@ -57,11 +61,11 @@
 Modify 6.3.1(13.1/3):
 
     The calling convention for an anonymous access-to-subprogram
-    parameter or anonymous access-to-subprogram result is *protected* if
-    the reserved word /protected/ appears in its definition; otherwise, it
-    is the convention of the {entity}[subprogram] that has the parameter
-    or result, unless that entity has convention *protected*, *entry*, or
-    Intrinsic, in which case the convention is Ada.
+    parameter or anonymous access-to-subprogram result is /protected/ if
+    the reserved word *protected* appears in its definition; otherwise, it
+    is the convention of the {entity}[subprogram] that {has}[contains] the
+    parameter {or result, unless that entity has convention /protected/,
+    /entry/, or Intrinsic, in which case the convention is Ada}.
 
 Add after B.1(19):
 
@@ -82,11 +86,11 @@
 above since we're not allowed to use paragraph numbers in the RM or AARM
 notes.]
 
-Add after B.1(22):
+Add after B.1(21/3):
 
 If convention L is specified for a type T, for each component of T that
 has an anonymous access type, the convention of the anonymous access type is
-L. If convention L is specified for an object which has an anonymous access
+L. If convention L is specified for an object that has an anonymous access
 type, the convention of the anonymous access type is L. 
 
 AARM Ramification: This applies to both anonymous access-to-object and 
@@ -101,7 +105,7 @@
 be possible for protected operations and entries.
 
 We change the wording from "subprogram" to "entity" since this rule applies
-to all entities with a profile, meaning thaat it applies to entries as
+to all entities with a profile, meaning that it applies to entries as
 well as subprograms.
 
 (2) This issue applies to any anonymous access type used as a component
@@ -113,7 +117,7 @@
 
 The wording to fix this is complicated, as the rules currently say that
 convention can only be applied to an array or record type if the conventions
-of the components are appropriate (L-compatible). But we want to conventions
+of the components are appropriate (L-compatible). But we want the conventions
 of some components to come from the convention of the array or record.
 
 We accomplish this in two steps. First we say by fiat that anonymous access
@@ -132,6 +136,38 @@
 access types in interfacing code (other than as access parameters), which 
 doesn't seem helpful. These rules will make such uses portable.
 
+!corrigendum 6.3.1(13.1/3)
+
+@drepl
+@xbullet<The calling convention for an anonymous access-to-subprogram parameter
+or anonymous access-to-subprogram result is @i<protected> if the reserved word
+@b<protected> appears in its definition; otherwise, it is the convention of the
+subprogram that contains the parameter.>
+@dby
+@xbullet<The calling convention for an anonymous access-to-subprogram parameter
+or anonymous access-to-subprogram result is @i<protected> if the reserved word
+@b<protected> appears in its definition; otherwise, it is the convention of the
+entity that has the parameter or result, unless that entity has convention
+@i<protected>, @i<entry>, or Intrinsic, in which case the convention is Ada.>
+
+!corrigendum B.1(19)
+
+@dinsa
+@xbullet<T is derived from an @i<L>-compatible type,>
+@dinst
+@xbullet<T is an anonymous access type, and T is eligible for convention @i<L>,>
+
+!corrigendum B.1(21/3)
+
+@dinsa
+If the Convention aspect is specified for a type, then the type shall either be
+compatible with or eligible for the specified convention. 
+@dinst
+If convention @i<L> is specified for a type T, for each component of T that
+has an anonymous access type, the convention of the anonymous access type is
+@i<L>. If convention @i<L> is specified for an object that has an anonymous
+access type, the convention of the anonymous access type is @i<L>. 
+
 !ASIS
 
 No ASIS effect.
@@ -325,5 +361,15 @@
 Sent: Monday, December 19, 2016  5:40 PM
 
 OK. Fixed this and a couple of other typos in the AI.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Friday, August 4, 2017  12:12 PM
+
+The draft of AI12-0207-1 approved in Vienna had the second insertion after
+paragraph B.1(22/3). I moved that after B.1(21/3), as paragraph 21 is about
+conventions, but paragraph 22 is about Import. It makes more sense to keep
+all of the rules about conventions together.
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent