0.8.17.17:
[sbcl.git] / src / compiler / generic / vm-type.lisp
index 6c9658e..85c1b0b 100644 (file)
   "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.