X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftypecheckfuns.lisp;h=eeaeb0ab4a45199df415348f4d51b1a901192a97;hb=93c8158fd4996e2a7184eb0f8d63812a7bc2562c;hp=92adc902ee1bda9dc8c8588ab0fc1a211d1917b5;hpb=2d3cb6dba6461e98744eca2a1df4f770cea468ca;p=sbcl.git diff --git a/src/code/typecheckfuns.lisp b/src/code/typecheckfuns.lisp index 92adc90..eeaeb0a 100644 --- a/src/code/typecheckfuns.lisp +++ b/src/code/typecheckfuns.lisp @@ -122,7 +122,7 @@ ;;; Memoize the FORM which returns a typecheckfun for TYPESPEC. (defmacro memoized-typecheckfun-form (form typespec) - (let ((n-typespec (gensym "TYPESPEC"))) + (with-unique-names (n-typespec) `(let ((,n-typespec ,typespec)) (or (gethash ,n-typespec *typecheckfuns*) (setf (gethash ,n-typespec *typecheckfuns*) @@ -199,7 +199,11 @@ (member-type-p ctype) (numeric-type-p ctype) (array-type-p ctype) - (cons-type-p ctype)))) + (cons-type-p ctype) + (intersection-type-p ctype) + (union-type-p ctype) + (negation-type-p ctype) + (character-set-type-p ctype)))) ;;; Evaluate (at load/execute time) to a function which checks that ;;; its argument is of the specified type. @@ -207,7 +211,7 @@ ;;; The name is slightly misleading, since some cases are memoized, so ;;; we might reuse a value which was made earlier instead of creating ;;; a new one from scratch. -(declaim (ftype (function (t) function) typespec-typecheckfun)) +(declaim (ftype (sfunction (t) function) typespec-typecheckfun)) (defun typespec-typecheckfun (typespec) ;; a general-purpose default case, hopefully overridden by the ;; DEFINE-COMPILER-MACRO implementation