diff --git a/collects/racket/contract/private/misc.rkt b/collects/racket/contract/private/misc.rkt index 6772165198..1aee6d76d0 100644 --- a/collects/racket/contract/private/misc.rkt +++ b/collects/racket/contract/private/misc.rkt @@ -698,7 +698,7 @@ (= (length x) (length (generic-list/c-args c))) (for/and ([arg/c (in-list (generic-list/c-args c))] [v (in-list x)]) - (arg/c v)))) + ((contract-first-order arg/c) v)))) (struct generic-list/c (args)) diff --git a/collects/tests/racket/contract-test.rktl b/collects/tests/racket/contract-test.rktl index 7143d9a5d4..f112759d0e 100644 --- a/collects/tests/racket/contract-test.rktl +++ b/collects/tests/racket/contract-test.rktl @@ -10453,6 +10453,11 @@ so that propagation occurs. (ctest #t contract-first-order-passes? (listof integer?) (list 1)) (ctest #f contract-first-order-passes? (listof integer?) #f) + (ctest #f contract-first-order-passes? (list/c #f #f #t) (list)) + (ctest #t contract-first-order-passes? (list/c #f 'x #t) (list #f 'x #t)) + (ctest #f contract-first-order-passes? (list/c (-> number? number?)) (list (λ (x y) x))) + (ctest #t contract-first-order-passes? (list/c (-> number? number?)) (list (λ (x) x))) + (ctest #t contract-first-order-passes? (non-empty-listof integer?) (list 1)) (ctest #f contract-first-order-passes? (non-empty-listof integer?) (list))