emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 9c4e309: Check that variable lists are actually lis


From: Philipp Stephani
Subject: [Emacs-diffs] master 9c4e309: Check that variable lists are actually lists
Date: Thu, 19 Jan 2017 16:19:43 +0000 (UTC)

branch: master
commit 9c4e3097b595c739bb29261759b9ba631431329e
Author: Philipp Stephani <address@hidden>
Commit: Philipp Stephani <address@hidden>

    Check that variable lists are actually lists
    
    'let' and 'let*' document that their first argument has to be a list,
    but don't check for that; instead, they allow (and silently ignore)
    other types.  Introduce an explicit type check.
    
    * src/eval.c (Flet, FletX): Check that the variable list is indeed a
    list.
    * test/src/eval-tests.el: Add unit tests.
---
 src/eval.c             |    2 ++
 test/src/eval-tests.el |   10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/src/eval.c b/src/eval.c
index 1f8d409..c05c8d8 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -857,6 +857,7 @@ usage: (let* VARLIST BODY...)  */)
   lexenv = Vinternal_interpreter_environment;
 
   varlist = XCAR (args);
+  CHECK_LIST (varlist);
   while (CONSP (varlist))
     {
       QUIT;
@@ -917,6 +918,7 @@ usage: (let VARLIST BODY...)  */)
   USE_SAFE_ALLOCA;
 
   varlist = XCAR (args);
+  CHECK_LIST (varlist);
 
   /* Make space to hold the values to give the bound variables.  */
   elt = Flength (varlist);
diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el
index a1fe8cc..95655ea 100644
--- a/test/src/eval-tests.el
+++ b/test/src/eval-tests.el
@@ -47,4 +47,14 @@ Bug#24912 and Bug#24913."
     (let ((byte-compile-debug t))
       (should-error (eval `(byte-compile (lambda ,args)) t)))))
 
+
+(dolist (form '(let let*))
+  (dolist (arg '(1 "a" [a]))
+    (eval
+     `(ert-deftest ,(intern (format "eval-tests--%s--%s" form (type-of arg))) 
()
+        ,(format "Check that the first argument of `%s' cannot be a %s"
+                 form (type-of arg))
+        (should-error (,form ,arg) :type 'wrong-type-argument))
+     t)))
+
 ;;; eval-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]