Fix negation of SIMD-PACK types
[sbcl.git] / src / code / late-type.lisp
index 481a843..04a93f2 100644 (file)
          *empty-type*)
         ((not (values-type-p type))
          type)
-        (t (or (car (args-type-required type))
-               (car (args-type-optional type))
-               (args-type-rest type)
-               (specifier-type 'null)))))
+        ((car (args-type-required type)))
+        (t (type-union (specifier-type 'null)
+                       (or (car (args-type-optional type))
+                           (args-type-rest type)
+                           (specifier-type 'null))))))
 
 ;;; Return the minimum number of arguments that a function can be
 ;;; called with, and the maximum number or NIL. If not a function
@@ -3509,7 +3510,7 @@ used for a COMPLEX component.~:@>"
                                       (simd-pack-type-element-type type)))
            (not-simd-pack (make-negation-type :type (specifier-type 'simd-pack))))
        (if remaining
-           (type-union2 not-simd-pack (%make-simd-pack-type remaining))
+           (type-union not-simd-pack (%make-simd-pack-type remaining))
            not-simd-pack)))
 
   (!define-type-method (simd-pack :unparse) (type)