diff --git a/pkgs/racket-test-core/tests/racket/module.rktl b/pkgs/racket-test-core/tests/racket/module.rktl index 0233b98026..9d153bed3b 100644 --- a/pkgs/racket-test-core/tests/racket/module.rktl +++ b/pkgs/racket-test-core/tests/racket/module.rktl @@ -3145,4 +3145,13 @@ case of module-leve bindings; it doesn't cover local bindings. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(test '(1 2 3) + call-with-continuation-prompt + (lambda () + (eval (quote (begin (abort-current-continuation (default-continuation-prompt-tag) 1 2 3) 10)))) + (default-continuation-prompt-tag) + list) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (report-errs) diff --git a/pkgs/racket-test-core/tests/racket/prompt.rktl b/pkgs/racket-test-core/tests/racket/prompt.rktl index 5fa25de054..c1e44aefd2 100644 --- a/pkgs/racket-test-core/tests/racket/prompt.rktl +++ b/pkgs/racket-test-core/tests/racket/prompt.rktl @@ -658,6 +658,16 @@ t)) exn:fail:contract:continuation?)) +;;---------------------------------------- +;; Make sure prompt at top level can propagate multiple values + +(test '(1 2 3) + call-with-continuation-prompt + (lambda () + (eval (quote (begin (abort-current-continuation (default-continuation-prompt-tag) 1 2 3) 10)))) + (default-continuation-prompt-tag) + list) + ;;---------------------------------------- (report-errs) diff --git a/racket/src/cs/linklet.sls b/racket/src/cs/linklet.sls index 61ca6e4754..0de00bef1c 100644 --- a/racket/src/cs/linklet.sls +++ b/racket/src/cs/linklet.sls @@ -1074,10 +1074,11 @@ ;; -------------------------------------------------- (define module-prompt-handler - (lambda (arg) - (abort-current-continuation + (lambda args + (apply + abort-current-continuation (default-continuation-prompt-tag) - arg))) + args))) (define call-with-module-prompt (case-lambda