From 274322e06dd7b4bdd2ef4be8cda3d14a9b68ff2f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 16 Jul 2017 17:04:54 -0600 Subject: [PATCH] fix `(define-values () ....)` to expand to a definition Expanding to a definition means that it doesn't interrupt a definition sequence. original commit: c2d8a2fdc6ef40c5eba15904d6203032dc6f555e --- LOG | 2 ++ mats/3.ms | 10 ++++++++++ s/syntax.ss | 17 +++++++++-------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/LOG b/LOG index 0bedb18bc8..0dccb53482 100644 --- a/LOG +++ b/LOG @@ -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 diff --git a/mats/3.ms b/mats/3.ms index 72c163e329..ab1e794204 100644 --- a/mats/3.ms +++ b/mats/3.ms @@ -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 diff --git a/s/syntax.ss b/s/syntax.ss index 319903b1a9..69ee8c0e29 100644 --- a/s/syntax.ss +++ b/s/syntax.ss @@ -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)