diff --git a/collects/tests/racket/prompt-tests.rktl b/collects/tests/racket/prompt-tests.rktl index c7dddec707..5a856ffe83 100644 --- a/collects/tests/racket/prompt-tests.rktl +++ b/collects/tests/racket/prompt-tests.rktl @@ -2255,3 +2255,47 @@ (λ () #f)) (λ (x) x)) 12345))) + +(test + 12345 + 'no-prompt-post-check-on-compose + (let () + (define pt1 (make-continuation-prompt-tag)) + + (define-syntax-rule (% pt body handler) + (call-with-continuation-prompt + (lambda () body) + pt + handler)) + + ((λ (y-comp-cont_7) + ((λ (x-comp-cont_3) + ((% + pt1 + (x-comp-cont_3 + (λ () + (y-comp-cont_7 + (λ () (call-with-composable-continuation + (λ (k) (abort-current-continuation pt1 k)) + pt1))))) + (λ (x) x)) + 12345)) + (% + pt1 + (dynamic-wind + (λ () (y-comp-cont_7 (λ () #f))) + (λ () ((call-with-composable-continuation + (λ (k) (abort-current-continuation pt1 k)) + pt1))) + (λ () #f)) + (λ (x) x)))) + (% + pt1 + (dynamic-wind + (λ () #f) + (λ () ((call-with-composable-continuation + (λ (k) (abort-current-continuation pt1 k)) + pt1))) + (λ () #f)) + (λ (x) x))))) + diff --git a/src/racket/src/fun.c b/src/racket/src/fun.c index 3513ee42f0..c0ff3a175c 100644 --- a/src/racket/src/fun.c +++ b/src/racket/src/fun.c @@ -9086,7 +9086,7 @@ void scheme_apply_dw_in_meta(Scheme_Dynamic_Wind *dw, int post_part, int meta_de p = scheme_current_thread; - if (recheck) { + if (recheck && !recheck->composable) { if (scheme_continuation_application_count != old_cac) { scheme_recheck_prompt_and_barrier(recheck); }