cs: fix prompt handler for module/eval prompt and multiple values

This commit is contained in:
Matthew Flatt 2019-11-26 05:32:29 -07:00
parent 568433c1a9
commit 6389b18b01
3 changed files with 23 additions and 3 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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