cify: fix multiple-value return where braces are needed

Merge to v7.3
This commit is contained in:
Matthew Flatt 2019-04-08 13:12:09 -06:00
parent 5ce11626ef
commit 0d2dd8f578

View File

@ -270,6 +270,7 @@
(runstack-push! runstack vals-id)
(out "int ~a_count;" vals-id)
(generate (multiple-return (lambda (s)
(out-open "{")
(out "~a = ~a;" (runstack-assign runstack vals-id) s)
(out-open "if (~a == SCHEME_MULTIPLE_VALUES) {" (runstack-ref runstack vals-id #:values-ok? #t))
(out "Scheme_Object **~a_vals;" vals-id)
@ -280,7 +281,8 @@
(out "~a = (Scheme_Object *)~a_vals;" (runstack-assign runstack vals-id) vals-id)
(out-close+open "} else")
(out "~a_count = 1;" vals-id)
(out-close!)))
(out-close!)
(out-close "}")))
e env)
(generate (multiple-return "") `(begin . ,r) env)
(runstack-sync! runstack)