consequent uses no arguments correctly.
** the system has a partial understanding of the (COMPLEX RATIO)
type specifier.
+ ** UPGRADED-COMPLEX-PART-TYPE obeys the lattice upgrading rules
+ required.
changes in sbcl-0.8.17 relative to sbcl-0.8.16:
* new feature: a build-time option (controlled by the :SB-UNICODE
"Return the element type of the most specialized COMPLEX number type that
can hold parts of type SPEC."
(declare (ignore environment))
- (if (unknown-type-p (specifier-type spec))
- (error "undefined type: ~S" spec)
- (let ((ctype (specifier-type `(complex ,spec))))
- (cond
- ((eq ctype *empty-type*) '(eql 0))
- ((csubtypep ctype (specifier-type '(complex single-float)))
- 'single-float)
- ((csubtypep ctype (specifier-type '(complex double-float)))
- 'double-float)
- #!+long-float
- ((csubtypep ctype (specifier-type '(complex long-float)))
- 'long-float)
- ((csubtypep ctype (specifier-type '(complex rational)))
- 'rational)
- (t 'real)))))
+ (let ((type (specifier-type spec)))
+ (cond
+ ((eq type *empty-type*) nil)
+ ((unknown-type-p type) (error "undefined type: ~S" spec))
+ (t
+ (let ((ctype (specifier-type `(complex ,spec))))
+ (cond
+ ((eq ctype *empty-type*) '(eql 0))
+ ((csubtypep ctype (specifier-type '(complex single-float)))
+ 'single-float)
+ ((csubtypep ctype (specifier-type '(complex double-float)))
+ 'double-float)
+ #!+long-float
+ ((csubtypep ctype (specifier-type '(complex long-float)))
+ 'long-float)
+ ((csubtypep ctype (specifier-type '(complex rational)))
+ 'rational)
+ (t 'real)))))))
;;; Return the most specific integer type that can be quickly checked that
;;; includes the given type.
;;; 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".)
-"0.8.17.16"
+"0.8.17.17"