Mercurial > hg > xemacs-beta
changeset 5265:5663ae9a8989
Warn at compile time, error at runtime, with (quote X Y), (function X Y).
lisp/ChangeLog addition:
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el (byte-compile-function-form, byte-compile-quote)
(byte-compile-quote-form):
Warn at compile time, and error at runtime, if a (quote ...) or a
(function ...) form attempts to quote more than one object.
src/ChangeLog addition:
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* eval.c (Ffunction, Fquote):
Add argument information in the arguments: () format for these two
special operators.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 16 Sep 2010 14:10:44 +0100 |
parents | 0d43872986b6 |
children | f9ec07abdbf9 |
files | lisp/ChangeLog lisp/bytecomp.el src/ChangeLog src/eval.c |
diffstat | 4 files changed, 32 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Sep 16 13:51:49 2010 +0100 +++ b/lisp/ChangeLog Thu Sep 16 14:10:44 2010 +0100 @@ -1,3 +1,10 @@ +2010-09-16 Aidan Kehoe <kehoea@parhasard.net> + + * bytecomp.el (byte-compile-function-form, byte-compile-quote) + (byte-compile-quote-form): + Warn at compile time, and error at runtime, if a (quote ...) or a + (function ...) form attempts to quote more than one object. + 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * byte-optimize.el (byte-optimize-apply): Transform (apply 'nconc
--- a/lisp/bytecomp.el Thu Sep 16 13:51:49 2010 +0100 +++ b/lisp/bytecomp.el Thu Sep 16 14:10:44 2010 +0100 @@ -3581,10 +3581,13 @@ ;; and (funcall (function foo)) will lose with autoloads. (defun byte-compile-function-form (form) - (byte-compile-constant - (cond ((symbolp (nth 1 form)) - (nth 1 form)) - ((byte-compile-lambda (nth 1 form)))))) + (if (cddr form) + (byte-compile-normal-call + `(signal 'wrong-number-of-arguments '(function ,(length (cdr form))))) + (byte-compile-constant + (cond ((symbolp (nth 1 form)) + (nth 1 form)) + ((byte-compile-lambda (nth 1 form))))))) (defun byte-compile-insert (form) (cond ((null (cdr form)) @@ -3714,11 +3717,16 @@ (defun byte-compile-quote (form) - (byte-compile-constant (car (cdr form)))) + (if (cddr form) + (byte-compile-normal-call + `(signal 'wrong-number-of-arguments '(quote ,(length (cdr form))))) + (byte-compile-constant (car (cdr form))))) (defun byte-compile-quote-form (form) - (byte-compile-constant (byte-compile-top-level (nth 1 form)))) - + (if (cddr form) + (byte-compile-normal-call + `(signal 'wrong-number-of-arguments '(quote ,(length (cdr form))))) + (byte-compile-constant (byte-compile-top-level (nth 1 form))))) ;;; control structures
--- a/src/ChangeLog Thu Sep 16 13:51:49 2010 +0100 +++ b/src/ChangeLog Thu Sep 16 14:10:44 2010 +0100 @@ -1,3 +1,9 @@ +2010-09-16 Aidan Kehoe <kehoea@parhasard.net> + + * eval.c (Ffunction, Fquote): + Add argument information in the arguments: () format for these two + special operators. + 2010-09-07 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Freplace):
--- a/src/eval.c Thu Sep 16 13:51:49 2010 +0100 +++ b/src/eval.c Thu Sep 16 14:10:44 2010 +0100 @@ -1270,6 +1270,8 @@ object preceded by `''. Thus, `'x' is equivalent to `(quote x)', in all contexts. A print function may use either. Internally the expression is represented as `(quote x)'). + +arguments: (OBJECT) */ (args)) { @@ -1350,6 +1352,8 @@ object preceded by `#''. Thus, #'x is equivalent to (function x), in all contexts. A print function may use either. Internally the expression is represented as `(function x)'). + +arguments: (SYMBOL-OR-LAMBDA) */ (args)) {