X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Ftypedefs.lisp;h=6169aceafbb13bed42ab32a14ea34138c927dbd5;hb=e43ebe3057bd62a58987b22f53c386ca7f5740f8;hp=bcbfecea2be2161a06f4a08d6c116eece6e23be0;hpb=2c6b90e36a7c0377cd79625eb6c94d580f98cb93;p=sbcl.git diff --git a/src/code/typedefs.lisp b/src/code/typedefs.lisp index bcbfece..6169ace 100644 --- a/src/code/typedefs.lisp +++ b/src/code/typedefs.lisp @@ -69,7 +69,7 @@ ;; named TYPE-CLASS-INFO which is an accessor for the CTYPE structure ;; even though the TYPE-CLASS structure also exists in the system. ;; Rename this slot: TYPE-CLASS or ASSOCIATED-TYPE-CLASS or something. - (class-info (required-argument) :type type-class) + (class-info (missing-arg) :type type-class) ;; True if this type has a fixed number of members, and as such ;; could possibly be completely specified in a MEMBER type. This is ;; used by the MEMBER type methods. @@ -78,7 +78,17 @@ ;; (since EQ hashing can't be done portably) (hash-value (random (1+ most-positive-fixnum)) :type (and fixnum unsigned-byte) - :read-only t)) + :read-only t) + ;; Can this object contain other types? A global property of our + ;; implementation (which unfortunately seems impossible to enforce + ;; with assertions or other in-the-code checks and constraints) is + ;; that subclasses which don't contain other types correspond to + ;; disjoint subsets (except of course for the NAMED-TYPE T, which + ;; covers everything). So NUMBER-TYPE is disjoint from CONS-TYPE is + ;; is disjoint from MEMBER-TYPE and so forth. But types which can + ;; contain other types, like HAIRY-TYPE and INTERSECTION-TYPE, can + ;; violate this rule. + (might-contain-other-types-p nil :read-only t)) (def!method print-object ((ctype ctype) stream) (print-unreadable-object (ctype stream :type t) (prin1 (type-specifier ctype) stream)))