X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Farray-tran.lisp;h=82b3bdb83e8ddc30d8bb4873aac03dd3c2c68659;hb=997959cc458b00ff7faae526511533d24bdc0fde;hp=efa768bdc68bb020dddb1363afb7e08eae1f1f29;hpb=0c0d8909984b5b33bb6b59b350b2d5cee6dc1715;p=sbcl.git diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp index efa768b..82b3bdb 100644 --- a/src/compiler/array-tran.lisp +++ b/src/compiler/array-tran.lisp @@ -73,7 +73,7 @@ (apply #'type-intersection element-supertypes))))) (union-type (let ((union-types (union-type-types type)) - (element-type *empty-type*) + (element-type nil) (element-supertypes nil)) (dolist (union-type union-types) (multiple-value-bind (cur-type cur-supertype) @@ -81,7 +81,7 @@ (cond ((eq element-type *wild-type*) nil) - ((eq element-type *empty-type*) + ((eq element-type nil) (setf element-type cur-type)) ((or (eq cur-type *wild-type*) ;; If each of the two following tests fail, it is not @@ -337,8 +337,9 @@ ;;; can pick them apart in the DEFTRANSFORMS, and transform '(3) style ;;; dimensions to integer args directly. (define-source-transform make-array (dimensions &rest keyargs &environment env) - (if (and (fun-lexically-notinline-p 'list) - (fun-lexically-notinline-p 'vector)) + (if (or (and (fun-lexically-notinline-p 'list) + (fun-lexically-notinline-p 'vector)) + (oddp (length keyargs))) (values nil t) (multiple-value-bind (new-dimensions rank) (flet ((constant-dims (dimensions)