comp.lang.ada
 help / color / mirror / Atom feed
* Private discrete type as index
@ 2003-01-11 21:42 AG
  2003-01-11  2:34 ` James S. Rogers
  2003-01-12 19:23 ` Keith Thompson
  0 siblings, 2 replies; 16+ messages in thread
From: AG @ 2003-01-11 21:42 UTC (permalink / raw)


Hi all,

Guess I have a question that I'm a bit puzzled about.
Consider the boiled-down code snippet:

package test is
  type x is limited private;
  type test is array(x) of boolean;
private
    type x is new boolean;
end test;

Trying to compile that fails on GNAT
with "Discrete type required" error.
Can't blame it, of course, since it's
correct according to LRM. But...

the obvious intention was to provide
a set of "+/-" operations etc on the
limited type (which are not trivial)
and prevent the out-of-package clients
from messing with the index.

Since the compiler obviously knows
the implementation details, why not?

Of course, it can be implemented as
an iterator, but what's wrong with
the example as written? After all,
the client modules can't use that
index other than through the type
and operation provided by the
package. Compiler/linker sure knows
what the type is. So, why not?





^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2003-01-19  6:06 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-11 21:42 Private discrete type as index AG
2003-01-11  2:34 ` James S. Rogers
2003-01-12  0:09   ` AG
2003-01-11  7:16     ` James S. Rogers
2003-01-12  5:47       ` AG
2003-01-11 12:22         ` Dmitry A. Kazakov
2003-01-11 14:36         ` Charles H. Sampson
2003-01-12 19:23 ` Keith Thompson
2003-01-12 19:48   ` tmoran
2003-01-15 16:45     ` Dmitry A. Kazakov
2003-01-18  6:24       ` AG
2003-01-17 14:14         ` tmoran
2003-01-19  1:38           ` AG
2003-01-18  8:36             ` tmoran
2003-01-19  6:06               ` AG
2003-01-17 16:28         ` Dmitry A. Kazakov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox