diff --git a/collects/redex/examples/delim-cont/meta.rkt b/collects/redex/examples/delim-cont/meta.rkt index 01b0424177..8184bf66ec 100644 --- a/collects/redex/examples/delim-cont/meta.rkt +++ b/collects/redex/examples/delim-cont/meta.rkt @@ -63,7 +63,9 @@ [(noPrompt v_1 (begin E_1 e_2)) (noPrompt v_1 E_1)] [(noPrompt v_1 (set! x E_1)) (noPrompt v_1 E_1)] [(noPrompt v_1 (wcm w E_1)) (noPrompt v_1 E_1)] - [(noPrompt v_1 (dw x e_0 E_1 e_1)) (noPrompt v_1 E_1)]) + [(noPrompt v_1 (dw x e_0 E_1 e_1)) (noPrompt v_1 E_1)] + [(noPrompt v_1 (% v_2 e E_1)) (noPrompt v_1 E_1)] + [(noPrompt v_1 (% E_1 e_1 e_2)) (noPrompt v_1 E_1)]) (define-metafunction grammar [(get-marks-core (in-hole hole hole) v e_2) e_2] @@ -72,6 +74,8 @@ [(get-marks-core (v ... E_1 e ...) v_1 e_2) (get-marks E_1 v_1 e_2)] [(get-marks-core (begin E_1 e) v_1 e_2) (get-marks E_1 v_1 e_2)] [(get-marks-core (% v_2 E_1 v_3) v_1 e_2) (get-marks E_1 v_1 e_2)] + [(get-marks-core (% v_2 e_1 E_1) v_1 e_2) (get-marks E_1 v_1 e_2)] + [(get-marks-core (% E_1 e_1 e_3) v_1 e_2) (get-marks E_1 v_1 e_2)] [(get-marks-core (dw x e E_1 e) v_1 e_2) (get-marks E_1 v_1 e_2)]) (define-metafunction grammar diff --git a/collects/redex/examples/delim-cont/test.rkt b/collects/redex/examples/delim-cont/test.rkt index 14e932336b..aebebb9e8b 100644 --- a/collects/redex/examples/delim-cont/test.rkt +++ b/collects/redex/examples/delim-cont/test.rkt @@ -324,7 +324,45 @@ '(<> () [1 2 1 2] - (λ (v) 10)))) + (λ (v) 10))) + (test "prompt enclosing prompt-tag expression" + '(<> () [] + (% 0 + (% (abort 0 1) 2 3) + (λ (x) x))) + '(<> () [] 1)) + (test "prompt enclosing prompt-handler expression" + '(<> () [] + (% 0 + (begin + (% 0 1 (abort 0 2)) + (print 3)) + (λ (x) x))) + '(<> () [] 2)) + (test "prompt-tag position in continuation-marks context" + '(<> () [] + (% 0 + (call/cm + 1 2 + (λ () + (% (abort 0 (current-marks 1 0)) + 3 + 4))) + (λ (x) x))) + '(<> () [] (list 2))) + (test "prompt-handler position in continuation-marks context" + '(<> () [] + (% 0 + (call/cm + 1 2 + (λ () + (call/cm + 1 3 + (% 0 + 4 + (abort 0 (current-marks 1 0)))))) + (λ (x) x))) + '(<> () [] (list 2)))) ;; R6RS dynamic-wind ----------------------------------------