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:
parent
e4d1739a29
commit
9830421e96
1 changed files with 10 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue