Version 1.1 of ai22s/ai22-0004-1.txt

Unformatted version of ai22s/ai22-0004-1.txt version 1.1
Other versions for file ai22s/ai22-0004-1.txt

!standard 13.12.1(2/2)          21-06-04 AI22-0004-1/01
!class ramification 21-11-11
!status work item 21-11-11
!status received 21-11-11
!priority Very_Low
!difficulty Easy
!subject Permissions of 4.1.4 and No_Implementation_Attributes
!summary
The permissions of 4.1.4 have no effect on the No_Implementation_Attributes restriction.
!question
In RM 4.1.4(13/5-15/5), implementations are granted permission to extend the definition of language-defined attributes in some cases. Do we want an AARM note clarifying that there is no interaction between this permission and the No_Implementation_Attributes restriction defined in RM 13.12.1(2/2)?
Someone using the No_Implementation_Attributes restriction (perhaps along with other restrictions) in hopes of ensuring code portability might be unpleasantly surprised when they discover that one implementation made use of these 4.1.4 permissions and another did not. Does this possibility warrant adding a user note?
!recommendation
(See Summary.)
!wording
Add after 13.12.1(2/2):
AARM Discussion: Implementations are granted permissions to extend the definitions of language-defined attributes in some cases (see 4.1.4). Specifying the No_Implementation_Attributes restriction has no effect on those permissions.
!discussion
This restriction can be enforced simply by looking at the use of specific attribute names, rather than looking at the exact usage.
[Editor's note: Janus/Ada takes the opposite tact with attributes that were defined to support Ada 83: they are reported as implementation-defined. We'd probably do the same if we used the permission of 4.1.4(15/5). So perhaps this is the wrong answer, particularly because of the problem noted in the second paragraph. Since I was the one that suggested this result to Steve (who wrote it up), I'm somewhat unsure of a suggestion.]
!ACATS test
Since this is ultimately about implementation-defined attributes, it is difficult but not impossible (assuming that the implementation has some attributes using these permissions): a macro could be used to include the attribute(s) and to check that the restriction works.
!appendix

****************************************************************

Questions? Ask the ACAA Technical Agent