Version 1.1 of acs/ac-00319.txt

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

!standard 3.10.1(2.4/3)          19-09-04 AC95-00318/00
!class confirmation 19-09-04
!status received no action 19-09-04
!status received 19-06-07
!subject Problem with 3.10.1
!summary
!appendix

From: Jean-Pierre Rosen
Sent: Tuesday, June 11, 2019  2:48 PM

I just came across 3.10.1 (2.4/3):

it occurs within the scope of a nonlimited_with_clause that mentions a
library package in whose visible part the completion of T is declared, or

Couldn't make any sense out of that...

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

From: Randy Brukardt
Sent: Tuesday, July 2, 2019  10:17 PM

> I just came across 3.10.1 (2.4/3):
>
> it occurs within the scope of a nonlimited_with_clause that mentions a
> library package in whose visible part the completion of T is declared,
> or
>
> Couldn't make any sense out of that...

Not sure what the problem is. Each piece makes sense, and the combining seems
OK. It's a bit of a run-on, but we have lots of those. This is pretty much all
composed of technical terms, so the ability to reword is limited. But it seems
clear enough (combined with the lead-in):

   Given an access type A whose designated type T is an incomplete view, a
   dereference of a value of type A also has this incomplete view except when:

   * it occurs within the scope of a nonlimited_with_clause that mentions a
     library package in whose visible part the completion of T is declared, or

(1) "it" here refers to "a dereference of a value of type A"; surely don't want
    to repeat that.
(2) "within the scope of a nonlimited_with_clause" should be obvious.
(3) "a nonlimited_with_clause that mentions a library package" - "mentions"
    is a technical term, which means directly names or is an ancestor unit
    thereof. (So "with A.B" mentions both units A and A.B). "Mentions" is the
    term that gives rise to the common rule that a with_clause withs the parent
    (and grandparent) as well as the child.
(4) "in whose visible part the completion of T is declared" should be obvious,
    as well.

So, "it" (the dereference) is of a complete view if the completion of incomplete
type T is visible because of a with clause (that is, the dereference does not
have the incomplete view). This mainly is important for limited withs; the type
becomes complete if one is within a normal withs scope for the package.

Hope this helps.

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

From: Jean-Pierre Rosen
Sent: Tuesday, July 2, 2019  11:23 PM

> Not sure what the problem is. [...]

> (4) "in whose visible part the completion of T is declared" should be
> obvious, as well.

It's the "in whose" formulation that sounded strange to my non-english-natives
ears. "whose visible part contains the declaration of T" would be fine (for me).

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

From: Randy Brukardt
Sent: Friday, August 30, 2019  4:48 PM

> It's the "in whose" formulation that sounded strange to my
> non-english-natives ears. "whose visible part contains the declaration
> of T" would be fine (for me).

That doesn't work, because we have to talk about the completion of T, not just
any declaration of T.

"whose visible part contains the declaration of the completion of T"

would work, I guess. I think we didn't use that simply because it's lengthening
an already run-on sentence.

I guess I find this insufficiently broken (well, not broken at all) to make any
change. "Sounds weird" is hardly a reason to change Ada 2005 wording that's been
around for almost 13 years, been discussed multiple times, and even rewritten in
2010 without changing that phrase.

No big deal either way, so speak up if you would like it changed (especially if
you are not J-P).

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


Questions? Ask the ACAA Technical Agent