CVS difference for ai05s/ai05-0229-1.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai05s/ai05-0229-1.txt

--- ai05s/ai05-0229-1.txt	2010/11/13 03:23:06	1.2
+++ ai05s/ai05-0229-1.txt	2010/11/18 07:07:36	1.3
@@ -1516,185 +1516,3 @@
 
 ****************************************************************
 
-From: Brad Moore
-Sent: Friday, November 12, 2010  8:24 AM
-
-> Well, I did say I only had brief glimpses but it did seem that there was the
-> risk of confusion with multiple use of with.
-
-I'm wondering if it's a bit messy that the aspect syntax for a package
-declaration ends up being quite different than the aspect syntax for a package
-instance declaration. In the first case, the aspects come immediately before the
-"is", and in the second case they comes a long ways after the "is".  This is the
-reason my previous example had the incorrect syntax. I had mistakenly assumed
-that aspects for all package declarations came before the "is". I wonder how
-many others will make that same mistake.
-
-Instead of writing;
-
-package P1 with Pure is
-end P1;
-
-package P2 is new P3 with Pure;
-
-Would it be better to write?
-
-package P1 with Pure is
-end P1;
-
-package P2 with Pure is new P3;
-
-In the case of the instantiation, it seems clearer to me that the Pure attribute
-is now being associated with the new package, rather than somehow being
-associated with the original package.
-
-If package declarations are a special case for aspect syntax, maybe package
-instance declarations should be lumped into that special case as well.
-
-I suppose one might argue that its better to limit the special case as much as
-possible, rather than have it creep into other syntax forms.
-
-On the other hand, maybe all aspect clauses should come before the "is", This
-would eliminate the special case, and might make things more consistent.
-
-Some examples ...
-
-full_type_declaration example-------------------------
-
-type T1 (Length : Integer) with pack is
-    record
-        S : String (1 .. Length);
-    end record;
-
-instead of
-
-type T1 (Length : Integer) is
-     record
-         S : String (1 .. Length);
-    end record with pack;
-
-task type declaration aspects already come before the is -----------
-
-protected type declaration aspects already come before the is ---------
-
-private type declaration example ---------------------
-
-type T1 (Length : Integer) with pack is limited private;
-instead of
-type T1 (Length : Integer) is limited private with pack;
-
-private extension declaration example -------------------
-
-type T1 (Length : Integer) with pack is new limited T2 with private;
-instead of
-type T1 (Length : Integer) is new limited T2 with private with pack;
-
-(I find these last two examples particularly compelling. The fact that this is
-an incomplete declaration can get lost in the declaration. I think private
-should be the last word)
-
-object declarations don't have an is ---------------------
-
-function and procedure specifications don't have an is -------------
-
-This is not an exhaustive list of examples, but I don't see any others offhand
-that would be problematic. In many cases I find the declarations read better
-having the aspect come before the is.
-
-****************************************************************
-
-From: Robert Dewar
-Sent: Friday, November 12, 2010  8:32 AM
-
-> I'm wondering if it's a bit messy that the aspect syntax for a package
-> declaration ends up being quite different than the aspect syntax for a
-> package instance declaration. In the first case, the aspects come
-> immediately before the "is", and in the second case they comes a long
-> ways after the "is".  This is the reason my previous example had the
-> incorrect syntax. I had mistakenly assumed that aspects for all
-> package declarations came before the "is". I wonder how many others
-> will make that same mistake.
-
-Actually GNAT has this wrong, and it is a huge pain, because it means you have
-to get all the way through the aspects then start looking at what is after IS,
-to know that the aspects you have parsed do not belong there. This is really
-messy.
-
-I agree with Brad, this is confusing, I would always put the aspects before IS
-for all the program unit type syntax.
-
-****************************************************************
-
-From: Tucker Taft
-Sent: Friday, November 12, 2010  8:52 AM
-
-I agree that the placement of the aspect specification is a bit tricky.  I
-actually found the placement before the "is new" quite jarring.  But it is
-annoying that the placement jumps around depending on the construct.  The one
-that seems hardest for me to remember is the one for a record type.
-
-The general rule is that it comes just before the ";" except for a non-instance
-package specification, task declaration, or protected declaration, where it
-comes just before the "is".
-
-****************************************************************
-
-From: Bob Duff
-Sent: Friday, November 12, 2010  9:07 AM
-
-> In many cases I find the declarations read better having the aspect
-> come before the is.
-
-Hmm.  I think I agree.
-
-The "with private with Pack" syntax seems particularly odd.
-
-****************************************************************
-
-From: Stephen Michell
-Sent: Friday, November 12, 2010  11:07 AM
-
-Good catch Brad. I think that you explained that well.
-
-****************************************************************
-
-From: Tucker Taft
-Sent: Friday, November 12, 2010  11:26 AM
-
-What about "type T is new Integer;"?
-Or "procedure Foo(X: Integer) is null;".
-And what about "renames"?  Is "renames" like "is"?
-
-Not an easy choice...
-On the other hand, once we make it, the compiler will help us all learn what is
-the right way to do it. ;-)
-
-I think I still somewhat prefer seeing aspect specifications at the end unless
-that is ridiculously far away as in a non-instance package spec. This is
-especially true if they start getting complex, as in:
-
-   with Dynamic_Predicate =>
-     Sorted_Arr_Type(Arr_Type'First) <= Sorted_Arr_Type(Arr_Type'Last)
-
-This seems like something that doesn't want to be interspersed in the middle of
-an array type definition.
-
-****************************************************************
-
-From: Randy Brukardt
-Sent: Friday, November 12, 2010  4:30 PM
-
-> What about "type T is new Integer;"?
-> Or "procedure Foo(X: Integer) is null;".
-> And what about "renames"?  Is "renames" like "is"?
-
-The last isn't possible: we don't allow aspects on renames. (Aspects are the
-same as those from the renamed object, since they're not view-specific.)
-
-****************************************************************
-
-From: John Barnes
-Sent: Friday, November 12, 2010  5:21 AM
-
-****************************************************************
-

Questions? Ask the ACAA Technical Agent