bug#72366: srfi-64: on-bad-end-name-function has swapped arguments

Taylan Kammer <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
On 30.07.2024 21:51, Tomas Volf wrote:
> Hello,
>
> I think I found a bug in (srfi srfi-64) module shipped with GNU Guile.
>
> The specification describes the on-bad-end-name-function like this:
>
>     (on-bad-end-name-function runner begin-name end-name)
>
> Thus the following should print `x':
>
>     (use-modules (srfi srfi-64))
>     (let ((r (test-runner-null)))
>       (test-runner-current r)
>       (test-runner-on-bad-end-name! r
>         (λ (runner begin-name end-name)
>           (pk begin-name)))
>       (test-begin "x")
>       (test-assert #t)
>       (test-end   "y"))
>
> But it does not:
>
>     ;;; ("y")
>
> Have a nice day
> Tomas Volf
>
>
This is clearly a bug IMO and I've now fixed it in my implementation.

I've also decided to remove the check on whether the begin-name is true, because as per spec it's not allowed to be false anyway, and IMO it should call the bad-end-name callback if the begin-name was explicitly passed as #f but the end-name is not also #f.

- Taylan
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.