Version 1.2 of ai12s/ai12-0414-1.txt

Unformatted version of ai12s/ai12-0414-1.txt version 1.2
Other versions for file ai12s/ai12-0414-1.txt

!standard A.2(2)          20-12-11 AI12-0414-1/00
!standard A.3.1(2)
!standard A.3.1(4/2)
!standard A.3.1(6/2)
!class presentation 20-12-03
!status Amendment 1-2012 20-12-11
!status ARG Approved 15-0-0 20-12-09
!status work item 20-12-03
!status received 20-10-06
!priority Low
!difficulty Easy
!subject Replace categorization pragmas with aspects
Replace all remaining categorization pragmas with equivalent aspects.
We've added aspects to the start of many language-defined units, and in such cases we've switched any categorization pragma to use an aspect instead -- to avoid having a mix of aspects and pragmas.
It's inconsistent to have some units use only pragmas and some use only aspects.
(See Summary.)
** Editor: I still have to go through the entire RM looking for categorization pragmas and record the paragraph numbers. The first four are in the !standards above. **
Consistency is good.
No ASIS effect.
!ACATS test
No ACATS tests needed.

From the review of Tucker Taft, October 6, 2020

One comment on A.4.6 (3/2): Why is this still a "pragma Pure(Constants);" 
rather than a "with Pure"?  Of course if we change this we need to change 
A.4.7 (46.2/5) we should talk in terms of "Aspect Pure ... " rather than 
"Pragma Pure...".


From: John Barnes
Sent: Wednesday, October 7, 2020  1:45 AM

That was the thing that struck as most untidy about the current situation.
We are still lingering in the pragma days when surely we should  change them
all to aspects. Most of the preelaborates have changed as a consequence of 
adding nonblocking.


From: Randy Brukardt
Sent: Tuesday, October 13, 2020  9:41 PM

This occurred mainly because one John Barnes objected to changing library unit
pragmas to aspects in Ada 2012. As a result, we left those as pragmas by 
default, just allowing them to be written as aspects.

For Ada 202x, we've changed such pragmas to aspects in the cases where other 
aspects (which do not have matching pragmas) need to be given in the same 
place. But we're not changing other library unit pragmas to aspects. Besides
being a lot of work, it would cause your major objection to the aspect syntax
to occur. Specifically, A.2(2) is:

   package Ada is
      pragma Pure(Ada);
   end Ada;

Changing this to an aspect would result in:

   package Ada
      with Pure is
   end Ada;

When we (you and I) discussed this a couple of years ago, you decided that you 
were OK with aspects replacing library unit pragmas so long as "is end"
didn't appear -- which it would in this case of an empty parent package.

If of course we're going to leave some pragmas rather than converting them to 
aspects, then it doesn't matter much exactly where that line is drawn.
If, OTOH, you've changed your mind about the above, we can discuss changing 
them all (it probably would add several days to the completion of the RM, 
since an AI would be required).


From: John Barnes
Sent: Tuesday, October 20, 2020  10:39 AM

I think we should change them all now. I do still dislike is end. But then I
dislike the mixture we have now even more.

Over the past weeks I have been doing some updates to my book and In 
particular changed them all. One can hide the horrid is end by the insertion 
of a nice comment thus

package Ada
      with Pure is
     -- as white as driven snow
end Ada;


Questions? Ask the ACAA Technical Agent