X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fearly-type.lisp;h=6bc004ef62d06d79b4b6c2af12c8c4c6781344ab;hb=7e24349c17298e2959e853ea411b5f65d9f7f332;hp=31f05ae0d159e06baf7ec0eccbe1c5bb2319cb46;hpb=9dfd024c6fe1337ae7b76f0fd68b8f3208a6c987;p=sbcl.git diff --git a/src/code/early-type.lisp b/src/code/early-type.lisp index 31f05ae..6bc004e 100644 --- a/src/code/early-type.lisp +++ b/src/code/early-type.lisp @@ -221,10 +221,15 @@ ;; specifier to win. (type (missing-arg) :type ctype)) -;;; The NAMED-TYPE is used to represent *, T and NIL. These types must -;;; be super- or sub-types of all types, not just classes and * and -;;; NIL aren't classes anyway, so it wouldn't make much sense to make -;;; them built-in classes. +;;; The NAMED-TYPE is used to represent *, T and NIL, the standard +;;; special cases, as well as other special cases needed to +;;; interpolate between regions of the type hierarchy, such as +;;; INSTANCE (which corresponds to all those classes with slots which +;;; are not funcallable), FUNCALLABLE-INSTANCE (those classes with +;;; slots which are funcallable) and EXTENDED-SEQUUENCE (non-LIST +;;; non-VECTOR classes which are also sequences). These special cases +;;; are the ones that aren't really discussed by Baker in his +;;; "Decision Procedure for SUBTYPEP" paper. (defstruct (named-type (:include ctype (class-info (type-class-or-lose 'named))) (:copier nil)) @@ -530,11 +535,6 @@ ((eq (info :type :kind spec) :instance) (find-classoid spec)) ((typep spec 'classoid) - ;; There doesn't seem to be any way to translate - ;; (TYPEP SPEC 'BUILT-IN-CLASS) into something which can be - ;; executed on the host Common Lisp at cross-compilation time. - #+sb-xc-host (error - "stub: (TYPEP SPEC 'BUILT-IN-CLASS) on xc host") (if (typep spec 'built-in-classoid) (or (built-in-classoid-translation spec) spec) spec))