> Greetings! > > 1) 'boot::|NRTassocIndex| (and others) calls elt on dotted lists of > the form ('|domain| s . s), whereas the spec says elt must take a > proper list. elt is automatically inlined. > > 2) somewhere in boot (by the depsys stage), > si::universal-error-handler is redefined to an old call sequence, > breaking 2.7 error reporting. > > Workaround -- > > SYSTEM>(eval `(defun elt ,@(cdr (subst 'sequence 'proper-sequence > (function-src 'elt))))) >
Thanks for finding this error. Concerning si::universal-error-handler, this is done by ancient code in spaderror.lisp. wh-sandbox constains code to handle errors using Ansi condition system, but for GCL I still used old handler. The patch below unconditionally switches error handling to Ansi way (so it will probably break non-Ansi GCL). The algebra build should work with no error handler present. diff -u /home/s/test/tt/axiom2/wh-sandbox/src/interp/bookvol5.pamphlet wh-sandbox/src/interp/bookvol5.pamphlet --- /home/s/test/tt/axiom2/wh-sandbox/src/interp/bookvol5.pamphlet 2007-06-13 03:16:18.000000000 +0200 +++ wh-sandbox/src/interp/bookvol5.pamphlet 2007-07-07 14:00:38.000000000 +0200 @@ -682,9 +682,6 @@ (setq |$currentLine| nil) (restart0) (|readSpadProfileIfThere|) - #+(or :GCL :CCL) - (|spad|) - #-(or :GCL :CCL) (handler-bind ((error #'spad-system-error-handler)) (|spad|)) ) diff -u /home/s/test/tt/axiom2/wh-sandbox/src/interp/spaderror.lisp.pamphlet wh-sandbox/src/interp/spaderror.lisp.pamphlet --- /home/s/test/tt/axiom2/wh-sandbox/src/interp/spaderror.lisp.pamphlet 2007-06-14 14:45:05.000000000 +0200 +++ wh-sandbox/src/interp/spaderror.lisp.pamphlet 2007-07-07 13:59:59.000000000 +0200 @@ -48,14 +48,14 @@ ;; this files contains basic routines for error handling (in-package "BOOT") - +#| #+(or :GCL :CCL) (defun error-format (message args) (let ((|$BreakMode| '|break|)) (declare (special |$BreakMode|)) (if (stringp message) (apply #'format nil message args) nil))) +|# -#-(or :GCL :CCL) (defun error-format (c) (let ((|$BreakMode| '|break|)) (declare (special |$BreakMode|)) @@ -79,6 +79,7 @@ ;; following macro evaluates form returning Union(type-of form, "failed") +#| #+:GCL (defmacro |trapNumericErrors| (form) `(let ((|$oldBreakMode| |$BreakMode|) @@ -87,8 +88,8 @@ (setq val (catch '|trapNumerics| ,form)) (if (eq val |$numericFailure|) val (cons 0 val)))) +|# -#-(or :GCL :CCL) (defmacro |trapNumericErrors| (form) `(handler-case (cons 0 ,form) (arithmetic-error () |$numericFailure|))) @@ -99,7 +100,6 @@ ;; (setq val (errorset ,form)) ;; (if (NULL val) |$numericFailure| (cons 0 (car val))))) -#-(or :GCL :CCL) (defun spad-system-error-handler (c) (block nil (setq |$NeedToSignalSessionManager| T) @@ -115,7 +115,7 @@ (throw '|letPrint2| nil)))))) - +#| ;; the following form embeds around the akcl error handler #+:GCL (eval-when @@ -148,7 +148,7 @@ (apply system:universal-error-handler type correctable? op continue-string error-string args ))))) - +|# -- Waldek Hebisch [EMAIL PROTECTED] _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer