oop goops save: fix compile-time availability of write-component
authorAndy Wingo <wingo@pobox.com>
Wed, 23 Jan 2013 15:53:54 +0000 (16:53 +0100)
committerAndy Wingo <wingo@pobox.com>
Wed, 23 Jan 2013 15:53:54 +0000 (16:53 +0100)
* module/oop/goops/save.scm (write-component)
  (write-component-procedure): Move definitions up so that syntax
  definition is available when compiling the rest of the file.

module/oop/goops/save.scm

index 05362e0..dda2aea 100644 (file)
 (define (readable? obj)
   (hashq-ref readables obj))
 
+;;;
+;;; Writer helpers
+;;;
+
+(define (write-component-procedure o file env)
+  "Return #f if circular reference"
+  (cond ((immediate? o) (write o file) #t)
+       ((readable? o) (write (readable-expression o) file) #t)
+       ((excluded? o env) (display #f file) #t)
+       (else
+        (let ((info (object-info o env)))
+          (cond ((not (binding? info)) (write-readably o file env) #t)
+                ((not (eq? (visiting info) #:defined)) #f) ;forward reference
+                (else (display (binding info) file) #t))))))
+
+;;; write-component OBJECT PATCHER FILE ENV
+;;;
+(define-macro (write-component object patcher file env)
+  `(or (write-component-procedure ,object ,file ,env)
+       (begin
+         (display #f ,file)
+         (add-patcher! ,patcher ,env))))
+
 ;;;
 ;;; Strings
 ;;;
           (pop-ref! env)
           (set! (objects env) (cons o (objects env)))))))
 
-(define (write-component-procedure o file env)
-  "Return #f if circular reference"
-  (cond ((immediate? o) (write o file) #t)
-       ((readable? o) (write (readable-expression o) file) #t)
-       ((excluded? o env) (display #f file) #t)
-       (else
-        (let ((info (object-info o env)))
-          (cond ((not (binding? info)) (write-readably o file env) #t)
-                ((not (eq? (visiting info) #:defined)) #f) ;forward reference
-                (else (display (binding info) file) #t))))))
-
-;;; write-component OBJECT PATCHER FILE ENV
-;;;
-(define-macro (write-component object patcher file env)
-  `(or (write-component-procedure ,object ,file ,env)
-       (begin
-         (display #f ,file)
-         (add-patcher! ,patcher ,env))))
 
 ;;;
 ;;; Main engine