comp.lang.ada
 help / color / mirror / Atom feed
From: telesoft!garym@uunet.uu.net  (Gary Morris @pulsar)
Subject: Re: Novice Question on Record Representation
Date: 17 Dec 92 18:24:03 GMT	[thread overview]
Message-ID: <1992Dec17.182403.6353@telesoft.com> (raw)

In <dnsurber.724602575@node_26400> dnsurber@lescsse.jsc.nasa.gov (Douglas N. Su
rber) writes:
>    package P1 is
>	type T is private;
>	T_Size : constant := 32;
>    private
>	type T is new Integer;
>	subtype Assertion is boolean range true .. true;
>	a1 : constant Assertion := T_Size = T'Size;
>    end P1;

>By using the Assertion, you assure that T_Size has the right value.  Yes,
>you may have to tweak its value when you port, but you can't get a clean
>compile with the wrong value so it is safe. 

Unfortunately, you can't rely on assertion like this.  The constant a1 is
not used anywhere and an optimizing compiler could remove a1 and the
expression used for its initial value (TSize = T'Size).  So the range check
never occurs and no exception or compile time warning is generated.  This
optimization is allowed by 11.6(7), when the only effect of a predefined
operation is to raise an exception. 

--GaryM
-- 
Gary Morris                      Internet: garym@telesoft.com
Ada Software Development         UUCP:     uunet!telesoft!garym
Alsys West (TeleSoft)            Phone:    +1 619-457-2700
San Diego, CA, USA               Fax:      +1 619-452-2117

             reply	other threads:[~1992-12-17 18:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-12-17 18:24 Gary Morris @pulsar [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-12-18  0:22 Novice Question on Record Representation zaphod.mps.ohio-state.edu!cis.ohio-state.edu!udecc.engr.udayton.edu!black
1992-12-17 22:32 Douglas N. Surber
1992-12-17 14:29 Douglas N. Surber
1992-12-17 13:28 agate!spool.mu.edu!sdd.hp.com!saimiri.primate.wisc.edu!aplcen.apl.jhu.edu
1992-12-16 22:57 Josh Lam
replies disabled

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