comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Should representation clauses be complete for each bit?
Date: Tue, 26 Jul 2011 16:10:09 -0500
Date: 2011-07-26T16:10:09-05:00	[thread overview]
Message-ID: <j0nafj$pvl$1@munin.nbi.dk> (raw)
In-Reply-To: wcc62mtav52.fsf@shell01.TheWorld.com

"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
news:wcc62mtav52.fsf@shell01.TheWorld.com...
> "Randy Brukardt" <randy@rrsoftware.com> writes:
>
>> I would do this slightly differently (in fact we did, in Claw where we 
>> had
>> this exact problem):
>>
>>    type T is
>>       record
>>          One : Boolean;
>>          Gap1 : Bits2 := 0; -- must be zero
>>          Tooth : Boolean;
>>          Gap2 : Bits11 := 0; -- must be zero
>>          Ree : Boolean;
>>       end record
>>        with Predicate => T.Gap1 = 0 and T.Gap2 = 0;
>>
>> with the same record rep clause.
>> Then the (correct) aggregates don't need to mention the gaps explicitly:
>>
>> with Ada.Assertions; use Ada.Assertions;
>> procedure P.Main is
>> --   X : T := (One | Tooth | Ree => True, Gap1 => 0, Gap2 => 0); -- OK
>>     X : T := (One | Tooth | Ree => True, others =>  <>); -- OK
>
> Hmm.  That seems reasonable, although it makes me nervous that
> you might accidentally say:
>
>    X : T := (One | Tooth => True, others =>  <>);
>
> which evilly leaves junk in Ree.  That sort of bug is likely if you add
> new components to a record.

Ugh. There really should be a restriction or something to prevent using <> 
for uninitialized things. We have such a rule for discriminants, it would 
seem easy enough to have it for all types (admittedly, it would be 
complicated by the recursive nature for record types). It can't be very 
common that the program actually wants to write aggregates that fill the 
aggregate with junk.

                                     Randy.





  reply	other threads:[~2011-07-26 21:10 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-20 10:34 Should representation clauses be complete for each bit? okellogg
2011-07-20 14:51 ` Robert A Duff
2011-07-20 15:24   ` Georg Bauhaus
2011-07-20 17:28     ` Robert A Duff
2011-07-21  7:37       ` Martin
2011-07-21  8:22         ` Simon Wright
2011-07-21 14:58           ` Robert A Duff
2011-07-23  0:13             ` Randy Brukardt
2011-07-27 14:12               ` okellogg
2011-07-28  0:03                 ` Randy Brukardt
2011-07-21  9:43         ` Georg Bauhaus
2011-07-21 15:06           ` Robert A Duff
2011-07-31 15:02             ` BrianG
2011-07-21 21:11           ` Brian Drummond
2011-07-21  7:59     ` Stephen Leake
2011-07-20 15:29   ` okellogg
2011-07-20 16:24     ` Dmitry A. Kazakov
2011-07-20 16:58       ` okellogg
2011-07-20 19:38         ` Dmitry A. Kazakov
2011-07-20 17:27     ` Robert A Duff
2011-07-20 19:14       ` okellogg
2011-07-20 20:13         ` J-P. Rosen
2011-07-20 21:23           ` Robert A Duff
2011-07-20 21:21         ` Robert A Duff
2011-07-21  8:02         ` Stephen Leake
2011-07-21  8:00     ` Stephen Leake
2011-07-21  7:36   ` Martin
2011-07-22 23:50   ` Randy Brukardt
2011-07-23  2:16     ` tmoran
2011-07-23 15:12     ` Robert A Duff
2011-07-26 21:10       ` Randy Brukardt [this message]
2011-07-23  0:01   ` Randy Brukardt
  -- strict thread matches above, loose matches on Subject: below --
1998-04-17  0:00 Should Representation Clauses " Marin David Condic, 561.796.8997, M/S 731-96
     [not found] <3533C3C5.3F25CB91@cacd.rockwell.com>
1998-04-16  0:00 ` Stephen Leake
replies disabled

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