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

comp-cstr.el: Fix a minor error and prepare for upcoming changes

* lisp/emacs-lisp/comp-cstr.el (comp--cl-class-hierarchy): Add `atom`
and `t` only to those types whose "allparents" is clearly not complete.
(comp--compute--pred-type-h): Store the cstr rather than the type
in the hash-table, as expected by `comp--pred-to-cstr`.
This commit is contained in:
Stefan Monnier 2024-03-07 16:56:42 -05:00
parent e4d1739a29
commit 9830421e96

View file

@ -89,12 +89,15 @@ Integer values are handled in the `range' slot.")
(defun comp--cl-class-hierarchy (x)
"Given a class name `x' return its hierarchy."
`(,@(cl--class-allparents (cl--struct-get-class x))
;; FIXME: AFAICT, `comp--all-classes' will also find those struct types
;; which use :type and can thus be either `vector' or `cons' (the latter
;; isn't `atom').
atom
t))
(let ((parents (cl--class-allparents (cl--struct-get-class x))))
(if (memq t parents)
parents
`(,@parents
;; FIXME: AFAICT, `comp--all-classes' will also find those struct types
;; which use :type and can thus be either `vector' or `cons' (the latter
;; isn't `atom').
atom
t))))
(defun comp--all-classes ()
"Return all non built-in type names currently defined."
@ -114,7 +117,7 @@ Integer values are handled in the `range' slot.")
for class-name in (comp--all-classes)
for pred = (get class-name 'cl-deftype-satisfies)
when pred
do (puthash pred class-name h)
do (puthash pred (comp--type-to-cstr class-name) h)
finally return h))
(cl-defstruct comp-cstr-ctxt