src/classes.lisp: Give initargs a useful print representation.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 3 Aug 2019 14:15:57 +0000 (15:15 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 3 Aug 2019 15:46:21 +0000 (16:46 +0100)
doc/SYMBOLS
src/classes.lisp

index 023bda6..3df75e0 100644 (file)
@@ -1402,6 +1402,8 @@ cl:print-object
   sod-message t
   sod-method t
   sod-slot t
+  sod-slot-initarg t
+  sod-user-initarg t
   temporary-name t
   update-inst t
   var-inst t
index a59a47c..1856b30 100644 (file)
   (:documentation
    "Describes an initialization argument defined by the user."))
 
+(defmethod print-object ((initarg sod-user-initarg) stream)
+  (maybe-print-unreadable-object (initarg stream :type t)
+    (pprint-c-type (sod-initarg-type initarg) stream
+                  (sod-initarg-name initarg))
+    (awhen (sod-initarg-default initarg)
+      (format stream " = ~A" it))))
+
 (export 'sod-slot-initarg)
 (defclass sod-slot-initarg (sod-initarg)
   ((slot :initarg :slot :type sod-slot :reader sod-initarg-slot))
   (:documentation
    "Describes an initialization argument used to initialize a slot."))
 
+(defmethod print-object ((initarg sod-slot-initarg) stream)
+  (maybe-print-unreadable-object (initarg stream :type t)
+    (pprint-c-type (sod-initarg-type initarg) stream
+                  (sod-initarg-name initarg))
+    (format stream " for ~A" (sod-initarg-slot initarg))))
+
 ;;;--------------------------------------------------------------------------
 ;;; Messages and methods.