From e650764a4cd4677c37f989465e6b49c42973acbd Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Fri, 30 Sep 2011 17:05:23 -0600 Subject: [PATCH] place-channel? returns #t for place descriptors, doc clarification --- collects/scribblings/reference/places.scrbl | 3 ++- collects/tests/racket/place.rktl | 1 + src/racket/src/place.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/collects/scribblings/reference/places.scrbl b/collects/scribblings/reference/places.scrbl index 9b99bbf4e5..dffbb0d294 100644 --- a/collects/scribblings/reference/places.scrbl +++ b/collects/scribblings/reference/places.scrbl @@ -257,7 +257,8 @@ If any pumping threads were created to connect a non-@tech{file-stream } @defproc[(place-channel-put [pch place-channel?] [v place-message-allowed?]) void]{ - Sends a message @racket[v] on channel @racket[pch]. + Sends a message @racket[v] on channel @racket[pch]. Since place channels + are asynchronous, @racket[place-channel-put] calls are non-blocking. See @racket[place-message-allowed?] form information on automatic coercions in @racket[v], such as converting a mutable string to an diff --git a/collects/tests/racket/place.rktl b/collects/tests/racket/place.rktl index 52b4f8bff5..e49441d468 100644 --- a/collects/tests/racket/place.rktl +++ b/collects/tests/racket/place.rktl @@ -12,6 +12,7 @@ (test #f place? 1) (test #f place? void) (test #t place? p) + (test #t place-channel? p) (err/rt-test (place-wait 1)) (err/rt-test (place-wait void)) diff --git a/src/racket/src/place.c b/src/racket/src/place.c index 5ed3a9a24d..b9bb19d69b 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -2572,7 +2572,8 @@ static Scheme_Object *place_channel(int argc, Scheme_Object *args[]) { static Scheme_Object *place_channel_p(int argc, Scheme_Object *args[]) { - return SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_bi_channel_type) ? scheme_true : scheme_false; + return (SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_bi_channel_type) || + SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_type)) ? scheme_true : scheme_false; } static Scheme_Object *GC_master_make_vector(int size) {