remove entries whose car can't be returned by type-of.
(cl--generic-all-builtin-types): New var.
(cl-generic-generalizers): Use it to avoid requiring
extra entries in cl--generic-typeof-types.
* lisp/emacs-lisp/cl-extra.el (cl-get, cl-getf, cl--set-getf): Use
`plist-member' instead of explicit loop.
* test/lisp/emacs-lisp/cl-extra-tests.el: New tests.
* lisp/emacs-lisp/elint.el: Quote entry point commands in commentary.
(elint-running, elint-current-pos): Move these dynamic vars to toward
the top of the file.
(elint-check-quote-form): Ignore unused argument.
(elint-check-conditional-form): Remove unused binding.
* lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode): Don't do
redundant operations while calculating the correct jump addresses
from TAGs in jump tables.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): While merging
adjacent tags, make sure that the old tag is replaced in all jump
tables, if any. This fixes the bytecode VM jumping to the wrong
address in compiled cond forms where the body of a clause was a loop
of any sort.
* lisp/emacs-lisp/byte-opt.el,
lisp/emacs-lisp/bytecomp.el (byte-decompile-bytecode-1),
(byte-compile-lapcode): Calculate the actual jump address while
compiling, store it in the jump table.
* src/bytecode.c: Jump to the looked up value directly, do a linear
search when the number of elements is <= 5.
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-vars): Use
(macroexp-cons-p) instead of (byte-compile-cond-valid-obj2-p) to
make sure that obj1/obj2 can be compared with `eq'.
* lisp/emacs-lisp/bytecomp.el (byte-compile-inline-lapcode):
Restore value of byte-compile-depth after emitting a jump to a tag
in a jump table, or default/done tags.
Set the depth of final tags for byte-switch to nil after emitting
any jumps to them.
* lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1):
Don't make a copy of the constant vector, as it isn't used with
the decompiled lapcode.
Make sure that the correct lapcode pair/list is being modified while
replacing the jump table.
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-valid-obj2-p) return
nil when OBJ is a non-keyword symbol (i.e a variable), as the jump
table can only be used when comparing variables with constant values.
* lisp/emacs-lisp/edebug.el (edebug-max-depth): Add defcustom.
(Bug#24713)
* etc/NEWS: Mention edebug-max-depth.
* doc/lispref/edebug.texi (Checking Whether to Stop): Mention
edebug-max-depth and index it. Add cross-references for
max-lisp-eval-depth and max-specpdl-size.
Co-authored-by: Eli Zaretskii <eliz@gnu.org>
Make the existing if-let and when-let aliases.
* lisp/emacs-lisp/subr-x.el (if-let*, when-let*): New macros. Rewrite
docstrings, incorporating that from let* and the existing if-let.
(if-let, when-let, and-let*): Alias them.