X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftype-class.lisp;h=fcd47069489fc4026a9a064d61bf626cf130785b;hb=e801083c864fa8f11d79be53a5d95584c960f2b3;hp=b703a60759d24f1d00a7dd20c7e57c2d459a099f;hpb=3a8bfcb01abe4d8eeb9ef1343d623dbbf57c19d9;p=sbcl.git diff --git a/src/code/type-class.lisp b/src/code/type-class.lisp index b703a60..fcd4706 100644 --- a/src/code/type-class.lisp +++ b/src/code/type-class.lisp @@ -85,6 +85,8 @@ (complex-intersection2 nil :type (or function null)) (simple-= #'must-supply-this :type function) (complex-= nil :type (or function null)) + ;; monadic functions + (negate #'must-supply-this :type function) ;; a function which returns a Common Lisp type specifier ;; representing this type (unparse #'must-supply-this :type function) @@ -120,10 +122,11 @@ (:complex-intersection2 . type-class-complex-intersection2) (:simple-= . type-class-simple-=) (:complex-= . type-class-complex-=) + (:negate . type-class-negate) (:unparse . type-class-unparse)))) -(eval-when (:compile-toplevel :load-toplevel :execute) - +(declaim (ftype (function (type-class) type-class) copy-type-class-coldly)) +(eval-when (#-sb-xc :compile-toplevel :load-toplevel :execute) ;;; Copy TYPE-CLASS object X, using only operations which will work ;;; early in cold load. (COPY-STRUCTURE won't work early in cold load, ;;; because it needs RAW-INDEX and RAW-LENGTH information from @@ -147,7 +150,6 @@ ;;; the positive effect of removing indirection could be cancelled by ;;; the negative effect of imposing an unnecessary GC write barrier on ;;; raw data which doesn't actually affect GC.) -(declaim (ftype (function (type-class) type-class) copy-type-class-coldly)) (defun copy-type-class-coldly (x) ;; KLUDGE: If the slots of TYPE-CLASS ever change in a way not ;; reflected in *TYPE-CLASS-FUN-SLOTS*, the slots here will