comp.lang.ada
 help / color / mirror / Atom feed
* Re: type casting tagged types in the wrong direction
@ 1996-03-28  0:00 Tucker Taft
  1996-03-29  0:00 ` type casting tagged types in the wrong Scott Moody
  0 siblings, 1 reply; 2+ messages in thread
From: Tucker Taft @ 1996-03-28  0:00 UTC (permalink / raw)


James A. Squire (m193884@CSEHP3.MDC.COM) wrote:
: I have a question:

: Say I have something like:

: type A is tagged
:   record
:     X : ABC;
:     Y : DEF;
:   end record;

: type B is new A with
:   record
:     W : GHI;
:   end record;

: type C is new B with
:   record
:     Z : JKL;
:   end record;


: OK.  Now, let's say that I forgot which type extends off of which, and I
: write a statement like this:

:   Jim  : C;
:   Jane : B;
:   Save : JKL;

: begin
:   ...
:   Jim := C (Jane);

This is illegal, by RM95 4.6(21-23).

:   Save := Jim.Z;
:   ...
: end;

: GNAT 3.03 compiles this statement.  Is that really right?  

No.  GNAT should have complained at compile time about the conversion
from B to C.  You may convert from B'Class to C (and then a run-time
check is performed), or you may convert from C to B, but a direct
conversion from B to C is illegal.

: ... Is Jim.Z defined?

Jim.Z is "defined," but the conversion on the previous line
is illegal, so who knows what code GNAT is generating for the
assignment to Jim.

: According to the LRM 4.6, the above is called a "view conversion".  This
: raises the question, how do you take a type C view of a type B entity
: when type C looks for additional information?

You can't.

: Should a validated Ada95 compiler flag this usage?  I realize that GNAT
: is not validated.

GNAT is validated, but validation doesn't guarantee bug-free
(nor does anything else I know of ;-).

This looks like a bug in GNAT, pure and simple.  (It also *suggests*
that another ACVC test might be in order ;-).

: I would appreciate any expert or otherwise opinions that any of you have
: to offer.
: Thank you.
: --
: James Squire
: MDA Avionics Tools & Processes
: ja_squire@csehp3.mdc.com
: "one of these days I'm going to better myself by going to Knight school"

-Tucker Taft   stt@inmet.com   http://www.inmet.com/~stt/
Intermetrics, Inc.  Cambridge, MA  USA




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

end of thread, other threads:[~1996-04-02  0:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <md5:2007D2C08E89BD8AAF36D7DF96E5D7BE>
1996-04-02  0:00 ` type casting tagged types in the wrong James A. Squire
1996-03-28  0:00 type casting tagged types in the wrong direction Tucker Taft
1996-03-29  0:00 ` type casting tagged types in the wrong Scott Moody

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