From: Adam W. <li...@co...> - 2004-11-29 08:04:57
|
Hi Peter, --- src/org/armedbear/lisp/StructureObject.java 2004-11-23 23:31:29.000000000 +1300 +++ StructureObject.java 2004-11-29 20:36:48.000000000 +1300 @@ -170,7 +170,7 @@ LispObject slotName = slotDefinition.getRowMajor(1); if (slotName instanceof Symbol) { sb.append(':'); - sb.append(((Symbol)slotName).getName()); + sb.append(slotName.writeToString()); } else sb.append(slotName); sb.append(' '); The patch above fixes slot printing for different readtable modes. I don't understand the else clause (why would a slot name not be an instance of Symbol?): thus the change to writeToString() may also be necessary in the else clause as well. (setf (readtable-case *readtable*) :invert) (defstruct name slot) (make-name) now prints as #S(name :slot nil) instead of #S(name :SLOT nil) which is not readable: (read-from-string "#S(name :SLOT nil)") => Unrecognized keyword argument :SLOT. A symbol reading bug is outstanding ['|CL|:eval-when should return the symbol COMMON-LISP:EVAL-WHEN] but it looks rather more complicated to fix--and there's already a FIXME note in Stream.java. Regards, Adam |