fix `in-vector' range checking
This commit is contained in:
parent
584f74a22b
commit
91cdfe9a7a
|
@ -640,8 +640,8 @@
|
|||
;; the largest fixnum, after running these checks start,
|
||||
;; stop, and step are guaranteed to be fixnums.
|
||||
(define (check-ranges who start stop step len)
|
||||
(unless (and (exact-nonnegative-integer? start) (< start len))
|
||||
(raise-type-error who (format "exact non-negative integer in [0,~a)" len) start))
|
||||
(unless (and (exact-nonnegative-integer? start) (<= start len))
|
||||
(raise-type-error who (format "exact integer in [0,~a]" len) start))
|
||||
(unless (and (integer? stop) (<= -1 stop) (<= stop len))
|
||||
(raise-type-error who (format "exact integer in [-1,~a] or #f" len) stop))
|
||||
(unless (and (exact-integer? step) (not (zero? step)))
|
||||
|
|
|
@ -228,4 +228,12 @@
|
|||
(test 13 next)
|
||||
(test #f more?))
|
||||
|
||||
;; check ranges on `in-vetcor', especially as a value
|
||||
(test '() 'in-empty-vector (let ([v (in-vector '#())]) (for/list ([e v]) e)))
|
||||
(test '() 'in-empty-vector (let ([v (in-vector '#() 0)]) (for/list ([e v]) e)))
|
||||
(test '() 'in-empty-vector (let ([v (in-vector '#() 0 0)]) (for/list ([e v]) e)))
|
||||
(test '() 'in-empty-vector (let ([v (in-vector '#(1) 1 1)]) (for/list ([e v]) e)))
|
||||
(test '() 'in-empty-vector (let ([v (in-vector '#(1) 0 0)]) (for/list ([e v]) e)))
|
||||
(test '(1) 'in-empty-vector (let ([v (in-vector '#(1) 0 1)]) (for/list ([e v]) e)))
|
||||
|
||||
(report-errs)
|
||||
|
|
Loading…
Reference in New Issue
Block a user