From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,6742ab01b9814abe X-Google-Attributes: gid103376,public From: stt@henning.camb.inmet.com (Tucker Taft) Subject: Re: type casting tagged types in the wrong direction Date: 1996/03/28 Message-ID: #1/1 X-Deja-AN: 144689523 sender: news@inmet.camb.inmet.com (USENET news) x-nntp-posting-host: henning.camb.inmet.com references: <3159B860.28A6@csehp3.mdc.com> organization: Intermetrics, Inc. newsgroups: comp.lang.ada Date: 1996-03-28T00:00:00+00:00 List-Id: 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