comp.lang.ada
 help / color / mirror / Atom feed
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



  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