mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 22:41:06 -08:00
cl-types: The big renaming to "derived types"
`cl-defstruct` also defines a type and is also in CL, so "cl-type" is not precise enough to talk about those types defined with `cl-deftype`. Use the term "derived type" to be more clear, as is done in the HyperSpec. * doc/misc/cl.texi (Derived types): Move `cl-deftype` to this new subsection. Document the use of derived types as method specializers. * lisp/emacs-lisp/cl-extra.el (cl--types-of-memo): Rename from `cl--type-unique`. (cl--derived-type-dispatch-list): Rename from `cl--type-dispatch-list`. (cl--derived-type-generalizer): Rename from `cl--type-generalizer`. (cl--derived-type-generalizers): Rename from `cl--type-generalizers`. * lisp/emacs-lisp/cl-lib.el (cl-generic-generalizers) <derived-types>: Rename from <cl-types-of>. Catch but don't hide errors when a derived type cannot be used as an atomic type specifier. * lisp/emacs-lisp/cl-preloaded.el (cl--derived-type-list): Rename from `cl--type-list`. (cl-derived-type-class): Rename from `cl-type-class`. (cl--derived-type-class-make): Rename from `cl--type-class-make`. (cl--define-derived-type): Rename from `cl--type-deftype`.
This commit is contained in:
parent
f6f35644b7
commit
b13044dae3
5 changed files with 73 additions and 49 deletions
|
|
@ -3785,7 +3785,7 @@ macro that returns its `&whole' argument."
|
|||
|
||||
;;;###autoload
|
||||
(defmacro cl-deftype (name arglist &rest body)
|
||||
"Define NAME as a new data type.
|
||||
"Define NAME as a new, so-called derived type.
|
||||
The type NAME can then be used in `cl-typecase', `cl-check-type',
|
||||
etc., and to some extent, as method specializer.
|
||||
|
||||
|
|
@ -3816,20 +3816,15 @@ If PARENTS is non-nil, ARGLIST must be nil."
|
|||
(cl-callf (lambda (x) (delq declares x)) decls)))
|
||||
(and parents arglist
|
||||
(error "Parents specified, but arglist not empty"))
|
||||
`(eval-and-compile ;;cl-eval-when (compile load eval)
|
||||
;; FIXME: Where should `cl--type-deftype' go? Currently, code
|
||||
;; using `cl-deftype' can use (eval-when-compile (require
|
||||
;; 'cl-lib)), so `cl--type-deftype' needs to go either to
|
||||
;; `cl-preloaded.el' or it should be autoloaded even when
|
||||
;; `cl-lib' is not loaded.
|
||||
(cl--type-deftype ',name ',parents ',arglist ,docstring)
|
||||
`(eval-and-compile
|
||||
(cl--define-derived-type ',name ',parents ',arglist ,docstring)
|
||||
(define-symbol-prop ',name 'cl-deftype-handler
|
||||
(cl-function
|
||||
(lambda (&cl-defs ('*) ,@arglist)
|
||||
,@decls
|
||||
,@forms))))))
|
||||
|
||||
(static-if (not (fboundp 'cl--type-deftype))
|
||||
(static-if (not (fboundp 'cl--define-derived-type))
|
||||
nil ;; Can't define it yet!
|
||||
(cl-deftype extended-char () '(and character (not base-char))))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue