Skip to content

Commit

Permalink
Fix inverted logic in constraint comparison (bug#46540)
Browse files Browse the repository at this point in the history
	* lisp/emacs-lisp/comp-cstr.el (comp-cstr->, comp-cstr->=)
	(comp-cstr-<, comp-cstr-<=): Fix inverted logic.
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Add
	three integer constrain tests.
  • Loading branch information
AndreaCorallo committed Feb 17, 2021
1 parent 0d7c893 commit 1fe5994
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
8 changes: 4 additions & 4 deletions lisp/emacs-lisp/comp-cstr.el
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@ SRC can be either a comp-cstr or an integer."
(if (integerp src)
`((,(1+ src) . +))
(when-let* ((range (range src))
(low (comp-cstr-greatest-in-range range))
(low (comp-cstr-smallest-in-range range))
(okay (integerp low)))
`((,(1+ low) . +))))))
(comp-cstr-set-cmp-range dst old-dst ext-range))))
Expand All @@ -804,7 +804,7 @@ SRC can be either a comp-cstr or an integer."
(if (integerp src)
`((,src . +))
(when-let* ((range (range src))
(low (comp-cstr-greatest-in-range range))
(low (comp-cstr-smallest-in-range range))
(okay (integerp low)))
`((,low . +))))))
(comp-cstr-set-cmp-range dst old-dst ext-range))))
Expand All @@ -817,7 +817,7 @@ SRC can be either a comp-cstr or an integer."
(if (integerp src)
`((- . ,(1- src)))
(when-let* ((range (range src))
(low (comp-cstr-smallest-in-range range))
(low (comp-cstr-greatest-in-range range))
(okay (integerp low)))
`((- . ,(1- low)))))))
(comp-cstr-set-cmp-range dst old-dst ext-range))))
Expand All @@ -830,7 +830,7 @@ SRC can be either a comp-cstr or an integer."
(if (integerp src)
`((- . ,src))
(when-let* ((range (range src))
(low (comp-cstr-smallest-in-range range))
(low (comp-cstr-greatest-in-range range))
(okay (integerp low)))
`((- . ,low))))))
(comp-cstr-set-cmp-range dst old-dst ext-range))))
Expand Down
29 changes: 28 additions & 1 deletion test/src/comp-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -1211,7 +1211,34 @@ Return a list of results."
(= x 3))
(error "Not foo or 3"))
x)
(or (member foo) (integer 3 3)))))
(or (member foo) (integer 3 3)))

;;58
((defun comp-tests-ret-type-spec-f (x y)
(if (and (natnump x)
(natnump y)
(<= x y))
x
(error "")))
(integer 0 *))

;; 59
((defun comp-tests-ret-type-spec-f (x y)
(if (and (>= x 3)
(<= y 10)
(<= x y))
x
(error "")))
(or float (integer 3 10)))

;; 60
((defun comp-tests-ret-type-spec-f (x y)
(if (and (<= x 10)
(>= y 3)
(>= x y))
x
(error "")))
(or float (integer 3 10)))))

(defun comp-tests-define-type-spec-test (number x)
`(comp-deftest ,(intern (format "ret-type-spec-%d" number)) ()
Expand Down

0 comments on commit 1fe5994

Please sign in to comment.