;; The function SYNTAX-ERROR is supposed to not return, eg (function (&rest t) nil) ? (labels ((syntax-error (&rest stuff) (error "Syntax error: ~s" stuff)) ;; This function is fine on its own without read-something (get-num (key) (the fixnum (case key (:a 1) (:b 2) (otherwise (syntax-error "Hey, key was wrong" key))))) ;; The presence of READ-FUNCTION makes SBCL wrongly think this about the above usage: ;; Derived type of (SYNTAX-ERROR "Hey, key was wrong" KEY) is ;; (VALUES (MEMBER :TRUE) &OPTIONAL), (read-something (key) (if (eq key :foo) :true (syntax-error "not :foo")))) ;; The presence or non-presence of this declaration changes nothing (declare (ftype (function (&rest t) nil) syntax-error)) (defun test (key) ;; dumb calls (get-num key) (read-something key)))