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=0.7 required=5.0 tests=BAYES_00,INVALID_DATE, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!utgpu!watmath!clyde!bellcore!faline!thumper!ulysses!hector!dsr From: dsr@hector.UUCP (David S. Rosenblum) Newsgroups: comp.lang.ada Subject: Re: Collective response to := messa Message-ID: <10980@ulysses.homer.nj.att.com> Date: 9 Dec 88 03:39:09 GMT References: <10959@ulysses.homer.nj.att.com> <124000022@inmet> Sender: netnews@ulysses.homer.nj.att.com Reply-To: dsr@hector.UUCP (David S. Rosenblum) Organization: AT&T Bell Laboratories, Murray Hill, NJ List-Id: In article <124000022@inmet> stt@inmet writes: |Here is another example of assignment leaving |uninitialized components: | type Rec is record | F : Positive; | G : Positive := 5; | end record; | | X : Rec; | Y : Rec; |begin | Y := X; | |In this example predefined assignment, the compiler is NOT required to |perform any constraint checks, and it is quite possible |that Y.F is < 0 after the indicated assignment. |It would be erroneous to use the value of Y.F, and it would |be erroneous to use Y as a whole as an operand to "=" or "/=", |but the assignment itself is not erroneous. (See LRM 3.2.1:18 for |discussion of erroneous use of uninitialized scalar subcomponents). I don't have an LRM handy, but I believe that the compiler IS required to implement the constraint checks. But the constraint check performed by the generated code may fail, if it is unable to distinguish an undefined value from a correct value, or if undefined objects happen to be elaborated in a valid state. Thus, what is erroneous then is the reliance on a such a quirk of the implementation. Nevertheless, this example is hardly a justification for a further weakening of Ada's strong typing model. I don't feel any better knowing that I can avoid writing an un-erroneous program in this case if I never subsequently use the erroneously assigned object. Yes, Ada allows unchecked programming, Ada defines certain program constructions to be erroneous, Ada defines representation clauses, etc. These are red herrings in a discussion of proposals to improve Ada's abstraction mechanisms. Maybe I'm incredibly naive, but I would like to see language improvements discussed based on the assumption that we will adhere as best as possible to the spirit of Ada's fundamental language philosophies. ------------------------------------------------------------------- David Rosenblum UUCP: {ucbvax, decvax}!ulysses!dsr AT&T Bell Laboratories ARPA: dsr@ulysses.att.com 600 Mountain Ave. dsr%ulysses@att.arpa Murray Hill, NJ 07974-2070 (201) 582-2906 -------------------------------------------------------------------