X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fboot.lisp;h=9378a8a0e1551e8fa62ac099ebf49702cf4ac5b4;hb=ab354f654ea66e732d3617265ab004f4537c4062;hp=845b601934a906b3211ccead09894f56f06718fc;hpb=c08b369e02f12e4a5c9fa79c7332dcdae24fd356;p=jscl.git diff --git a/src/boot.lisp b/src/boot.lisp index 845b601..9378a8a 100644 --- a/src/boot.lisp +++ b/src/boot.lisp @@ -191,11 +191,13 @@ clausules))))) (defmacro ecase (form &rest clausules) - `(case ,form - ,@(append - clausules - `((t - (error "ECASE expression failed.")))))) + (let ((g!form (gensym))) + `(let ((,g!form ,form)) + (case ,g!form + ,@(append + clausules + `((t + (error "ECASE expression failed for the object `~S'." ,g!form)))))))) (defmacro and (&rest forms) (cond @@ -493,7 +495,7 @@ ((symbolp x) (symbol-function x)) (t - (error "Invalid function")))) + (error "Invalid function `~S'." x)))) (defun disassemble (function) (write-line (lambda-code (fdefinition function))) @@ -507,7 +509,7 @@ (oget func "docstring"))) (variable (unless (symbolp x) - (error "Wrong argument type! it should be a symbol")) + (error "The type of documentation `~S' is not a symbol." type)) (oget x "vardoc")))) (defmacro multiple-value-bind (variables value-from &body body) @@ -531,7 +533,7 @@ `(,value) `(setq ,place ,value) place)) - (let ((place (ls-macroexpand-1 place))) + (let ((place (!macroexpand-1 place))) (let* ((access-fn (car place)) (expander (cdr (assoc access-fn *setf-expanders*)))) (when (null expander) @@ -540,7 +542,7 @@ (defmacro define-setf-expander (access-fn lambda-list &body body) (unless (symbolp access-fn) - (error "ACCESS-FN must be a symbol.")) + (error "ACCESS-FN `~S' must be a symbol." access-fn)) `(progn (push (cons ',access-fn (lambda ,lambda-list ,@body)) *setf-expanders*) ',access-fn)) @@ -552,7 +554,7 @@ ((null (cdr pairs)) (error "Odd number of arguments to setf.")) ((null (cddr pairs)) - (let ((place (ls-macroexpand-1 (first pairs))) + (let ((place (!macroexpand-1 (first pairs))) (value (second pairs))) (multiple-value-bind (vars vals store-vars writer-form) (get-setf-expansion place) @@ -613,3 +615,6 @@ (defun values (&rest args) (values-list args)) + +(defun error (fmt &rest args) + (%throw (apply #'format nil fmt args)))