summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-11-04 12:54:53 +0000
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-11-04 12:56:25 +0000
commit8e843831eaf271801836b7a3e4dd3b4fb0bb72b8 (patch)
treeee0c22b58dae03ad9c509f301e6a86f844a1a213
parent587b2328377c32950a7ccf89f7c0b7d95db873af (diff)
* lisp/subr.el (when): Use `macroexp-progn'
* test/automated/subr-tests.el (subr-test-when): New test
-rw-r--r--lisp/subr.el2
-rw-r--r--test/automated/subr-tests.el14
2 files changed, 15 insertions, 1 deletions
diff --git a/lisp/subr.el b/lisp/subr.el
index ea926ae147..91647a6764 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -179,7 +179,7 @@ value of last one, or nil if there are none.
\(fn COND BODY...)"
(declare (indent 1) (debug t))
- (list 'if cond (cons 'progn body)))
+ (list 'if cond (macroexp-progn body)))
(defmacro unless (cond &rest body)
"If COND yields nil, do BODY, else return nil.
diff --git a/test/automated/subr-tests.el b/test/automated/subr-tests.el
index 28a423f5ee..85d5d112d9 100644
--- a/test/automated/subr-tests.el
+++ b/test/automated/subr-tests.el
@@ -82,5 +82,19 @@
(should (string-greaterp 'acb 'abc))
(should (string-greaterp "acb" 'abc)))
+(ert-deftest subr-test-when ()
+ (should (equal (when t 1) 1))
+ (should (equal (when t 2) 2))
+ (should (equal (when nil 1) nil))
+ (should (equal (when nil 2) nil))
+ (should (equal (when t 'x 1) 1))
+ (should (equal (when t 'x 2) 2))
+ (should (equal (when nil 'x 1) nil))
+ (should (equal (when nil 'x 2) nil))
+ (should (equal (macroexpand-all '(when a b))
+ '(if a b)))
+ (should (equal (macroexpand-all '(when a b c d))
+ '(if a (progn b c d)))))
+
(provide 'subr-tests)
;;; subr-tests.el ends here