APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1314180401 -3600
# Node ID 62edcc6a11ecf12eabdf78eff45e444431391223
# Parent b908c7265a2b98c3dcb5bbc4edecd5c9a158fc02
Add an assertion about argument order to #'apply-partially compiler macro
lisp/ChangeLog addition:
2011-08-24 Aidan Kehoe <kehoea(a)parhasard.net>
* 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.
tests/ChangeLog addition:
2011-08-24 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/lisp-tests.el:
Add a test of apply partially that depends on the relative order
of its arguments.
diff -r b908c7265a2b -r 62edcc6a11ec lisp/ChangeLog
--- a/lisp/ChangeLog Fri Aug 12 16:02:30 2011 +0100
+++ b/lisp/ChangeLog Wed Aug 24 11:06:41 2011 +0100
@@ -1,3 +1,11 @@
+2011-08-24 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * 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 <kehoea(a)parhasard.net>
* cl-macs.el:
diff -r b908c7265a2b -r 62edcc6a11ec lisp/cl-macs.el
--- a/lisp/cl-macs.el Fri Aug 12 16:02:30 2011 +0100
+++ b/lisp/cl-macs.el Wed Aug 24 11:06:41 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 b908c7265a2b -r 62edcc6a11ec tests/ChangeLog
--- a/tests/ChangeLog Fri Aug 12 16:02:30 2011 +0100
+++ b/tests/ChangeLog Wed Aug 24 11:06:41 2011 +0100
@@ -1,3 +1,9 @@
+2011-08-24 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * automated/lisp-tests.el:
+ Add a test of apply partially that depends on the relative order
+ of its arguments.
+
2011-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/lisp-tests.el:
diff -r b908c7265a2b -r 62edcc6a11ec tests/automated/lisp-tests.el
--- a/tests/automated/lisp-tests.el Fri Aug 12 16:02:30 2011 +0100
+++ b/tests/automated/lisp-tests.el Wed Aug 24 11:06:41 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
--
‘Iodine deficiency was endemic in parts of the UK until, through what has been
described as “an unplanned and accidental public health triumph”, iodine was
added to cattle feed to improve milk production in the 1930s.’
(EN Pearce, Lancet, June 2011)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches