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

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

--- ai12s/ai12-0072-1.txt	2013/06/11 01:01:49	1.2
+++ ai12s/ai12-0072-1.txt	2013/07/12 03:34:34	1.3
@@ -1,4 +1,4 @@
-!standard C.5(1)                                13-06-07    AI12-0072-1/01
+!standard C.5(1)                                13-06-15    AI12-0072-1/02
 !standard C.5(5)
 !standard C.5(7/2)
 !standard C.5(8)
@@ -30,51 +30,72 @@
 
    Aspect and Pragma Discard_Names
 
+Modify C.5(1):
+
+Redundant[A pragma Discard_Names may be used to request a reduction in storage
+used for the names of {muggywomp}[certain] entities. {*Muggywomp* entities are
+those for which the name of the entity has a runtime effect.}]
+
+[Editor's note: I couldn't find a good term, so "muggywomp" is a placeholder,
+please help!]
+
 Add after C.5(1):
 
 Static Semantics
 
-For a nonderived enumeration Redundant[first] subtype, a tagged Redundant[first] subtype,
-or an exception, the following language-defined representation aspect may be specified:
+A muggywomp entity is a nonderived enumeration first subtype, a tagged first
+subtype, or an exception.
 
+For a muggywomp entity, the following language-defined representation aspect may
+be specified:
+
 Discard_Names
 The type of aspect Discard_Names is Boolean. If directly specified, the aspect_definition
 shall be a static expression. If not specified (including by inheritance), the aspect is
-False. 
+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.]
 
 Modify C.5(5):
 
-The local_name (if present) shall denote 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 exception {has the value True}. Without a local_name, the pragma
-[applies to]{specifies that} all such entities 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 pragma applies to a type, then it applies also
-to all descendants of the type.]
+The local_name (if present) shall denote a {muggywomp entity}[nonderived
+enumeration first subtype, a tagged first subtype, or an exception]. 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 {muggywomp}[such] entities 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 muggywomp
+entities declared in the compilation unit have the value True for the aspect
+Discard_Names.} [If the pragma applies to a type, then it applies also to all
+descendants of the type.]
 
 [Editor's note: We don't need the last sentence because normal aspect inheritance applies and
 has that effect.]
 
 Modify C.5(7/2):
 
-If the [pragma applies to]{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 [pragma applies to]{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 [pragma applies to]{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.
+If the [pragma applies to]{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 [pragma applies to]{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 [pragma applies to]{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.
 
 Modify C.5(8):
-If the [pragma applies to]{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. 
+If the [pragma applies to]{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.
 
 !discussion
 
@@ -90,10 +111,14 @@
 text describing the aspect at the target of that index entry.
 
 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 terms of the aspect in the usual way.
+
+In doing this, an old bug was discovered, in that a congifuration 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
-in any way.
+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.
 
 !ACATS Test
 
@@ -114,7 +139,7 @@
 
 Representation pragmas automatically specify aspects of the same name, so
 Discard_Names can be used as an aspect_mark in an aspect_specification instead of
-using the pragma on individual entities. 
+using the pragma on individual entities.
 
 Unlike a lot of other pragmas, this one was not obsolesced because it can also act
 as a configuration pragma (and there is no such thing as a configuration aspect -
@@ -135,6 +160,14 @@
 and write up a ramification AI to do it. (It's a bit more than a pure presentation
 change; I'd write it as a confirmation AI, but those don't allow any associated
 wording changes.)
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Saturday, June 15, 2013  9:14 AM
+
+Here is an attempt at the wording for the Discard_Names AI [this is version
+/02 - ED]; I need a nice term to use, however. Ideas welcome.
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent