mes: make scm.mes compatible with guile

* mes/module/mes/scm.mes (iota): Throw exception when n < 0
* tests/scm.test: import (mes catch)
* tests/scm.test ("iota -1"): Rewrite with exception handling
This commit is contained in:
Ekaitz 2023-08-24 19:06:40 +02:00
parent e0e560895d
commit 71934c9356
2 changed files with 12 additions and 3 deletions

View File

@ -164,8 +164,10 @@
(list-tail (cdr x) (- n 1))))
(define (iota n)
(if (<= n 0) '()
(append2 (iota (- n 1)) (list (- n 1)))))
(cond
((< n 0) (throw 'wrong-type-arg n))
((= n 0) '())
(else (append2 (iota (- n 1)) (list (- n 1))))))
(define (reverse lst)
(let loop ((lst lst) (r '()))

View File

@ -30,6 +30,8 @@ exec ${MES-bin/mes} --no-auto-compile -L ${0%/*} -L module -C module -e '(tests
#:use-module (mes mes-0)
#:use-module (mes test))
(mes-use-module (mes catch))
(cond-expand
(mes
(primitive-load "module/mes/test.scm"))
@ -131,7 +133,12 @@ exec ${MES-bin/mes} --no-auto-compile -L ${0%/*} -L module -C module -e '(tests
'() (iota 0))
(pass-if-equal "iota -1"
'() (iota -1))
'iota-negative-length
(catch 'wrong-type-arg
(lambda ()
(iota -1))
(lambda (key . args)
'iota-negative-length)))
(pass-if "cond-expand" (sequal? (cond-expand (foobar #f) (mes (display ": pass: *YAY*") 'mes) (guile (display ": pass: *GUILE*") 'mes)) 'mes))