Mercurial > hg > xemacs-beta
diff lisp/cl-macs.el @ 5346:b4ef3128160c
Fix some testsuite failures, #'delete, #'delq, #'remove, #'remq.
lisp/ChangeLog addition:
2011-01-23 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (delete):
* cl-macs.el (delq):
* cl-macs.el (remove):
* cl-macs.el (remq):
Don't use the compiler macro if these functions were given the
wrong number of arguments, as happens in lisp-tests.el.
* cl-seq.el (remove, remq): Removed.
I added these to subr.el, and forgot to remove them from here.
tests/ChangeLog addition:
2011-01-23 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el (test-fun):
#'delete* and friends can now throw a wrong-type-argument if
handed a non-sequence; accept this too when checking for an error
when passing a fixnum as the SEQUENCE argument.
Check #'remove*, #'remove and #'remq too.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 23 Jan 2011 13:13:54 +0000 |
parents | 174aed57a32a |
children | 38e24b8be4ea |
line wrap: on
line diff
--- a/lisp/cl-macs.el Sun Jan 23 12:47:02 2011 +0000 +++ b/lisp/cl-macs.el Sun Jan 23 13:13:54 2011 +0000 @@ -3344,42 +3344,49 @@ form)) (define-compiler-macro delete (&whole form &rest args) - (symbol-macrolet - ((not-constant '#:not-constant)) - (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) - (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) - (or (symbolp cl-const-expr-val) (fixnump cl-const-expr-val) - (characterp cl-const-expr-val))) - (cons 'delete* (cdr form)) - `(delete* ,@(cdr form) :test #'equal))))) + (if (eql 3 (length form)) + (symbol-macrolet ((not-constant '#:not-constant)) + (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) + (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) + (or (symbolp cl-const-expr-val) (fixnump cl-const-expr-val) + (characterp cl-const-expr-val))) + (cons 'delete* (cdr form)) + `(delete* ,@(cdr form) :test #'equal)))) + form)) (define-compiler-macro delq (&whole form &rest args) - (symbol-macrolet - ((not-constant '#:not-constant)) - (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) - (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) - (not (cl-non-fixnum-number-p cl-const-expr-val))) - (cons 'delete* (cdr form)) - `(delete* ,@(cdr form) :test #'eq))))) + (if (eql 3 (length form)) + (symbol-macrolet + ((not-constant '#:not-constant)) + (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) + (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) + (not (cl-non-fixnum-number-p cl-const-expr-val))) + (cons 'delete* (cdr form)) + `(delete* ,@(cdr form) :test #'eq)))) + form)) (define-compiler-macro remove (&whole form &rest args) - (symbol-macrolet - ((not-constant '#:not-constant)) - (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) - (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) - (or (symbolp cl-const-expr-val) (fixnump cl-const-expr-val) - (characterp cl-const-expr-val))) - (cons 'remove* (cdr form)) - `(remove* ,@(cdr form) :test #'equal))))) + (if (eql 3 (length form)) + (symbol-macrolet + ((not-constant '#:not-constant)) + (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) + (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) + (or (symbolp cl-const-expr-val) (fixnump cl-const-expr-val) + (characterp cl-const-expr-val))) + (cons 'remove* (cdr form)) + `(remove* ,@(cdr form) :test #'equal)))) + form)) (define-compiler-macro remq (&whole form &rest args) - (symbol-macrolet - ((not-constant '#:not-constant)) - (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) - (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) - (not (cl-non-fixnum-number-p cl-const-expr-val))) - (cons 'remove* (cdr form)) - `(remove* ,@(cdr form) :test #'eq))))) + (if (eql 3 (length form)) + (symbol-macrolet + ((not-constant '#:not-constant)) + (let ((cl-const-expr-val (cl-const-expr-val (nth 1 form) not-constant))) + (if (and (cdr form) (not (eq not-constant cl-const-expr-val)) + (not (cl-non-fixnum-number-p cl-const-expr-val))) + (cons 'remove* (cdr form)) + `(remove* ,@(cdr form) :test #'eq)))) + form)) (macrolet ((define-foo-if-compiler-macros (&rest alist)