aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2016-11-07 20:03:48 -0500
committerNoam Postavsky2016-11-08 19:54:03 -0500
commiteb364fddec1431f459166cebb36f09f6b371dd71 (patch)
treec2815dcdf89f34108af0e9a7f075204f6ff2e8bd
parent3ef4ee84fa3f658c2df802569dc89023d98e9947 (diff)
downloademacs-eb364fddec1431f459166cebb36f09f6b371dd71.tar.gz
emacs-eb364fddec1431f459166cebb36f09f6b371dd71.zip
Do call debugger on failed cl-assert
"Don't call debug on failed cl-assert..." removed the call to `debug' in cl--assertion-failed because `debug' calls `kill-emacs' in batch mode, thus messing up ert test runs. However, calling the debugger is useful because it allows catching failed assertions even inside `condition-case' calls. The problem with ert can be avoided by calling `debugger' instead of `debug' directly, since ert installs its own debugger while running tests. * lisp/emacs-lisp/cl-preloaded.el (cl--assertion-failed): Call `debugger' if `debug-on-error' is non-nil.
-rw-r--r--lisp/emacs-lisp/cl-preloaded.el8
1 files changed, 5 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
index 639ffa64b8c..2b022c49053 100644
--- a/lisp/emacs-lisp/cl-preloaded.el
+++ b/lisp/emacs-lisp/cl-preloaded.el
@@ -44,9 +44,11 @@
44(define-error 'cl-assertion-failed (purecopy "Assertion failed")) 44(define-error 'cl-assertion-failed (purecopy "Assertion failed"))
45 45
46(defun cl--assertion-failed (form &optional string sargs args) 46(defun cl--assertion-failed (form &optional string sargs args)
47 (if string 47 (if debug-on-error
48 (apply #'error string (append sargs args)) 48 (funcall debugger `(cl-assertion-failed ,form ,string ,@sargs))
49 (signal 'cl-assertion-failed `(,form ,@sargs)))) 49 (if string
50 (apply #'error string (append sargs args))
51 (signal 'cl-assertion-failed `(,form ,@sargs)))))
50 52
51;; When we load this (compiled) file during pre-loading, the cl--struct-class 53;; When we load this (compiled) file during pre-loading, the cl--struct-class
52;; code below will need to access the `cl-struct' info, since it's considered 54;; code below will need to access the `cl-struct' info, since it's considered