diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index 3c52c0a6f0..f0530d4dab 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "7.2.0.11") +(define version "7.2.0.12") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/racket/src/cs/rumble/begin0.ss b/racket/src/cs/rumble/begin0.ss index 70ddd190fe..4e9fe78071 100644 --- a/racket/src/cs/rumble/begin0.ss +++ b/racket/src/cs/rumble/begin0.ss @@ -1,7 +1,10 @@ ;; See copy in "expander.sls" (define-syntax begin0 - (syntax-rules () + (syntax-rules (void) + [(_ expr0) expr0] + [(_ expr0 (void)) ; detect this pattern as a way of accessing the `$value` form + ($value expr0)] [(_ expr0 expr ...) (call-with-values (lambda () (call-with-values (lambda () expr0) diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index b1ed823ca7..2b4783d886 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "7.2.0.11" +#define MZSCHEME_VERSION "7.2.0.12" #define MZSCHEME_VERSION_X 7 #define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 11 +#define MZSCHEME_VERSION_W 12 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/racket/src/schemify/interpret.rkt b/racket/src/schemify/interpret.rkt index 9d7f76d20e..5ac306d9ae 100644 --- a/racket/src/schemify/interpret.rkt +++ b/racket/src/schemify/interpret.rkt @@ -224,13 +224,15 @@ [`(letrec* . ,_) (compile-letrec e env stack-depth stk-i tail?)] [`(begin . ,vs) (compile-body vs env stack-depth stk-i tail?)] + [`(begin0 ,e) + (compile-expr e env stack-depth stk-i tail?)] [`(begin0 ,e . ,vs) (define new-body (compile-body vs env stack-depth stk-i #f)) (vector 'begin0 (compile-expr e env stack-depth stk-i #f) new-body)] [`($value ,e) - (compile-expr e env stack-depth stk-i tail?)] + (vector '$value (compile-expr e env stack-depth stk-i #f))] [`(if ,tst ,thn ,els) (define then-stk-i (stack-info-branch stk-i)) (define else-stk-i (stack-info-branch stk-i)) @@ -610,6 +612,8 @@ (apply values vals) (apply values new-stack vals)) (loop (fx+ i 1) new-stack)))))] + [#($value ,e) + (begin0 (interpret e stack) (void))] [#(clear ,clears ,e) (let loop ([clears clears] [stack stack]) (cond