0.8.9.6.netbsd.2:
[sbcl.git] / src / code / type-class.lisp
index b703a60..fcd4706 100644 (file)
@@ -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)
       (: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
 ;;; 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