[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#67412: (resolve-r6rs-interface '(srfi 160 u8) tries to load (srfi sr
From: |
Maxim Cournoyer |
Subject: |
bug#67412: (resolve-r6rs-interface '(srfi 160 u8) tries to load (srfi srfi-160) |
Date: |
Thu, 23 Nov 2023 16:44:54 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi,
Investigating, I've found this:
--8<---------------cut here---------------start------------->8---
trace: | (_ #<procedure 7fc0c55af068 at ice-9/r6rs-libraries.scm:104:5 (n rest
version)> (160 (u8) ()))
trace: | (_ 160 (u8) ())
trace: | | (syntax->datum 160)
trace: | | (strip 160)
trace: | | | (syntax? 160)
trace: | | | #f
trace: | | 160
trace: | | (number->string 160)
trace: | | "160"
trace: | | (string-append "srfi-" "160")
trace: | | "srfi-160"
trace: | | (datum->syntax #<syntax:r6rs-libraries.scm:92:34 srfi> srfi-160)
trace: | | | (syntax-wrap #<syntax:r6rs-libraries.scm:92:34 srfi>)
trace: | | | ((top) #(ribcage #(n rest version) #((top) (top) (top))
#("l-680b775fb37a463-160b" "l-680b775fb37a463-160c" "l-680b775fb37a463-160d"))
#(ribcage (module-for-each/nonlocal # make-srfi-n # …) …) …)
trace: | | | (syntax-module #<syntax:r6rs-libraries.scm:92:34 srfi>)
trace: | | | (hygiene guile)
trace: | | | (source-properties srfi-160)
trace: | | | ()
trace: | | (make-syntax srfi-160 ((top) #(ribcage #(n rest version) #((top)
(top) (top)) #("l-680b775fb37a463-160b" "l-680b775fb37a463-160c"
"l-680b775fb37a463-160d")) #(ribcage (# # make-srfi-n # # …) …) …) …)
trace: | | #<syntax srfi-160>
trace: | | ($sc-dispatch (u8) ())
trace: | | | (syntax? (u8))
trace: | | | #f
trace: | | (match* (u8) () (()) () #f)
trace: | | #f
trace: | | ($sc-dispatch (u8) (any . each-any))
trace: | | | (syntax? (u8))
trace: | | | #f
trace: | | (match* (u8) (any . each-any) (()) () #f)
trace: | | | (match () each-any (()) () #f)
trace: | | | | (syntax? ())
trace: | | | | #f
trace: | | | (match* () each-any (()) () #f)
trace: | | | | (match-each-any () (()) #f)
trace: | | | | ()
trace: | | | (())
trace: | | (match u8 any (()) (()) #f)
trace: | | | (source-wrap u8 (()) #f #f)
trace: | | | u8
trace: | | (u8 ())
trace: | | (_ #<procedure 7fc0c108e1e0 at ice-9/r6rs-libraries.scm:93:7 (name
rest)> (u8 ()))
trace: | | (_ u8 ())
trace: | | | (append () (()))
trace: | | | (())
--8<---------------cut here---------------end--------------->8---
This corresponds to this source:
--8<---------------cut here---------------start------------->8---
(syntax-case import-spec (library only except prefix rename srfi)
;; (srfi :n ...) -> (srfi srfi-n ...)
;; (srfi n ...) -> (srfi srfi-n ...)
((library (srfi n rest ... (version ...)))
(srfi-name? #'(srfi n rest ...))
(let ((srfi-n (make-srfi-n #'srfi #'n)))
(resolve-r6rs-interface
(syntax-case #'(rest ...) ()
(()
#`(library (srfi #,srfi-n (version ...))))
((name rest ...)
;; SRFI 97 says that the first identifier after the `n'
;; is used for the libraries name, so it must be ignored.
#`(library (srfi #,srfi-n rest ... (version ...))))))))
...
--8<---------------cut here---------------end--------------->8---
Notice the comment mentioning that the first identifier following 'n' is
ignored. That seems wrong, at least in the context of R7RS libraries.
--
Thanks,
Maxim