CVS difference for ais/ai-00224.txt
--- ais/ai-00224.txt 1999/12/13 20:23:49 1.9
+++ ais/ai-00224.txt 2000/01/20 01:36:02 1.10
@@ -49,7 +49,7 @@
Checking pragmas give an implementation instructions on handling
language-defined checks. A pragma Suppress gives permission to an implementation
to omit certain language-defined checks, while a pragma Unsuppress revokes the
-permission to make omit checks.
+permission to omit checks.
Add pragma Unsuppress to 11.5(3-4):
@@ -953,6 +953,137 @@
In general, having multiple unit-less compilations with configuration
pragmas is a bit confusing anyway, I would say (though our front end
supports it ;-).
+
+*************************************************************
+
+From: Tucker Taft
+Sent: Monday, December 13, 1999 2:38 PM
+
+Randy Brukardt wrote:
+>
+> Here is a complete rewrite of this AI. I don't much like the wording, but I
+> think it is correct (if a bit subtle).
+
+Looks good. I noticed one typo (see below).
+
+>
+> Randy.
+
+-Tuck
+
+One typo:
+
+>
+> ...
+> Checking pragmas give an implementation instructions on handling
+> language-defined checks. A pragma Suppress gives permission to an
+> implementation
+> to omit certain language-defined checks, while a pragma Unsuppress revokes
+> the
+> permission to make omit checks.
+ XXXX
+
+> ...
+
+*************************************************************
+
+From: Jean-Pierre Rosen
+Sent: Tuesday, December 14, 1999 12:38 PM
+
+> Here is a complete rewrite of this AI. I don't much like the wording, but
+I
+> think it is correct (if a bit subtle).
+>
+[...]
+> Consider, for instance, an integer saturation arithmetic package. The
+> multiply
+> operation might look like:
+>
+> function "*" (Left, Right : Saturation_Type) return Saturation_Type
+is
+> begin
+> return Integer(Left) * Integer(Right);
+> exception
+> when Constraint_Error =>
+> return Saturation_Type'Last;
+> end "*";
+>
+> This function will not work properly without overflow checking. Ada 95
+does
+> not provide a way to indicate this to the compiler and programmers.
+>
+[...]
+> Pragma Unsuppress revokes the permission to suppress a check, that is, it
+> means
+> that the given check must be performed.
+>
+Given the example and the wording, I am afraid that it may be interpreted to
+mean that if, for example, Float'Machine_Overflows is False, the check be
+performed anyway. I'm pretty sure it is not the intent, but maybe some
+additionnal wording could be added for this.
+
+*************************************************************
+
+From: Randy Brukardt
+Sent: Tuesday, December 14, 1999 4:48 PM
+
+I specifically selected an Integer example to avoid any question of whether the
+check has to be performed in the normal case. Also, the wording you are
+objecting to is used only in the informal description of the pragma. I used that
+to make it clearer what is meant. The formal wording never says anything about a
+check being required; it only talks about revoking the permission granted by a
+Suppress pragma.
+
+Obviously, I could add a paragraph in the discussion saying that Unsuppress
+"obviously" doesn't add any requirements beyond those that would exist anyway
+(in the absence of any checking pragmas), but this seems obvious enough. Would
+anyone seriously think otherwise??
+
+*************************************************************
+
+From: Robert I. Eachus
+Sent: Friday, December 17, 1999 5:53 PM
+
+At 04:48 PM 12/14/1999 -0600, Randy Brukardt wrote:
+>Obviously, I could add a paragraph in the discussion saying that Unsuppress
+>"obviously" doesn't add any requirements beyond those that would exist
+>anyway (in the absence of any checking pragmas), but this seems obvious
+>enough. Would anyone seriously think otherwise??
+
+ Why not just change the sentence:
+
+> A pragma Unsuppress revokes the permission to omit the named check for any
+> entities to which it applies.
+
+ To:
+
+> A pragma Unsuppress revokes any permissions given by pragma Suppress to omit
+> the named check for any entities to which it applies.
+
+ Or if this is still too verbose, you could go with:
+
+> A pragma Unsuppress revokes such permissions to omit the named check for any
+> entities to which it applies.
+
+*************************************************************
+
+From: Randy Brukardt [Randy@RRSoftware.Com]
+Sent: Thursday, December 23, 1999 1:44 PM
+To: 'Eachus,Robert I.'; 'ARG@ACM.ORG'
+Subject: RE: AI-224 (Take 2)
+
+You're changing the actual (RM-style) wording, while Jean-Pierre was objecting
+to the wording of the example (at least, that's how it appeared to me).
+
+I don't see any reason to add the redundancy to the RM wording, because such
+things tend to get us in trouble down the road. There aren't any other
+permissions to omit checks in the RM (and implementation-defined permissions
+aren't our business). There are cases where the RM says that the checks don't
+have to be made, but these aren't permissions. For instance, the
+Machine_Overflows=False case seems justified by 4.5(10), which simply says that
+checks are made if Annex G is supported, and saying nothing further.
+
+ Randy.
*************************************************************
Questions? Ask the ACAA Technical Agent