2 ms·
(declaim (ftype (function (integer string) cons) foo)) (defun foo (a b) (list a b)) (declaim (ftype (function (integer) cons) bar)) (defun ba
by lispm 9y ago
(declaim (ftype (function (integer string) cons)
foo))
(defun foo (a b)
(list a b))
(declaim (ftype (function (integer) cons)
bar))
(defun bar (a) (foo a a))
(declaim (ftype (function (integer) integer)
baz))
(defun baz (a) (+ (foo a "b") 42))
The SBCL compiler:
in BAR: an argument of the wrong type.
; in: DEFUN BAR
; (FOO A A)
;
; note: deleting unreachable code
;
; caught WARNING:
; Derived type of A is
; (VALUES INTEGER &OPTIONAL),
; conflicting with its asserted type
; STRING.
; See also:
; The SBCL Manual, Node "Handling of Types"
in BAZ: the wrong return type
; compiling (DECLAIM (FTYPE # ...))
; compiling (DEFUN BAZ ...)
; file: /private/tmp/test.lisp
; in: DEFUN BAZ
; (+ (FOO A "b") 42)
;
; note: deleting unreachable code
;
; caught WARNING:
; Derived type of (FOO A "b") is
; (VALUES CONS &REST T),
; conflicting with its asserted type
; NUMBER.
; See also:
; The SBCL Manual, Node "Handling of Types"