(reported by Attila Lendvai; launchpad bug #310132)
* bug fix: distinguish in type specifiers between arrays that might be
complex and arrays that are definitely complex. (launchpad bug #309129)
+ * bug fix: SUBTYPEP knows that the SYMBOL type is not SUBTYPEP the KEYWORD
+ type. (reported by Levente Mészáros; launchpad bug #485972)
changes in sbcl-1.0.32 relative to sbcl-1.0.31:
* optimization: faster FIND and POSITION on strings of unknown element type
(values nil nil)))))
(!define-type-method (hairy :complex-subtypep-arg2) (type1 type2)
- (invoke-complex-subtypep-arg1-method type1 type2))
+ (let ((specifier (hairy-type-specifier type2)))
+ (cond
+ ((and (consp specifier) (eql (car specifier) 'satisfies))
+ (case (cadr specifier)
+ ((keywordp) (if (type= type1 (specifier-type 'symbol))
+ (values nil t)
+ (invoke-complex-subtypep-arg1-method type1 type2)))
+ (t (invoke-complex-subtypep-arg1-method type1 type2))))
+ (t (invoke-complex-subtypep-arg1-method type1 type2)))))
(!define-type-method (hairy :complex-subtypep-arg1) (type1 type2)
(declare (ignore type1 type2))
(let ((i (sb-c::values-type-intersection x y)))
(assert (sb-c::type= i (sb-c::values-type-intersection i x)))
(assert (sb-c::type= i (sb-c::values-type-intersection i y))))))))
+
+(with-test (:name :bug-485972)
+ (assert (equal (multiple-value-list (subtypep 'symbol 'keyword)) '(nil t)))
+ (assert (equal (multiple-value-list (subtypep 'keyword 'symbol)) '(t t))))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.32.35"
+"1.0.32.36"