macroexpanded pretty-printer
authorAndy Wingo <wingo@pobox.com>
Thu, 20 May 2010 11:47:49 +0000 (13:47 +0200)
committerAndy Wingo <wingo@pobox.com>
Thu, 20 May 2010 11:47:49 +0000 (13:47 +0200)
* module/language/tree-il.scm (print-tree-il):
  (borrow-core-vtables, <tree-il>): When tree-il loads, override the
  printers for macroexpanded structures.

module/language/tree-il.scm

index f9181ed..c268eff 100644 (file)
@@ -61,6 +61,9 @@
             post-order!
             pre-order!))
 
+(define (print-tree-il exp port)
+  (format port "#<tree-il ~a>" (unparse-tree-il exp)))
+
 (define-syntax borrow-core-vtables
   (lambda (x)
     (syntax-case x ()
@@ -84,6 +87,8 @@
                                   #`(define (#,pred x)
                                       (and (struct? x)
                                            (eq? (struct-vtable x) #,type)))
+                                  #`(struct-set! #,type vtable-index-printer
+                                                 print-tree-il)
                                   #`(define #,type
                                            (vector-ref %expanded-vtables #,n))
                                        out)))
   ;; (<letrec> names gensyms vals body)
   ;; (<dynlet> fluids vals body)
 
-(define-type (<tree-il> #:common-slots (src))
+(define-type (<tree-il> #:common-slots (src) #:printer print-tree-il)
   (<fix> names gensyms vals body)
   (<let-values> exp body)
   (<dynwind> winder body unwinder)