1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 22:41:06 -08:00

Fix comp branch-optim pass (bug#73270)

* test/src/comp-tests.el (comp-test-73270-1): Define new test.
* test/src/comp-resources/comp-test-funcs.el (comp-test-73270-base)
(comp-test-73270-child1, comp-test-73270-child2)
(comp-test-73270-child3, comp-test-73270-child4)
(comp-test-73270-1-f): Define.
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-type-p): Fix it for nil cstrs.
This commit is contained in:
Andrea Corallo 2024-10-15 15:30:49 +02:00
parent 358b38bc17
commit cd739d3644
3 changed files with 27 additions and 3 deletions

View file

@ -950,9 +950,12 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
(if-let ((pred (get type 'cl-deftype-satisfies)))
(and (null (range cstr))
(null (neg cstr))
(and (or (null (typeset cstr))
(equal (typeset cstr) `(,type)))
(cl-every pred (valset cstr))))
(if (null (typeset cstr))
(and (valset cstr)
(cl-every pred (valset cstr)))
(when (equal (typeset cstr) `(,type))
;; (valset cstr) can be nil as well.
(cl-every pred (valset cstr)))))
(error "Unknown predicate for type %s" type)))))
t))