Am Mittwoch, 12.02.03 um 22:07 Uhr schrieb Martin Cracauer:

> Hi,
>
> is there any equivalent to a "noreturn" declartion in CMUCL?
>
> In a context like this
>
> (+ (if p
>       p
>       (invoke-error "p is foobar'))
>     2)
>
> I get a warnng that the return value of invoke-error is not a number.
> I want to teach the compiler that invoke-error never returns.

The conventional way of indicating a function doesn't return is to give 
it a return-value type of nil; see (describe 'error) for an example.

Note that normally, CMUCL should be able to derive this type 
automagically, if indeed every possible exit of the function is via a 
function that errors out.

In cases where cmucl can't automagically do that, you might want to 
declaim the ftype of invoke-error appropriately, e.g.

(declaim (ftype (function (t) nil) invoke-error))

Regs, Pierre.

-- 
Pierre R. Mai <[EMAIL PROTECTED]>                    http://www.pmsf.de/pmai/
  The most likely way for the world to be destroyed, most experts agree,
  is by accident. That's where we come in; we're computer professionals.
  We cause accidents.                           -- Nathaniel Borenstein


Reply via email to