Merge pull request #191 from mflatt/dv0

fix `(define-values () ....)` to expand to a definition
original commit: ce11b3485fc146704fc466377bf6e6f9357cdc9d
This commit is contained in:
R. Kent Dybvig 2017-07-16 23:31:40 -04:00 committed by GitHub
commit 5fc720d9dd
3 changed files with 21 additions and 8 deletions

2
LOG
View File

@ -541,3 +541,5 @@
misc.ms
- minor wordsmithing and fix for an overfull hbox
objects.stex, system.stex
- fix (define-values () ....) to expand to a definition
syntax.ss, 3.ms

View File

@ -1087,6 +1087,16 @@
(define-values (args . rot) (values #'(x ...) #'(x ...) 3))
(list args rot))])
'((a b c) ((a b c) 3)))
(equal?
(let ()
(define x 1)
(define-values ()
(begin
"don't interrupt definitions"
(values)))
(define y 2)
(list x y))
'(1 2))
)
(mat assimilation

View File

@ -7848,14 +7848,15 @@
(syntax-case x ()
[(_ () expr)
(if (= (optimize-level) 3)
#'(begin expr (void))
#`(call-with-values
(lambda () expr)
(case-lambda
[() (void)]
[args #,($make-source-oops #'define-values
"incorrect number of values from rhs"
#'expr)])))]
#'(define unused (begin expr (void)))
#`(define unused
(call-with-values
(lambda () expr)
(case-lambda
[() (void)]
[args #,($make-source-oops #'define-values
"incorrect number of values from rhs"
#'expr)]))))]
[(_ (x) expr)
(identifier? #'x)
(if (= (optimize-level) 3)