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.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Quick question regarding limited type return syntax Date: Sat, 02 Aug 2014 10:11:59 +0300 Organization: Tidorum Ltd Message-ID: References: <166aaec5-5e9c-40e0-9b07-9b9c7d5f7f33@googlegroups.com> <16a6846f-2964-438a-ab9b-2029075f7924@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: individual.net yRs9R11BQLFFthkL0hUECQtpIVeDP3UtYcE6mtdrhTbunRWi+a Cancel-Lock: sha1:LPecAdfvYD9269r5QgSdE+GG4b0= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: Xref: news.eternal-september.org comp.lang.ada:21392 Date: 2014-08-02T10:11:59+03:00 List-Id: On 14-08-01 10:57 , J-P. Rosen wrote: > Le 01/08/2014 04:12, Randy Brukardt a écrit : >> It's annoying that we couldn't get this "explicit default- >> initialization" syntax more widely used. I prefer to ensure that >> everything is properly initialized, but sometimes the default >> value is good enough. It would be nice to be able to specify that: >> >> Obj : My_Type := <>; >> or maybe >> Obj : My_Type := (<>); >> >> so that I could verify that every object is either initialized >> or explicitly left default initialized. > > One of my clients has a rule that every user-defined type must > provide an associated constant for the default value (and of > course, AdaControl can enforce that rule). Then it is enough > to say that every variable must be initialized. > > Seems close enough to what you want... On 14-08-01 23:53 , Shark8 wrote: > ...Too bad there's not a Default_Value sort of aspect/attribute. Do you mean that Default_Value would be an aspect of a type, and would define the default initialization value of objects of that type? More elegantly IMO, the language could allow a default initialization expression to be assigned in the type or subtype declaration: type My_Type is := ; The elaboration of the type declaration would evalate the expression into a value, and then any declaration of an object of this type would use that value as the initialization expression, unless the object declaration itself provides an initialization expression. J-P's client's rule could then be reformulated as a rule that every type (and subtype) declaration must have a default-initialization expression. This suggestion seems so trivial that it has probably been made before, and rejected for some reason. Perhaps using ":=" to "assign a value to a type" is too strange. Randy's suggestion for an explicit indication that an object is default-initialized is an orthogonal isssue. IMO the risk of using uninitialized variables, and the resulting non-deterministic bugs, is one of the major remaining holes in the safety of Ada. On the other hand, explicit initialization of all variables (buffer arrays in particular) is often far too costly in real-time applications. The above suggestions of explicit default initialization expressions would not reduce the cost, of course. At present, the only remedy that does not impose run-time costs is to use provers to show that the uninitialized variables (for example, uninitialized array elements) are never read. -- Niklas Holsti Tidorum Ltd niklas holsti tidorum fi . @ .