Trac 38: Inlining loses declarations
From Trac 40.
I'd like to write a function fx+ which is like + but only accepts fixnums as arguments and never conses, i.e. it's considered an error if the sum is not a fixnum. Arguments and return value should be checked. Essentially this
(declaim (inline fx+))
(defun fx+ (x y)
(declare (fixnum x y)
(values fixnum))
(+ x y))
is what I want. If called as (fx+ 1 most-positive-fixnum) the error is detected as it should be. But after inlining
(defun foo (x y)
(fx+ x y))
and using it like (foo 1 most-positive-fixnum) it returns -536870912.