X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fearly-type.lisp;h=bbb75ba39ddc0dbd558fc20bd3886199e13805aa;hb=b7a8f5313a83dea33ce60551a4fb987b415c2cc6;hp=9999bffc76006b2438b594f69b75628d6512eb13;hpb=8871a1f72225f959a454a1b77f7a0e85642ba427;p=sbcl.git diff --git a/src/code/early-type.lisp b/src/code/early-type.lisp index 9999bff..bbb75ba 100644 --- a/src/code/early-type.lisp +++ b/src/code/early-type.lisp @@ -139,8 +139,6 @@ :rest rest :allowp allowp)) -;;; FIXME: ANSI VALUES has a short form (without lambda list -;;; keywords), which should be translated into a long one. (defun make-values-type (&key (args nil argsp) required optional rest allowp) (if argsp @@ -175,7 +173,14 @@ ;;; (SPECIFIER-TYPE 'FUNCTION) and its subtypes (defstruct (fun-type (:include args-type (class-info (type-class-or-lose 'function))) - (:constructor %make-fun-type)) + (:constructor + %make-fun-type (&key required optional rest + keyp keywords allowp + wild-args + returns + &aux (rest (if (eq rest *empty-type*) + nil + rest))))) ;; true if the arguments are unrestrictive, i.e. * (wild-args nil :type boolean) ;; type describing the return values. This is a values type