Version 1.3 of ai12s/ai12-0194-1.txt

Unformatted version of ai12s/ai12-0194-1.txt version 1.3
Other versions for file ai12s/ai12-0194-1.txt

!standard 13.1.1(17/3)          16-06-06 AI12-0194-1/01
!class binding interpretation 16-06-06
!status Amendment 1-2012 16-07-21
!status WG9 Approved 16-10-08
!status ARG Approved 11-0-0 16-06-11
!status work item 16-06-06
!status received 16-02-03
!priority Low
!difficulty Easy
!qualifier Omission
!subject Language-defined aspects and entry bodies
!summary
Language-defined aspects are not allowed on entry bodies.
!question
!recommendation
(See Summary.)
!wording
Modify 13.1.1(17/3):
There are no language-defined aspects that may be specified on a renaming_declaration, a generic_formal_parameter_declaration, a subunit, a package_body, a task_body, a protected_body, {an entry_body, }or a body_stub other than a subprogram_body_stub.
!discussion
13.1.1(17/3) applies to all kinds of bodies other than those that can act as specifications. Entry_Body should be included; this clearly was an oversight of AI12-0169-1 (which added these aspect_specifications).
!corrigendum 13.1.1(17/3)
Replace the paragraph:
There are no language-defined aspects that may be specified on a renaming_declaration, a generic_formal_parameter_declaration, a subunit, a package_body, a task_body, a protected_body, or a body_stub other than a subprogram_body_stub.
by:
There are no language-defined aspects that may be specified on a renaming_declaration, a generic_formal_parameter_declaration, a subunit, a package_body, a task_body, a protected_body, an entry_body, or a body_stub other than a subprogram_body_stub.
!ASIS
No ASIS effect.
!ACATS test
An ACATS B-Test should be created.
!appendix

From: Randy Brukardt
Sent: Wednesday, February  3, 2016  7:54 PM

n AI12-0169-1, we allowed aspect specifications on entry bodies.

However, we only made a syntax change. In particular, we didn't add a rule 
like 13.1.1(17/3) or 13.1.1(18/4) for entry bodies.

As such, it doesn't appear that any rule prevents putting Pre on an entry
body:

    entry Fooey (P : in out Natural) with Pre => P mod 2 = 0 is
       ...
    end Fooey;

This appears legal, while the similar subprogram body would be illegal.

It's bizarre that we ban language-defined aspects on all bodies *except* entry
bodies. I have to think this is an oversight (probably happened because we
were too tired after arguing about the syntax).

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

From: Tucker Taft
Sent: Wednesday, February  3, 2016  9:41 PM

Agreed. Shouldn't be legal.

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

Questions? Ask the ACAA Technical Agent