repair decompiler to properly reflect the beg0 bytecode form

A single expression in `beg0` is never in tail position, unlike
a single expression within `begin0`.
This commit is contained in:
Gustavo Massaccesi 2014-12-01 15:20:37 -03:00 committed by Matthew Flatt
parent acc484f146
commit 9650129c86

View File

@ -425,8 +425,11 @@
`(begin ,@(for/list ([expr (in-list exprs)]) `(begin ,@(for/list ([expr (in-list exprs)])
(decompile-expr expr globs stack closed)))] (decompile-expr expr globs stack closed)))]
[(struct beg0 (exprs)) [(struct beg0 (exprs))
(if (> (length exprs) 1)
`(begin0 ,@(for/list ([expr (in-list exprs)]) `(begin0 ,@(for/list ([expr (in-list exprs)])
(decompile-expr expr globs stack closed)))] (decompile-expr expr globs stack closed)))
`(begin0 ,(decompile-expr (car exprs) globs stack closed)
(void)))]
[(struct with-cont-mark (key val body)) [(struct with-cont-mark (key val body))
`(with-continuation-mark `(with-continuation-mark
,(decompile-expr key globs stack closed) ,(decompile-expr key globs stack closed)