diff --git a/pkgs/racket-test-core/tests/racket/place-utils.rkt b/pkgs/racket-test-core/tests/racket/place-utils.rkt index ec2ee243df..2f362468b1 100644 --- a/pkgs/racket-test-core/tests/racket/place-utils.rkt +++ b/pkgs/racket-test-core/tests/racket/place-utils.rkt @@ -86,4 +86,11 @@ #'(time body ...) |# ])) + +(module place-test-submod racket/base + (require racket/place) + (provide p) + (define (p x) + (place-channel-get (place/context ch + (place-channel-put ch x))))) diff --git a/pkgs/racket-test-core/tests/racket/place.rktl b/pkgs/racket-test-core/tests/racket/place.rktl index 8dab0d0c4e..f8bcb705e1 100644 --- a/pkgs/racket-test-core/tests/racket/place.rktl +++ b/pkgs/racket-test-core/tests/racket/place.rktl @@ -102,4 +102,8 @@ (test (not (place-enabled?)) place-message-allowed? (cons v 1)) (test (not (place-enabled?)) place-message-allowed? (vector v))) + +(require (submod "place-utils.rkt" place-test-submod)) +(test 0 p 0) + (report-errs) diff --git a/racket/collects/racket/place.rkt b/racket/collects/racket/place.rkt index e62cb8e71b..b2ade96e54 100644 --- a/racket/collects/racket/place.rkt +++ b/racket/collects/racket/place.rkt @@ -238,7 +238,7 @@ (define-syntax (place/context stx) (syntax-parse stx [(_ ch:id body:expr ...) - (define b #'(let () body ...)) + (define b #'(lambda (ch) body ...)) (define/with-syntax b* (local-expand b 'expression null)) (define/with-syntax (fvs ...) (free-vars #'b*)) (define/with-syntax (i ...) (for/list ([(v i) (in-indexed (syntax->list #'(fvs ...)))]) i)) @@ -246,7 +246,7 @@ #'(let () (define p (place ch (let* ([v (place-channel-get ch)] [fvs (vector-ref v i)] ...) - b*))) + (b* ch)))) (define vec (vector fvs ...)) (for ([e (in-vector vec)] [n (in-list (syntax->list (quote-syntax (fvs ...))))])