(assert (type= (specifier-type 'cons)
(type-intersection (specifier-type 'sequence)
(specifier-type '(or cons number)))))
+(assert (type= (specifier-type '(simple-array character (*)))
+ (type-intersection (specifier-type 'sequence)
+ (specifier-type '(simple-array character)))))
+(assert (type= (specifier-type 'list)
+ (type-intersection (specifier-type 'sequence)
+ (specifier-type 'list))))
(assert (eql *empty-type*
(type-intersection (specifier-type '(satisfies keywordp))
*empty-type*)))
(type-union (specifier-type 'cons) (specifier-type 'null))))
(assert (type= (specifier-type 'list)
(type-union (specifier-type 'null) (specifier-type 'cons))))
+#+nil ; not any more
(assert (type= (specifier-type 'sequence)
(type-union (specifier-type 'list) (specifier-type 'vector))))
+#+nil ; not any more
(assert (type= (specifier-type 'sequence)
(type-union (specifier-type 'vector) (specifier-type 'list))))
(assert (type= (specifier-type 'list)
(sb-xc:subtypep '(function) '(function (t &rest t)))
(assert (not yes))
(assert win))
+;; Used to run out of stack.
+(multiple-value-bind (yes win)
+ (sb-xc:subtypep 'null '(or unk0 unk1))
+ (assert (not yes))
+ (assert (not win)))
(multiple-value-bind (yes win)
(sb-xc:subtypep '(and function instance) nil)
(assert yes)
(assert win))
+(assert (type= (specifier-type 'nil)
+ (specifier-type '(and symbol funcallable-instance))))
(/show "done with tests/type.before-xc.lisp")