From: bobduff@world.std.com (Robert A Duff)
Subject: Re: next "big" language?? (disagree)
Date: 1996/06/25
Date: 1996-06-25T00:00:00+00:00 [thread overview]
Message-ID: <DtK4z1.9G1@world.std.com> (raw)
In-Reply-To: DtIqn8.ADH@thomsoft.com
In article <DtIqn8.ADH@thomsoft.com>, Keith Thompson <kst@thomsoft.com> wrote:
>What gets interesting is having an option to disable assertion checking
>(as GNAT does). If the checking is disabled, may the compiler still
>assume that X /= 0? GNAT has chosen not to make this assumption.
>The alternative model (which I prefer) is to treat assertions in much
>the same was as predefined checks; execution of code that violates an
>assertion is erroneous.
I would think both ways of disabling would be useful. The latter is
equivalent to pragma Suppress, with an implementation-defined check
name.
>By the way, here's another way to implement assertions without special
>compiler support:
>
> subtype Truth is Boolean range True .. True;
>...This is probably an incomplete solution, since I *think* the
^^^^^^^^^^
You misspelled "incorrect". ;-)
>compiler is allowed to eliminate X_Non_Zero if it's never referenced.
Exactly. 11.6 says that the check can be eliminated. If you're
implementing your own assertions, you want to use an explicit
raise_statement to raise the exception, since 11.6 doesn't apply to
explicit raise_statements.
Just define these in some with'ed-everywhere package:
procedure Assert(Condition: Boolean) is
begin
if not Condition then
raise Assertion_Failed;
end if;
end Assert;
type Dummy is (Junk);
function Assert(Condition: Boolean) return Dummy is
begin
Assert(Condition);
return Junk; -- Ignored return value.
end Assert;
The latter is so you can assert things in declarative contexts:
subtype S is range 1..Function_Call(X);
D: Dummy := Assert(S'Last > 10);
I find that the majority of assertions in my code are in declarative
contexts. This is because a precondition for a procedure ought to be
evaluated before the procedure does anything, and the declarative part
of a procedure does stuff. It's annoying that I can't just say
"Assert(S'Last > 10);" there.
In GNAT, the "pragma" before Assert is slightly less annoying.
>Perhaps pragma Volatile can be used to work around this, but that
>introduces other complications.
Hmm. I hadn't thought of using Volatile in that way.
- Bob
next prev parent reply other threads:[~1996-06-25 0:00 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4p0fdd$4ml@news.atlantic.net>
1996-06-04 0:00 ` next "big" language?? (disagree) Peter Hermann
1996-06-04 0:00 ` The Amorphous Mass
1996-06-04 0:00 ` Robert Dewar
1996-06-06 0:00 ` Ken Garlington
1996-06-12 0:00 ` Help making ada pretty CSC Trusted Systems Group
1996-06-14 0:00 ` Sandy McPherson
1996-06-19 0:00 ` Ruediger Berlich
1996-06-04 0:00 ` next "big" language?? (disagree) Peter Hermann
1996-06-04 0:00 ` The Amorphous Mass
1996-06-05 0:00 ` Michael David WINIKOFF
1996-06-07 0:00 ` Robert Dewar
1996-06-05 0:00 ` Ian Ward
1996-06-05 0:00 ` The Amorphous Mass
1996-06-08 0:00 ` Robert Dewar
1996-06-08 0:00 ` The Amorphous Mass
1996-06-09 0:00 ` Robert Dewar
1996-06-08 0:00 ` Robert Dewar
1996-06-05 0:00 ` ++ robin
1996-06-05 0:00 ` Ian Ward
1996-06-05 0:00 ` Ian Ward
1996-06-06 0:00 ` Richard Riehle
1996-06-07 0:00 ` Robert Dewar
1996-06-10 0:00 ` Richard Riehle
1996-06-07 0:00 ` Richard Riehle
1996-06-08 0:00 ` O'Connor
1996-06-11 0:00 ` ++ robin
1996-06-11 0:00 ` James_Rogers
1996-06-11 0:00 ` Kevin J. Weise
1996-06-11 0:00 ` David Weller
1996-06-11 0:00 ` Chris Warack <sys mgr>
1996-06-11 0:00 ` ++ robin
1996-06-11 0:00 ` Ian Ward
1996-06-12 0:00 ` ++ robin
1996-06-12 0:00 ` Ian Ward
1996-06-11 0:00 ` Jon S Anthony
[not found] ` <4p60nk$imd@euas20.eua.ericsson.se>
[not found] ` <4p8lmq$oq7@goanna.cs.rmit.edu.au>
1996-06-11 0:00 ` ++ robin
1996-06-11 0:00 ` A. Grant
1996-06-12 0:00 ` Robert Dewar
1996-06-17 0:00 ` A. Grant
1996-06-18 0:00 ` Robert Dewar
1996-06-24 0:00 ` Robert I. Eachus
1996-06-26 0:00 ` Norman H. Cohen
1996-06-19 0:00 ` Jon S Anthony
1996-06-20 0:00 ` Robert Dewar
1996-06-24 0:00 ` Keith Thompson
1996-06-25 0:00 ` Simon Read
1996-06-25 0:00 ` Robert A Duff [this message]
1996-06-24 0:00 ` Dale Stanbrough
1996-06-24 0:00 ` Lars Duening
1996-06-24 0:00 ` hopkinc
1996-06-24 0:00 ` Assertions (was: Re: next "big" language?? (disagree)) Robert A Duff
1996-06-24 0:00 ` Robert Dewar
1996-06-25 0:00 ` Robert A Duff
1996-06-28 0:00 ` Robert Dewar
1996-06-24 0:00 ` Assertions (a different intent?) Gary McKee
[not found] ` <4qrljg$15l8@watnews1.watson.ibm.com>
1996-06-28 0:00 ` Assertions (was: Re: next "big" language?? (disagree)) Robert Dewar
1996-06-24 0:00 ` next "big" language?? (disagree) Robert Dewar
1996-06-24 0:00 ` Adam Beneschan
1996-06-26 0:00 ` Marc C. Brooks
1996-06-26 0:00 ` Marc C. Brooks
[not found] ` <4qsbm7$r1s@Starbase.NeoSoft.COM>
1996-06-28 0:00 ` "Assert"? "Assume"? (was: next "big" language?? (disagree)) Alexander Bunkenburg
1996-06-28 0:00 ` Ian Collier
1996-07-01 0:00 ` Cameron Laird
1996-06-24 0:00 ` next "big" language?? (disagree) Adam Beneschan
1996-06-25 0:00 ` Darin Johnson
1996-06-26 0:00 ` A. Grant
1996-06-26 0:00 ` Dale Stanbrough
1996-06-25 0:00 ` Brian Nettleton @pulsar
1996-06-26 0:00 ` Robert Dewar
1996-06-28 0:00 ` Fergus Henderson
1996-06-28 0:00 ` Robert Dewar
1996-06-30 0:00 ` Fergus Henderson
1996-06-30 0:00 ` Robert Dewar
1996-06-12 0:00 ` ++ robin
1996-06-12 0:00 ` A. Grant
1996-06-14 0:00 ` Richard A. O'Keefe
1996-06-12 0:00 ` Richard A. O'Keefe
1996-06-12 0:00 ` ++ robin
1996-06-12 0:00 ` Richard A. O'Keefe
1996-06-13 0:00 ` ++ robin
1996-06-13 0:00 ` ++ robin
1996-06-12 0:00 ` Jon S Anthony
1996-06-14 0:00 ` Jon S Anthony
1996-06-15 0:00 ` Jon S Anthony
1996-06-18 0:00 ` Adam Beneschan
1996-06-18 0:00 ` Jon S Anthony
1996-06-28 0:00 ` Assertions (an heretic view) Michel Gauthier
1996-06-28 0:00 ` Robert Dewar
1996-06-28 0:00 ` Robert A Duff
1996-06-06 0:00 ` next "big" language?? (disagree) Dale Pontius
1996-06-11 0:00 ` Jon S Anthony
1996-06-12 0:00 ` Help making ada pretty Pedro de las Heras
1996-06-18 0:00 ` next "big" language?? (disagree) ++ robin
1996-06-07 0:00 Ian Ward
1996-06-08 0:00 ` O'Connor
1996-06-10 0:00 ` Matt Kennel
1996-06-11 0:00 ` Ian Ward
1996-06-12 0:00 ` Norman H. Cohen
1996-06-11 0:00 ` Robb Nebbe
1996-06-09 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox