(assert (subtypep 'complex '(complex real)))
(assert (subtypep '(complex real) 'complex))
(assert (subtypep '(complex (eql 1)) '(complex (member 1 2))))
+(assert (subtypep '(complex ratio) '(complex rational)))
+(assert (subtypep '(complex ratio) 'complex))
(assert (equal (multiple-value-list
(subtypep '(complex (integer 1 2))
'(member #c(1 1) #c(1 2) #c(2 1) #c(2 2))))
'(real #.(ash -1 10000) #.(ash 1 10000))))
(assert (subtypep '(real (#.(ash -1 1000)) (#.(ash 1 1000)))
'(real #.(ash -1 1000) #.(ash 1 1000))))
+
+;;; Bug, found by Paul F. Dietz
+(let* ((x (eval #c(-1 1/2)))
+ (type (type-of x)))
+ (assert (subtypep type '(complex rational)))
+ (assert (typep x type)))