From: Christophe R. <cr...@us...> - 2003-02-07 14:54:20
|
Update of /cvsroot/sbcl/sbcl/tests In directory sc8-pr-cvs1:/tmp/cvs-serv22008/tests Modified Files: reader.impure.lisp Log Message: 0.7.12.26: fix #1# for STANDARD-OBJECT objects (as reported by Tony Martinez on cll 2003-02-03) ... slightly sucky fix, yes; will probably need revisiting when PCL goodness happens. Index: reader.impure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/reader.impure.lisp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- reader.impure.lisp 12 Dec 2002 11:47:37 -0000 1.4 +++ reader.impure.lisp 7 Feb 2003 14:54:12 -0000 1.5 @@ -41,5 +41,23 @@ (assert (raises-error? (read-from-string "1e1000") reader-error)) (assert (raises-error? (read-from-string "1/0") reader-error)) +;;; Bug reported by Antonio Martinez on comp.lang.lisp 2003-02-03 in +;;; message <b32...@po...>: reading +;;; circular instances of CLOS classes didn't work: +(defclass box () + ((value :initarg :value :reader value))) +(defun read-box (stream char) + (declare (ignore char)) + (let ((objects (read-delimited-list #\] stream t))) + (unless (= 1 (length objects)) + (error "Unknown box reader syntax")) + (make-instance 'box :value (first objects)))) +(set-macro-character #\[ 'read-box) +(set-syntax-from-char #\] #\)) +(multiple-value-bind (res pos) + (read-from-string "#1=[#1#]") + (assert (eq (value res) res)) + (assert (= pos 8))) + ;;; success (quit :unix-status 104) |