~ chicken-core (chicken-5) 7c341016a80dd57b8b739680f22e1a420d2bac99


commit 7c341016a80dd57b8b739680f22e1a420d2bac99
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Tue Apr 5 21:15:49 2016 +1200
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Apr 5 21:20:15 2016 +1200

    Make read-marks table a qualified global in library.scm
    
    This is necessary so that both library.scm and the read-syntax units can
    access it (for `read` and `set-read-syntax!`, respectively).

diff --git a/library.scm b/library.scm
index 463c1721..e0b3004c 100644
--- a/library.scm
+++ b/library.scm
@@ -3711,7 +3711,7 @@ EOF
 						      [(member tok '("optional" "rest" "key"))
 						       (build-symbol (##sys#string-append "#!" tok)) ]
 						      [else
-						       (let ((a (assq (string->symbol tok) read-marks)))
+						       (let ((a (assq (string->symbol tok) ##sys#read-marks)))
 							 (if a
 							     ((##sys#slot a 1) port)
 							     (##sys#read-error
@@ -3813,6 +3813,15 @@ EOF
     (else (##sys#read-error port "invalid sharp-sign read syntax" char) ) ) )
 
 
+;;; Table for specially-handled read-syntax:
+;
+; - entries should be #f or a 256-element vector containing procedures
+; - each procedure is called with two arguments, a char (peeked) and a
+;   port, and should return an expression
+
+(define ##sys#read-marks '()) ; TODO move to read-syntax module
+
+
 ;;; Output:
 
 (define (##sys#write-char-0 c p)
diff --git a/read-syntax.scm b/read-syntax.scm
index ced82d2d..e4575714 100644
--- a/read-syntax.scm
+++ b/read-syntax.scm
@@ -36,19 +36,11 @@
 
 (include "common-declarations.scm")
 
-;;; Table for specially-handled read-syntax:
-;
-; - entries should be #f or a 256-element vector containing procedures
-; - each procedure is called with two arguments, a char (peeked) and a
-;   port, and should return an expression
-
-(define read-marks '())
-
 (define (set-read-mark! sym proc)
-  (let ((a (assq sym read-marks)))
+  (let ((a (assq sym ##sys#read-marks)))
     (if a
 	(##sys#setslot a 1 proc)
-	(set! read-marks (cons (cons sym proc) read-marks)))))
+	(set! ##sys#read-marks (cons (cons sym proc) ##sys#read-marks)))))
 
 (define ((syntax-setter loc slot wrap) chr proc)
   (if (symbol? chr)
Trap