From 5f0beddf69445855a98e88875ae98fb646a449e7 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Tue, 30 Aug 2016 21:37:24 +0300 Subject: [PATCH] Better printing of method objects. Print method qualifiers. For specializers, print class names, not class objects, and print eql specializers. (defmethod m :around (a b (c (eql "10")))) was # # #)> becomes # --- src/clos/print.lsp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/clos/print.lsp b/src/clos/print.lsp index 939556965..cd944cd63 100644 --- a/src/clos/print.lsp +++ b/src/clos/print.lsp @@ -199,12 +199,18 @@ printer and we should rather use MAKE-LOAD-FORM." (defmethod print-object ((m standard-method) stream) (print-unreadable-object (m stream :type t) - (format stream "~A ~A" - (let ((gf (method-generic-function m))) - (if gf - (generic-function-name gf) - 'UNNAMED)) - (method-specializers m))) + (format stream "~A ~{~S ~}~S" + (let ((gf (method-generic-function m))) + (if gf + (generic-function-name gf) + 'UNNAMED)) + (method-qualifiers m) + (loop for spec in (method-specializers m) + collect (cond ((and (classp spec) + (class-name spec))) + ((typep spec 'eql-specializer) + `(eql ,(eql-specializer-object spec))) + (t spec))))) m) (defun ext::float-nan-string (x)