X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Falien-type.lisp;h=86b7121c08c1bf28ff4f3c861d1ce2e869715f5a;hb=b63c81837c2eae7bcf3b09911f68ba62d102b63d;hp=40e3ea14fd4eab59e7691f6b12c82dcb81f195dd;hpb=77360ee4a1f94c41b807be7ad0e8687199fceef1;p=sbcl.git diff --git a/src/code/alien-type.lisp b/src/code/alien-type.lisp index 40e3ea1..86b7121 100644 --- a/src/code/alien-type.lisp +++ b/src/code/alien-type.lisp @@ -13,12 +13,15 @@ (in-package "SB!KERNEL") +(/show0 "code/alien-type.lisp 16") + (!begin-collecting-cold-init-forms) (defstruct (alien-type-type (:include ctype (class-info (type-class-or-lose 'alien))) - (:constructor %make-alien-type-type (alien-type))) + (:constructor %make-alien-type-type (alien-type)) + (:copier nil)) (alien-type nil :type alien-type)) (!define-type-class alien) @@ -35,11 +38,6 @@ ;;; others (toplevel form time instead of cold load init time) because ;;; ALIEN-VALUE itself is a structure which isn't defined until fairly ;;; late. -;;; -;;; FIXME: I'm somewhat tempted to just punt ALIEN from the type system. -;;; It's sufficiently unlike the others that it's a bit of a pain, and -;;; it doesn't seem to be put to any good use either in type inference or -;;; in type declarations. (!define-superclasses alien ((alien-value)) progn) (!define-type-method (alien :simple-=) (type1 type2) @@ -62,8 +60,10 @@ (if alien-type (let ((lisp-rep-type (compute-lisp-rep-type alien-type))) (if lisp-rep-type - (specifier-type lisp-rep-type) + (single-value-specifier-type lisp-rep-type) (%make-alien-type-type alien-type))) *universal-type*)) (!defun-from-collected-cold-init-forms !alien-type-cold-init) + +(/show0 "code/alien-type.lisp end of file")