bug#48089: Guile 3.0.6 returns zero-indexed locations for ‘read-error’

Ludovic Courtès <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
Ludovic Courtès <[email protected]> skribis:

> Guile 3.0.6 returns zero-indexed (instead of one-indexed) source code
> locations for ‘read-error’.  Here’s a 3.0.6/3.0.5 comparison:
>
> $ /gnu/store/r2nr74rwhpqg16y1lyi6l0jn3lwx4yyz-guile-3.0.6/bin/guile  <(echo '(')
> ice-9/read.scm:126:4: In procedure lp:
> /dev/fd/63:1:0: unexpected end of input while searching for: )
> $ guile  <(echo '(')
> ERROR: In procedure primitive-load:
> In procedure scm_i_lreadparen: /dev/fd/63:2:1: end of file

Here’s a test case waiting to succeed!  :-)


Ludo’.
(unnamed) (text/x-patch, 835 B)
diff --git a/test-suite/tests/reader.test b/test-suite/tests/reader.test
index fad531b39..231e69553 100644
--- a/test-suite/tests/reader.test
+++ b/test-suite/tests/reader.test
@@ -212,6 +212,18 @@
 
 
 (with-test-prefix "mismatching parentheses"
+  (pass-if-equal "read-error location"
+      '("foo.scm:3:1: unexpected end of input while searching for: ~A" #\))
+    (catch 'read-error
+      (lambda ()
+        ;; The missing closing paren error should be located on line 3,
+        ;; column 1 (one-indexed).
+        (call-with-input-string "\n    (hi there!\n"
+          (lambda (port)
+            (set-port-filename! port "foo.scm")
+            (read port))))
+      (lambda (key proc message args . _)
+        (cons message args))))
   (pass-if-exception "opening parenthesis"
     exception:eof
     (read-string "("))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.