mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-29 06:20:30 +02:00
Have `read' update line/column numbers when reading SCSH block comments.
* libguile/read.c (scm_read_scsh_block_comment): Use `scm_getc' instead of `scm_get_byte_or_eof'. * test-suite/tests/reader.test ("read-options")["position of SCSH block comment"]: New test.
This commit is contained in:
parent
ac012a27a2
commit
58b1db5f24
2 changed files with 12 additions and 5 deletions
|
@ -1116,13 +1116,9 @@ scm_read_scsh_block_comment (scm_t_wchar chr, SCM port)
|
|||
{
|
||||
int bang_seen = 0;
|
||||
|
||||
/* We can use the get_byte here because there is no need to get the
|
||||
locale correct when reading comments. This presumes that
|
||||
hash and exclamation points always represent themselves no
|
||||
matter what the source encoding is.*/
|
||||
for (;;)
|
||||
{
|
||||
int c = scm_get_byte_or_eof (port);
|
||||
int c = scm_getc (port);
|
||||
|
||||
if (c == EOF)
|
||||
scm_i_input_error ("skip_block_comment", port,
|
||||
|
|
|
@ -253,6 +253,14 @@
|
|||
(read-string "'abcde")))))
|
||||
(and (equal? (source-property sexp 'line) 0)
|
||||
(equal? (source-property sexp 'column) 0))))
|
||||
(pass-if "position of SCSH block comment"
|
||||
;; In Guile 2.0.0 the reader would not update the port's position
|
||||
;; when reading an SCSH block comment.
|
||||
(let ((sexp (with-read-options '(positions)
|
||||
(lambda ()
|
||||
(read-string "#!foo\nbar\nbaz\n!#\n(hello world)\n")))))
|
||||
(= 4 (source-property sexp 'line))))
|
||||
|
||||
(with-test-prefix "r6rs-hex-escapes"
|
||||
(pass-if-exception "non-hex char in two-digit hex-escape"
|
||||
exception:illegal-escape
|
||||
|
@ -417,3 +425,6 @@
|
|||
("#,@foo" . (unsyntax-splicing foo)))))
|
||||
|
||||
|
||||
;;; Local Variables:
|
||||
;;; eval: (put 'with-read-options 'scheme-indent-function 1)
|
||||
;;; End:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue