Fix is_arity_list

This commit is contained in:
Gustavo Massaccesi 2014-12-29 02:22:50 -03:00 committed by Matthew Flatt
parent 17665d33a2
commit 25013320be
3 changed files with 25 additions and 2 deletions

View File

@ -287,7 +287,7 @@ space. Use @racket[raise-arguments-error], instead.}
(listof
(or/c exact-nonnegative-integer?
arity-at-least?)))]
[arg-v any/c #f] ...)
[arg-v any/c] ...)
any]{
Creates an @racket[exn:fail:contract:arity] value and @racket[raise]s

View File

@ -2061,6 +2061,29 @@
(err/rt-test (list->vector 'hello))
(err/rt-test (list->vector '(#\h . #\e)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; errors
(err/rt-test (raise-arity-error 'f 5) exn:fail:contract:arity?)
(err/rt-test (raise-arity-error 'f (make-arity-at-least 5)) exn:fail:contract:arity?)
(err/rt-test (raise-arity-error 'f (list 1 (make-arity-at-least 5))) exn:fail:contract:arity?)
(err/rt-test (raise-arity-error + 5) exn:fail:contract:arity?)
(err/rt-test (raise-arity-error + (make-arity-at-least 5)) exn:fail:contract:arity?)
(err/rt-test (raise-arity-error + (list 1 (make-arity-at-least 5))) exn:fail:contract:arity?)
(define (exn:fail:contract:arity?/#f e) (not (exn:fail:contract:arity? e)))
(err/rt-test (raise-arity-error 'f -5) exn:fail:contract:arity?/#f)
(err/rt-test (raise-arity-error 'f -5) exn:fail:contract?)
(err/rt-test (raise-arity-error 'f (list 1 'x)) exn:fail:contract:arity?/#f)
(err/rt-test (raise-arity-error 'f (list 1 'x)) exn:fail:contract?)
(err/rt-test (raise-arity-error 1 1) exn:fail:contract:arity?/#f)
(err/rt-test (raise-arity-error 1 1) exn:fail:contract?)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; continuations
(test-cont)

View File

@ -3009,7 +3009,7 @@ static int is_arity_list(Scheme_Object *l)
while (!SCHEME_NULLP(l)) {
a = SCHEME_CAR(l);
if (!scheme_nonneg_exact_p(a)
&& !scheme_nonneg_exact_p(a))
&& !is_arity_at_least(a))
return 0;
l = SCHEME_CDR(l);
}