diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-11-04 12:54:53 +0000 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-11-04 12:56:25 +0000 |
commit | 8e843831eaf271801836b7a3e4dd3b4fb0bb72b8 (patch) | |
tree | ee0c22b58dae03ad9c509f301e6a86f844a1a213 | |
parent | 587b2328377c32950a7ccf89f7c0b7d95db873af (diff) |
* lisp/subr.el (when): Use `macroexp-progn'
* test/automated/subr-tests.el (subr-test-when): New test
-rw-r--r-- | lisp/subr.el | 2 | ||||
-rw-r--r-- | test/automated/subr-tests.el | 14 |
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 |