diff --git a/collects/redex/private/rg.rkt b/collects/redex/private/rg.rkt index b4d636f11b..941bec0e0e 100644 --- a/collects/redex/private/rg.rkt +++ b/collects/redex/private/rg.rkt @@ -307,12 +307,13 @@ (let ([ctx (recur context)] [ctm (recur contractum)]) (λ (r s a e h) - (let-values ([(term env) (ctm r s a e h)]) - (ctx r s a env term))))] + (let*-values ([(tctm env) (ctm r s a e h)] + [(tctx env) (ctx r s a env the-hole)]) + (values (plug tctx tctm) env))))] [`(hide-hole ,pattern) (let ([g (recur pattern)]) (λ (r s a e h) - (g r s a e the-hole)))] + (g r s a e the-not-hole)))] [`any (λ (r s a e h) (let*-values ([(lang nt) ((next-any-decision) langc sexpc)] diff --git a/collects/redex/tests/rg-test.rkt b/collects/redex/tests/rg-test.rkt index 3bf80b5506..6983ae4a21 100644 --- a/collects/redex/tests/rg-test.rkt +++ b/collects/redex/tests/rg-test.rkt @@ -412,6 +412,10 @@ #:num (build-list 5 (λ (x) (λ (_) x))))) '(+ (+ 1 2) (+ 0 (+ 3 4)))) + (test (let/ec k + (generate-term lang (side-condition (in-hole C_1 1) (k (term C_1))) 5)) + (term hole)) + (test (generate-term lang (in-hole (in-hole (1 hole) hole) 5) 5) '(1 5)) (test (generate-term lang (hole 4) 5) (term (hole 4))) (test (generate-term/decisions