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

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

--- ai12s/ai12-0072-1.txt	2013/07/12 03:50:48	1.4
+++ ai12s/ai12-0072-1.txt	2013/07/12 05:13:17	1.5
@@ -1,8 +1,10 @@
-!standard C.5(1)                                13-06-16    AI12-0072-1/03
+!standard C.5(1)                                13-07-11    AI12-0072-1/04
 !standard C.5(5)
 !standard C.5(7/2)
 !standard C.5(8)
 !class binding interpretation 13-06-07
+!status Amendment 202x 13-07-11
+!status ARG Approved 7-0-0  13-06-16
 !status work item 13-06-07
 !status received 13-05-03
 !priority Low
@@ -28,14 +30,13 @@
 
 Change the title of C.5 to:
 
-   Aspect and Pragma Discard_Names
+   Aspect Discard_Names
 
-[Would "Reduction of Runtime Name Text" be better??]
-
 Modify C.5(1):
 
-Redundant[A pragma Discard_Names may be used to request a reduction in storage used
-for the names of {entities with runtime name text}[certain entities].]
+Redundant[{Specifying the aspect}[A pragma] Discard_Names {can}[may] be used to
+request a reduction in storage used for the names of {entities with runtime name
+text}[certain entities].]
 
 Add after C.5(1):
 
@@ -53,13 +54,13 @@
 False.
 
 [Also, make sure this aspect gets added to the index of aspects in K.1:
-Discard_Names -- Reduces storage for names associated with an entity.]
+Discard_Names -- Requests a reduction in storage for names associated with an entity.]
 
 Modify C.5(5):
 
 The local_name (if present) shall denote {an entity with runtime name text}[a
 nonderived enumeration first subtype, a tagged first subtype, or an exception].
-The pragma [applies to]{specifies that the aspect Discard_Name for} the type or
+The pragma [applies to]{specifies that the aspect Discard_Names for} the type or
 exception {has the value True}. Without a local_name, the pragma [applies
 to]{specifies that} all [such] entities {with runtime name text} declared after
 the pragma, within the same declarative region{ have the value True for aspect
@@ -96,14 +97,17 @@
 associated with that entity.
 
 !discussion
-
-The original intent was that blanket rules in 13.1 and 13.1.1 would be sufficient
-to specify the rules for aspect pragmas. But eventually every such pragma except
-this one got explicit rules. It seems weird that this solitary pragma depends on
-the blanket rules (enough that it failed to get added to the index of aspects).
 
-In addition, it's not clear that the blanket rules define the type of the aspect and
-any requirements on the expression.
+The original intent was that blanket rules in 13.1 and 13.1.1 (especially
+13.1.1(32/3)) would be sufficient to specify the rules for aspects associated
+with representation pragmas. But eventually every such pragma except this one
+got explicit rules. It seems weird that this solitary pragma depends on the
+blanket rules (enough that it failed to get added to the index of aspects).
+
+In addition, it's not clear that the blanket rules explain what it means to
+specify the aspect. In particular, do the rules make the specifying the aspect
+to True the same as if the associated pragma applies to the entity? We sidestepped
+that for all other pragmas by defining the pragmas in terms of the aspects.
 
 Finally, if we add the aspect to the aspect index, it would be bad if there was no
 text describing the aspect at the target of that index entry.
@@ -111,12 +115,103 @@
 So, for all of these reasons, we define the aspect here, and then define the pragma
 in terms of the aspect in the usual way.
 
-In doing this, an old bug was discovered, in that a congifuration pragma is
+In doing this, an old bug was discovered, in that a configuration pragma is
 defined to apply to a compilation unit, not the entities defined in that unit
 (which is what we want here). That was corrected in these wording changes.
 
 It is not the intent of these changes to change the effect of pragma
 Discard_Names (as understood, as opposed to formally defined) in any way.
+
+!corrigendum C.5(0)
+
+@drepl
+Pragma Discard_Names
+@dby
+Aspect Discard_Names
+
+!corrigendum C.5(1)
+
+@drepl
+A @fa<pragma> Discard_Names may be used to request a reduction in storage used
+for the names of certain entities.
+@dby
+Specifying the aspect Discard_Names can be used to request a reduction in
+storage used for the names of entities with runtime name text.
+
+@s8<@i<Static Semantics>>
+
+An entity with @i<runtime name text> is a nonderived enumeration first subtype,
+a tagged first subtype, or an exception.
+
+For an entity with runtime name text, the following language-defined
+representation aspect may be specified:
+
+@xhang<@xTerm<Discard_Names>
+The type of aspect Discard_Names is Boolean. If directly specified, the
+@fa<aspect_definition> shall be a static expression. If not specified (including
+by inheritance), the aspect is False.>
+
+!corrigendum C.5(5)
+
+@drepl
+The @fa<local_name> (if present) shall denote a nonderived enumeration [first]
+subtype, a tagged [first] subtype, or an exception. The pragma applies to the type
+or exception. Without a @fa<local_name>, the pragma applies to all such entities
+declared after the pragma, within the same declarative region. Alternatively,
+the pragma can be used as a configuration pragma. If the pragma applies to a type,
+then it applies also to all descendants of the type. 
+@dby
+The @fa<local_name> (if present) shall denote an entity with runtime name text.
+The pragma specifies that the aspect Discard_Name for the type or
+exception has the value True. Without a @fa<local_name>, the pragma 
+specifies that all entities with runtime name text declared after
+the pragma, within the same declarative region have the value True for aspect
+Discard_Names. Alternatively, the pragma can be used as a configuration pragma.
+If the configuration pragma Discard_Names applies to a compilation unit, all
+entities with runtime name text declared in the compilation unit have the value
+True for the aspect Discard_Names.
+
+!corrigendum C.5(7/2)
+
+@drepl
+If the pragma applies to an enumeration type, then the semantics of the
+Wide_Wide_Image and Wide_Wide_Value attributes are implementation defined for
+that type; the semantics of Image, Wide_Image, Value, and Wide_Value are still
+defined in terms of Wide_Wide_Image and Wide_Wide_Value. In addition, the
+semantics of Text_IO.Enumeration_IO are implementation defined. If the pragma
+applies to a tagged type, then the semantics of the Tags.Wide_Wide_Expanded_Name
+function are implementation defined for that type; the semantics of
+Tags.Expanded_Name and Tags.Wide_Expanded_Name are still defined in terms of
+Tags.Wide_Wide_Expanded_Name. If the pragma applies to an exception, then the
+semantics of the Exceptions.Wide_Wide_Exception_Name function are
+implementation defined for that exception; the semantics of
+Exceptions.Exception_Name and Exceptions.Wide_Exception_Name are still defined
+in terms of Exceptions.Wide_Wide_Exception_Name.
+@dby
+If the aspect Discard_Names is True for an enumeration
+type, then the semantics of the Wide_Wide_Image and Wide_Wide_Value attributes
+are implementation defined for that type; the semantics of Image, Wide_Image,
+Value, and Wide_Value are still defined in terms of Wide_Wide_Image and
+Wide_Wide_Value. In addition, the semantics of Text_IO.Enumeration_IO are
+implementation defined. If the aspect Discard_Names is True
+for a tagged type, then the semantics of the Tags.Wide_Wide_Expanded_Name
+function are implementation defined for that type; the semantics of
+Tags.Expanded_Name and Tags.Wide_Expanded_Name are still defined in terms of
+Tags.Wide_Wide_Expanded_Name. If the aspect Discard_Names is True for an
+exception, then the semantics of the Exceptions.Wide_Wide_Exception_Name
+function are implementation defined for that exception; the semantics of
+Exceptions.Exception_Name and Exceptions.Wide_Exception_Name are still
+defined in terms of Exceptions.Wide_Wide_Exception_Name.
+
+!corrigendum C.5(8)
+
+@drepl
+If the pragma applies to an entity, then the implementation should reduce the
+amount of storage used for storing names associated with that entity. 
+@dby
+If the aspect Discard_Names is True for an entity, then the implementation
+should reduce the amount of storage used for storing names associated with
+that entity.
 
 !ACATS Test
 

Questions? Ask the ACAA Technical Agent