diff options
| author | Noam Postavsky | 2016-11-07 20:03:48 -0500 |
|---|---|---|
| committer | Noam Postavsky | 2016-11-08 19:54:03 -0500 |
| commit | eb364fddec1431f459166cebb36f09f6b371dd71 (patch) | |
| tree | c2815dcdf89f34108af0e9a7f075204f6ff2e8bd | |
| parent | 3ef4ee84fa3f658c2df802569dc89023d98e9947 (diff) | |
| download | emacs-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.el | 8 |
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 |