DST is returned."
(with-comp-cstr-accessors
(apply #'comp-cstr-intersection dst srcs)
- (let (strip-values strip-types)
- (cl-loop for v in (valset dst)
- unless (or (symbolp v)
- (fixnump v))
- do (push v strip-values)
- (push (type-of v) strip-types))
- (when strip-values
- (setf (typeset dst) (comp-union-typesets (typeset dst) strip-types)
- (valset dst) (cl-set-difference (valset dst) strip-values)))
- (cl-loop for (l . h) in (range dst)
- when (or (bignump l) (bignump h))
+ (if (and (neg dst)
+ (valset dst)
+ (cl-notevery #'symbolp (valset dst)))
+ (setf (valset dst) ()
+ (typeset dst) '(t)
+ (range dst) ()
+ (neg dst) nil)
+ (let (strip-values strip-types)
+ (cl-loop for v in (valset dst)
+ unless (symbolp v)
+ do (push v strip-values)
+ (push (type-of v) strip-types))
+ (when strip-values
+ (setf (typeset dst) (comp-union-typesets (typeset dst) strip-types)
+ (valset dst) (cl-set-difference (valset dst) strip-values)))
+ (cl-loop for (l . h) in (range dst)
+ when (or (bignump l) (bignump h))
do (setf (range dst) '((- . +)))
- (cl-return))
- dst)))
+ (cl-return))))
+ dst))
(defun comp-cstr-intersection-make (&rest srcs)
"Combine SRCS by intersection set operation and return a new constraint."
(unless (eql x -0.0)
(error ""))
x)
- float)))
+ float)
+
+ ;; 73
+ ((defun comp-tests-ret-type-spec-f (x)
+ (when (eql x 1.0)
+ (error ""))
+ x)
+ t)))
(defun comp-tests-define-type-spec-test (number x)
`(comp-deftest ,(intern (format "ret-type-spec-%d" number)) ()