From: Alexey D. <ade...@co...> - 2002-10-18 02:21:42
|
How do you think, which of the following functions should signal errors? (defun test1 (f) (funcall (locally (declare (type (function (fixnum)) f)) f) nil)) (defun test2 () (declare (ftype (function (fixnum)) foo)) (funcall #'foo nil)) (defun test3 (x) (declare (ftype (function (fixnum)) foo)) (apply #'foo (list x))) (test3 nil) (defun test4 (f) (locally (declare (type (function (fixnum)) f)) (funcall f 1)) (funcall f nil)) (defun test5 () (let ((f (flet ((f (x) x)) (declare (ftype (function (fixnum)) f)) #'f))) (f nil))) It seems that with the current compiler (after enabling type checking in calls) errors will be signalled in all cases, but I doubt about conformance of it. (defun test6 (f) (let ((g f)) (declare (type (function (fixnum)) f)) (funcall g nil))) And this should probably signal an error (?). -- Regards, Alexey Dejneka |