From 8e843831eaf271801836b7a3e4dd3b4fb0bb72b8 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Wed, 4 Nov 2015 12:54:53 +0000 Subject: [PATCH] * lisp/subr.el (when): Use `macroexp-progn' * test/automated/subr-tests.el (subr-test-when): New test --- lisp/subr.el | 2 +- test/automated/subr-tests.el | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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 -- 2.39.2