Version 1.1 of acs/ac-00285.txt

Unformatted version of acs/ac-00285.txt version 1.1
Other versions for file acs/ac-00285.txt

!standard 13.5.3(4)          16-12-15 AC95-00285/00
!standard K.1(10/3)
!class confirmation 16-12-15
!status received no action 16-12-15
!status received 16-10-01
!subject Is Bit_Order an aspect?
!summary
!appendix

From: Brad Moore
Sent: Saturday, October 1, 2016  12:05 PM

K.1 (10/3) Says that Bit_Order is an aspect, and refers the reader to
13.5.3 for further detail.

In 13.5.3, Bit_Order is only described as an attribute. There is no mention of
it being an aspect. What is the intent?

Is this an oversight?

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

From: Jeff Cousins
Sent: Saturday, October 1, 2016  3:03 PM

Off the top of my head, I think most attributes (e.g. Size and Bit_Order) are a
subset of aspects, which for historic reasons happen to be set or read using
their own special ` syntax, but it would have been too much work to justify
re-writing all the attribute sections of the RM in terms of aspects, certainly
not before the end of 2012 deadline.  Note that 13.5.3 appears in the index for
both "Bit_Order aspect" and "Bit_Order attribute", implying that for 13.5.3(4)
at least the terms aspect and attribute should be regarded as interchangeable.

Though some attributes such as `Valid I would regard as predefined functions
rather than aspects; something needs to be evaluated at run-time.

I wrote some simple paragraph for Alan Burns on the relationship between
pragmas, attributes, and aspects, but it really needs a Venn diagram to show how
they all do and don't overlap.

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

From: Randy Brukardt
Sent: Sunday, October 2, 2016  12:26 AM

> Is this an oversight?

No.

13.1.1(31/3) says that all representation and operational attributes are aspects
and can be specified with an aspect_specification.

This was done so that we didn't need to rewrite a whole bunch of sections of the
RM.

Even new representation aspects (like Object_Size) are described in terms of
attributes in order to be consistent.

Maybe it would have been better to redo all of that, but it fails Bob's rule of
RM changes: would the change change the behavior of any implementor or user of
Ada? The former is surely no, the latter is probably not. Thus, not worth it.

If it's in the index as an aspect, it's an aspect (that list was developed by
Bob and vetted by me, it's much more likely to be missing something than to have
something on it that doesn't belong).

Jeff: The defining point for an attribute is whether it is defined to be a
representation or operational attribute. If it isn't, then it isn't an aspect.
(For instance, 'Valid is neither kind of attribute.)

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

From: Tucker Taft
Sent: Sunday, October 2, 2016  12:22 PM

> Is this an oversight?

I don't believe so.  There is this general wording in 13.1(0.2/3,1/1):

" ... Aspects may also be specified by certain other constructs occurring
subsequent to the declaration of the affected entity: a representation aspect
value may be specified by means of a representation item and an operational
aspect value may be specified by means of an operational item.

There are six kinds of representation items: attribute_definition_clauses for
representation attributes, ..."

---

So all representation attributes are considered aspects.  I don't think we chose
to repeat that fact at every use of the term attribute, but instead relied on
the general wording in 13.1.

Pragmas are a bit different, and we did feel the need to re-phrase descriptions
of pragmas in terms of aspects, in part because we generally put the pragmas
into the obsolete features annex.

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

Questions? Ask the ACAA Technical Agent