Version 1.1 of 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