mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
Fix the bootstrap differently, so zerop can be where it belongs
Suggested by Robert Pluim <rpluim@gmail.com>. * lisp/emacs-lisp/byte-run.el (defun-declarations-alist): Avoid cadr/cddr. * lisp/subr.el (zerop): Un-revert 2018-07-10T23:08:58-07:00!contovob@tcd.ie.
This commit is contained in:
parent
84e5986902
commit
aeefbc41be
2 changed files with 13 additions and 13 deletions
|
|
@ -116,7 +116,10 @@ If `error-free', drop calls even if `byte-compile-delete-errors' is nil.")
|
|||
(if (not (eq (car-safe compiler-function) 'lambda))
|
||||
`(eval-and-compile
|
||||
(function-put ',f 'compiler-macro #',compiler-function))
|
||||
(let ((cfname (intern (concat (symbol-name f) "--anon-cmacro"))))
|
||||
(let ((cfname (intern (concat (symbol-name f) "--anon-cmacro")))
|
||||
;; Avoid cadr/cddr so we can use `compiler-macro' before
|
||||
;; defining cadr/cddr.
|
||||
(data (cdr compiler-function)))
|
||||
`(progn
|
||||
(eval-and-compile
|
||||
(function-put ',f 'compiler-macro #',cfname))
|
||||
|
|
@ -125,8 +128,8 @@ If `error-free', drop calls even if `byte-compile-delete-errors' is nil.")
|
|||
;; if needed.
|
||||
:autoload-end
|
||||
(eval-and-compile
|
||||
(defun ,cfname (,@(cadr compiler-function) ,@args)
|
||||
,@(cddr compiler-function))))))))
|
||||
(defun ,cfname (,@(car data) ,@args)
|
||||
,@(cdr data))))))))
|
||||
(list 'doc-string
|
||||
#'(lambda (f _args pos)
|
||||
(list 'function-put (list 'quote f)
|
||||
|
|
|
|||
17
lisp/subr.el
17
lisp/subr.el
|
|
@ -359,6 +359,13 @@ was called."
|
|||
(lambda (&rest args2)
|
||||
(apply fun (append args args2))))
|
||||
|
||||
(defun zerop (number)
|
||||
"Return t if NUMBER is zero."
|
||||
;; Used to be in C, but it's pointless since (= 0 n) is faster anyway because
|
||||
;; = has a byte-code.
|
||||
(declare (compiler-macro (lambda (_) `(= 0 ,number))))
|
||||
(= 0 number))
|
||||
|
||||
|
||||
;;;; List functions.
|
||||
|
||||
|
|
@ -548,16 +555,6 @@ If N is omitted or nil, remove the last element."
|
|||
(if (> n 0) (setcdr (nthcdr (- (1- m) n) list) nil))
|
||||
list))))
|
||||
|
||||
;; This function appears here instead of under the 'Basic Lisp
|
||||
;; functions' heading because during bootstrap its compiler-macro
|
||||
;; requires functions defined under the 'List functions' heading.
|
||||
(defun zerop (number)
|
||||
"Return t if NUMBER is zero."
|
||||
;; Used to be in C, but it's pointless since (= 0 n) is faster anyway because
|
||||
;; = has a byte-code.
|
||||
(declare (compiler-macro (lambda (_) `(= 0 ,number))))
|
||||
(= 0 number))
|
||||
|
||||
(defun proper-list-p (object)
|
||||
"Return OBJECT's length if it is a proper list, nil otherwise.
|
||||
A proper list is neither circular nor dotted (i.e., its last cdr
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue