Read Scheme via read-syntax
authorAndy Wingo <wingo@pobox.com>
Wed, 24 Feb 2021 19:47:28 +0000 (20:47 +0100)
committerAndy Wingo <wingo@pobox.com>
Thu, 25 Feb 2021 15:07:47 +0000 (16:07 +0100)
* module/language/scheme/spec.scm: Use read-syntax.
* test-suite/tests/dwarf.test: Adapt expected source locations.
* am/bootstrap.am (SOURCES): Add ice-9/read.

am/bootstrap.am
module/language/scheme/spec.scm
test-suite/tests/dwarf.test

index acc00c7626ad23689757bee90f45a36c9f8e56b5..2f5804fe1ae182bb779dd696ccad07e940b944a6 100644 (file)
@@ -102,6 +102,7 @@ SOURCES =                                   \
   ice-9/match.scm                              \
   ice-9/networking.scm                         \
   ice-9/posix.scm                              \
+  ice-9/read.scm                               \
   ice-9/rdelim.scm                             \
   ice-9/receive.scm                            \
   ice-9/regex.scm                              \
index e4cf55c4ceff218ff4a98492cc4e7bbd4df776da..b15005372b8ee5d37533ff992a32f53b90aa931f 100644 (file)
@@ -21,6 +21,7 @@
 (define-module (language scheme spec)
   #:use-module (system base compile)
   #:use-module (system base language)
+  #:use-module (ice-9 read)
   #:use-module (language scheme compile-tree-il)
   #:use-module (language scheme decompile-tree-il)
   #:export (scheme))
@@ -37,7 +38,7 @@
                   ((or (and=> (and=> (module-variable env 'current-reader)
                                      variable-ref)
                               fluid-ref)
-                       read)
+                       read-syntax)
                    port))
 
   #:compilers   `((tree-il . ,compile-tree-il))
index bf36b65d8b5cddae602724d1fbf4e122d8afa9ac..53e87987a529ffbed9af1f785d56720ecbfcd0b4 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; dwarf.test                               -*- scheme -*-
 ;;;;
-;;;; Copyright 2013 Free Software Foundation, Inc.
+;;;; Copyright 2013, 2021 Free Software Foundation, Inc.
 ;;;;
 ;;;; This library is free software; you can redistribute it and/or
 ;;;; modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
 
 (define prog
   (string-concatenate
-   ;; Every open parenthesis is a possible source location.
+   ;; The start of every datum is a possible source location.
    '("(define (qux f)\n" 
      ;^ 0:0
      "  (+ 32 (f)))\n"
@@ -37,6 +37,7 @@
      "  (lambda (a)\n"
      ;  ^ 4:2
      "    13))\n"
+     ;    ^ 5:4
      "'success\n")
    ))
 
      (error "unexpected sources" sources)))
 
   (match (find-program-sources (program-code bar))
-    ((source)
-     (pass-if-equal "foo.scm" (source-file source))
-     (pass-if-equal 4 (source-line source))
-     (pass-if-equal 5 (source-line-for-user source))
-     (pass-if-equal 2 (source-column source)))
+    ((s1 s2)
+     (pass-if-equal "foo.scm" (source-file s1))
+     (pass-if-equal 4 (source-line s1))
+     (pass-if-equal 5 (source-line-for-user s1))
+     (pass-if-equal 2 (source-column s1))
+
+     (pass-if-equal "foo.scm" (source-file s2))
+     (pass-if-equal 5 (source-line s2))
+     (pass-if-equal 6 (source-line-for-user s2))
+     (pass-if-equal 4 (source-column s2)))
     (sources
      (error "unexpected sources" sources))))