From b8d6d649bcf077b6f13d816d0c0da8e8afe64150 Mon Sep 17 00:00:00 2001 From: Oscar Waddell Date: Mon, 18 Mar 2019 15:00:57 -0400 Subject: [PATCH] ignore multiple-value return from interleaved init expressions in top-level-program original commit: f5fd9d144b68af26244855c7c2f34be97298deea --- LOG | 3 +++ mats/8.ms | 12 ++++++++++++ s/syntax.ss | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/LOG b/LOG index 24107c1467..e87c0236a4 100644 --- a/LOG +++ b/LOG @@ -1251,3 +1251,6 @@ embed git revision in exported source archives bintar/Makefile Mf-install.in wininstall/*nt.wxs s/Mf-base s/.gitattributes s/update-revision +- ignore multiple-value return from interleaved init expressions in + top-level-program + syntax.ss, 8.ms diff --git a/mats/8.ms b/mats/8.ms index 9df4853d42..08efa6a475 100644 --- a/mats/8.ms +++ b/mats/8.ms @@ -10715,6 +10715,18 @@ (remprop 'tlp-spam 'spam) (remprop 'tlp-spam 'tlp) #t)) + ; make sure we ignore return value(s) of interleaved init expressions + (equal? + (with-output-to-string + (lambda () + ; prevent cp0 from fixing the problem + (parameterize ([run-cp0 (lambda (f x) x)]) + (eval '(top-level-program (import (scheme)) + (define (f) (printf "hello\n") (values 1 2 3)) + (f) + (define x 'world) + (pretty-print x)))))) + "hello\nworld\n") ) (mat library-meta diff --git a/s/syntax.ss b/s/syntax.ss index a52f0b9ec9..b803364004 100644 --- a/s/syntax.ss +++ b/s/syntax.ss @@ -2830,7 +2830,8 @@ [interleaved-init (frob) (process-bindings mb* r (cons (build-lexical-var no-source 't) dv*) - (cons frob de*))] + (cons (make-frob #`(begin #,(frob-e frob) (void)) (frob-meta? frob)) + de*))] [else (process-bindings mb* r dv* de*)])))))))) (define chi-top-module