From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: subprogram must not be deeper than access type
Date: Sun, 25 Sep 2011 17:53:56 -0400
Date: 2011-09-25T17:53:56-04:00 [thread overview]
Message-ID: <wccd3eothjf.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: j5no0b$oo$1@tornado.tornevall.net
Jeffrey Carter <spam.jrcarter.not@spam.not.acm.org> writes:
> The problem is that there is nothing special about the main-program
> procedure. Specifically, it could be withed and called from something
> else, or call itself recursively. In either case, its declarative
> region, with its declaration of the function, would be nested deeper
> than the declaration of the access type. Since this is a compile-time
> check, it rejects anything that might be deeper, even when it never is.
Right. Also, when the main procedure returns, that's not the end of
the program. Library-level tasks can keep running for a long time
after that.
It's really annoying that in Ada you can't write a small example program
(with a single compilation unit in a single file) that has multiple
library-level things. If I ran the circus, there would be no library
subprograms. The main procedure would be declared inside a library
PACKAGE.
> The basic rule with named access-to-subprogram types is that the actual
> subprogram must be declared in a library-level package.
Right.
Just to clarify: library-level means not nested in any procedures,
functions, or tasks. If the (named) access type is declared at library
level, then for P'Access, P must be declared at library level. Nesting
within any number of packages doesn't count, for accessibility levels.
Anonymous access types work differently.
GNAT has P'Unrestricted_Access, which allows you to violate the
accessibility rules, but that's not portable.
- Bob
next prev parent reply other threads:[~2011-09-25 21:53 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-25 9:02 subprogram must not be deeper than access type Natasha Kerensikova
2011-09-25 14:04 ` Oliver Kleinke
2011-09-26 9:35 ` Natasha Kerensikova
2011-10-03 23:30 ` Yannick Duchêne (Hibou57)
2011-10-03 23:39 ` Adam Beneschan
2011-10-04 0:52 ` Yannick Duchêne (Hibou57)
2011-10-04 1:48 ` Yannick Duchêne (Hibou57)
2011-09-25 14:23 ` Robert A Duff
2011-09-25 15:03 ` georg bauhaus
2011-09-26 9:45 ` Natasha Kerensikova
2011-09-26 13:43 ` Robert A Duff
2011-09-26 14:20 ` Dmitry A. Kazakov
2011-09-26 16:15 ` Robert A Duff
2011-09-26 19:30 ` Dmitry A. Kazakov
2011-09-27 0:41 ` Robert A Duff
2011-09-27 8:58 ` Dmitry A. Kazakov
2011-10-04 4:19 ` Yannick Duchêne (Hibou57)
2011-09-27 5:50 ` J-P. Rosen
2011-09-27 7:52 ` Dmitry A. Kazakov
2011-10-04 4:26 ` Yannick Duchêne (Hibou57)
2011-10-04 7:58 ` Dmitry A. Kazakov
2011-10-04 15:10 ` Georg Bauhaus
2011-10-04 15:34 ` Dmitry A. Kazakov
2011-10-04 15:49 ` Yannick Duchêne (Hibou57)
2011-10-04 16:04 ` Dmitry A. Kazakov
2011-10-04 15:44 ` Yannick Duchêne (Hibou57)
2011-10-04 16:05 ` Georg Bauhaus
2011-10-04 16:47 ` Yannick Duchêne (Hibou57)
2011-10-04 15:41 ` Yannick Duchêne (Hibou57)
2011-09-26 18:59 ` Jeffrey Carter
2011-09-27 0:35 ` Robert A Duff
2011-10-04 4:30 ` Yannick Duchêne (Hibou57)
2011-10-04 18:40 ` Jeffrey Carter
2011-09-26 14:29 ` Georg Bauhaus
2011-09-26 15:31 ` Georg Bauhaus
2011-10-04 4:35 ` Yannick Duchêne (Hibou57)
2011-10-04 4:13 ` Yannick Duchêne (Hibou57)
2011-09-25 17:16 ` Jeffrey Carter
2011-09-25 21:53 ` Robert A Duff [this message]
2011-09-26 9:25 ` Georg Bauhaus
2011-09-26 23:00 ` Randy Brukardt
2011-09-27 0:34 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox