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. > > When I try to remove a property from the result alist using this code: > > (use-modules (srfi srfi-64)) > (let ((r (test-runner-null))) > (test-result-set! r 'arstars 'a) > (test-result-remove r 'arstars)) > > I get the following error: > > Backtrace: > In ice-9/boot-9.scm: > 1752:10 8 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) > In unknown file: > 7 (apply-smob/0 #<thunk 7f0fcff80300>) > In ice-9/boot-9.scm: > 724:2 6 (call-with-prompt _ _ #<procedure default-prompt-handler (k > proc)>) > In ice-9/eval.scm: > 619:8 5 (_ #(#(#<directory (guile-user) 7f0fcff83c80>))) > In ice-9/boot-9.scm: > 2836:4 4 (save-module-excursion _) > 4388:12 3 (_) > In srfi/srfi-64/testing.scm: > 546:35 2 (test-result-remove #<test-runner pass-count: 0 fail-count: > 0 xpass-count: 0…> …) > 548:55 1 (loop ((arstars . a))) > 548:47 0 (loop ()) > > srfi/srfi-64/testing.scm:548:47: In procedure loop: > In procedure car: Wrong type argument in position 1 (expecting pair): () > > From cursory look at the `test-result-remove' source, is seems that the named > let `loop' is missing a stop condition? > > Have a nice day > Tomas Volf > > Your diagnosis sounds correct to me. A null check should fix it.
However, it's already fixed in my SRFI-64 implementation, thanks to using clean coding practices such as: "Don't reinvent SRFI-1." :-) - Taylan