# HG changeset patch # User Aidan Kehoe # Date 1314180446 -3600 # Node ID a42e686a01bf8ac842742769c8362bc22db7d733 # Parent 85210c453a97ba64ed73ac5d39b343a63551e518# Parent 62edcc6a11ecf12eabdf78eff45e444431391223 Automated merge with file:///Sources/xemacs-21.5-checked-out diff -r 85210c453a97 -r a42e686a01bf lisp/ChangeLog --- a/lisp/ChangeLog Tue Aug 23 04:41:45 2011 +0900 +++ b/lisp/ChangeLog Wed Aug 24 11:07:26 2011 +0100 @@ -1,3 +1,11 @@ +2011-08-24 Aidan Kehoe + + * cl-macs.el (apply-partially): + Add an assertion to this compiler macro, requiring that the order + of the placeholders corresponding to the arguments in the + constants vector of the constructed compiled function be the same + as the order of the arguments to #'apply-partially. + 2011-08-12 Aidan Kehoe * cl-macs.el: diff -r 85210c453a97 -r a42e686a01bf lisp/cl-macs.el --- a/lisp/cl-macs.el Tue Aug 23 04:41:45 2011 +0900 +++ b/lisp/cl-macs.el Wed Aug 24 11:07:26 2011 +0100 @@ -3519,6 +3519,13 @@ (let* ((placeholders (mapcar 'quote-maybe (mapcar 'gensym args))) (compiled (byte-compile-sexp `#'(lambda (&rest args) (apply ,@placeholders args))))) + (assert (equal (intersection + (mapcar 'quote-maybe (compiled-function-constants + compiled)) + placeholders :test 'equal :stable t) + placeholders) + t "This macro requires that the relative order is the same\ +in the constants vector and in the arguments") `(make-byte-code ',(compiled-function-arglist compiled) ,(compiled-function-instructions compiled) diff -r 85210c453a97 -r a42e686a01bf tests/ChangeLog --- a/tests/ChangeLog Tue Aug 23 04:41:45 2011 +0900 +++ b/tests/ChangeLog Wed Aug 24 11:07:26 2011 +0100 @@ -1,3 +1,9 @@ +2011-08-24 Aidan Kehoe + + * automated/lisp-tests.el: + Add a test of apply partially that depends on the relative order + of its arguments. + 2011-08-12 Aidan Kehoe * automated/lisp-tests.el: diff -r 85210c453a97 -r a42e686a01bf tests/automated/lisp-tests.el --- a/tests/automated/lisp-tests.el Tue Aug 23 04:41:45 2011 +0900 +++ b/tests/automated/lisp-tests.el Wed Aug 24 11:07:26 2011 +0100 @@ -2929,10 +2929,13 @@ ;; Basic tests of #'apply-partially. (let* ((four 4) (times-four (apply-partially '* four)) - (plus-twelve (apply-partially '+ 6 (* 3 2)))) + (plus-twelve (apply-partially '+ 6 (* 3 2))) + (construct-list (apply-partially 'list (incf four) (incf four) + (incf four)))) (Assert (eql (funcall times-four 6) 24)) (Assert (eql (funcall times-four 4 4) 64)) (Assert (eql (funcall plus-twelve (funcall times-four 4) 4 4) 36)) - (Check-Error wrong-number-of-arguments (apply-partially))) + (Check-Error wrong-number-of-arguments (apply-partially)) + (Assert (equal (funcall construct-list) '(5 6 7)))) ;;; end of lisp-tests.el