diff --git a/pkgs/racket-test-core/tests/racket/list.rktl b/pkgs/racket-test-core/tests/racket/list.rktl index a8a3cf845d..f4d7c59412 100644 --- a/pkgs/racket-test-core/tests/racket/list.rktl +++ b/pkgs/racket-test-core/tests/racket/list.rktl @@ -27,6 +27,12 @@ (err/rt-test (foldl cons 0 '() '())) (err/rt-test (foldl list 0 '() 10)) (err/rt-test (foldl list 0 '() '() 10)) +(err/rt-test (foldl list 0 '() '() 10) + exn:fail:contract? + "expected.*list\\?.*5th") +(err/rt-test (foldl list 0 '() '() '() 10) + exn:fail:contract? + "expected.*list\\?.*6th") (err/rt-test (let/ec k (foldl k 0 '(1 2) '(1 2 3)))) (err/rt-test (let/ec k (foldl k 0 '(1 2) '(1 2) '(1 2 3)))) (err/rt-test (foldr 'list 0 10)) @@ -35,6 +41,12 @@ (err/rt-test (foldr cons 0 '() '())) (err/rt-test (foldr list 0 '() 10)) (err/rt-test (foldr list 0 '() '() 10)) +(err/rt-test (foldr list 0 '() '() 10) + exn:fail:contract? + "expected.*list\\?.*5th") +(err/rt-test (foldr list 0 '() '() '() 10) + exn:fail:contract? + "expected.*list\\?.*6th") (err/rt-test (let/ec k (foldr k 0 '(1 2) '(1 2 3)))) (err/rt-test (let/ec k (foldr k 0 '(1 2) '(1 2) '(1 2 3)))) diff --git a/racket/collects/racket/private/list.rkt b/racket/collects/racket/private/list.rkt index 0ec5f8e7c0..167f3e246f 100644 --- a/racket/collects/racket/private/list.rkt +++ b/racket/collects/racket/private/list.rkt @@ -210,15 +210,15 @@ (unless (procedure-arity-includes? proc 2) (raise-mismatch-error name "given procedure does not accept 2 arguments: " proc)) (let ([len (length l)]) - (let loop ([more more][n 3]) - (unless (null? more) - (unless (list? (car more)) + (let loop ([remaining more][n 3]) + (unless (null? remaining) + (unless (list? (car remaining)) (apply raise-argument-error name "list?" n proc init l more)) - (unless (= len (length (car more))) + (unless (= len (length (car remaining))) (raise-mismatch-error name "given list does not have the same size as the first list: " - (car more))) - (loop (cdr more) (add1 n)))) + (car remaining))) + (loop (cdr remaining) (add1 n)))) (unless (procedure-arity-includes? proc (+ 2 (length more))) (raise-mismatch-error name (format "given procedure does not accept ~a arguments: "