From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Tim Gesthuizen via "Bug reports for GUILE, GNU's Ubiquitous Extension Language" Newsgroups: gmane.lisp.guile.bugs Subject: bug#38263: Bug in srfi-11 Date: Tue, 03 Dec 2019 19:15:29 +0100 Message-ID: <87o8wpz35q.fsf@yahoo.de> References: <87blt76eum.fsf.ref@yahoo.de> <87blt76eum.fsf@yahoo.de> <87pnhh1x4o.fsf@netris.org> <87r21x9k9f.fsf@yahoo.de> <878so5122a.fsf@netris.org> <87pnhh9h45.fsf@yahoo.de> Reply-To: Tim Gesthuizen Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="77116"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: mu4e 1.2.0; emacs 26.3 Cc: 38263@debbugs.gnu.org To: Mark H Weaver Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Tue Dec 03 20:11:25 2019 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1icDZz-000Jny-Uf for guile-bugs@m.gmane.org; Tue, 03 Dec 2019 20:11:24 +0100 Original-Received: from localhost ([::1]:57612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1icDZy-0002JY-CW for guile-bugs@m.gmane.org; Tue, 03 Dec 2019 14:11:22 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34907) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1icCim-0001sy-Li for bug-guile@gnu.org; Tue, 03 Dec 2019 13:16:28 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1icCiZ-0003EF-Jr for bug-guile@gnu.org; Tue, 03 Dec 2019 13:16:22 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:35075) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1icCiU-00034a-B1 for bug-guile@gnu.org; Tue, 03 Dec 2019 13:16:10 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1icCiR-0002aV-6d for bug-guile@gnu.org; Tue, 03 Dec 2019 13:16:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Tim Gesthuizen Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 03 Dec 2019 18:16:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38263 X-GNU-PR-Package: guile Original-Received: via spool by 38263-submit@debbugs.gnu.org id=B38263.15753969469918 (code B ref 38263); Tue, 03 Dec 2019 18:16:03 +0000 Original-Received: (at 38263) by debbugs.gnu.org; 3 Dec 2019 18:15:46 +0000 Original-Received: from localhost ([127.0.0.1]:41047 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icCiA-0002Zo-5A for submit@debbugs.gnu.org; Tue, 03 Dec 2019 13:15:46 -0500 Original-Received: from sonic301-22.consmr.mail.ir2.yahoo.com ([77.238.176.99]:42917) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icCi8-0002ZQ-44 for 38263@debbugs.gnu.org; Tue, 03 Dec 2019 13:15:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1575396935; bh=LyCKylzYYhwnpHXDVnXUFTcfdU6lMneqhMZFla6/H+A=; h=References:From:To:Cc:Subject:Date:From:Subject; b=FO5yhWYCXxCXB0qNduOBfKI1RF6IFvJvlNxk1JbvE5iWgj8diKu4gPLrdYItj9KfWfmBL4tZTV2nf73rNTBySpP2ESSZ2O8L3FQ9B64vcqo/VjYC8zzusShvrMYLDTct/Wxbkd2AjfyRM3DtqsxBIGoEgk00wNNrkFUmDzbDNiFemLdyqzsXhCFjITbx9RJMsaEU37Orqk/v7Xr4r2m2mos1vMVmaOtbK7NWpKEMUUEXAAzJk3uePmgjlReARW3mF0aEjJqwZ6verf+AL9pCd5jp3PAuxwPOY/ge+Gy4BVM3l8izXw7UhEfp55nMi25ghyBrZE6Q78gdb9LHt0AyFg== X-YMail-OSG: Y.VxCSoVM1mWjQOjI7pFcfJsomvQ9IVAnLWdZQpOFlZ2Tw2NAgt_NfN8j2fV_h5 TxcTQUPCc28YJwqAGSl.2pcxxIHpZwnTKaYI2UWjGenrqNvlguWQz0pxGSp5efkUKpqd6WYMYh8X yewMKlfTC7HkLr2oDojAV9L6D6Vsc7gCiA_02tpdmIovMoYdVg4tOiANy.GHe9etnw8fk2WCtIq8 lDPHB4cfPV5zm3jdtbx7Cx_nIdnoaW.WbZi32MXfuILc8VBjsJ5HIMS_pRpB3HOL09VuJEPP8V.i XqvWTsYu9NqsSS_Icx8x22UhtAo5dMVefbOrigm.pTgBdTJTh7.Nesj08FTjb9PW7I82bLcTXtHx L5XznLsvIbJiqaaj._VybVwc4n4rz46.bleO0OIS7MXpYB4qorN2H8DrNmYXHWJ4CM90VWIWFxiA LQf2aHQodnWusoaGFofZPi8KuVbljI5UjS8Sz1UUXqAStj9N7420uPMQn0PgvLCrbr1fpfqvOc9H XSEquicENB5c1jhLPtU.ZjVjBpdPVVwRMjOGX.QeQr6bSxzCAsrl5GR8OQK91EyHghRtkIKVUQEq 03cCSVAXictzKXF62w_W8TGIWy7cZs5vxson7IbarTLq3LglKek.NkbrrlZU2BTqybfLVS9ua5Zs R9ns9U7JvJxNRduz.Lws2FVQ0OzF9baC.lT0pOar9FnJBamIpvm5bjW72KaO0IgYVQ71Kd7XuhYI PhU5GuT47Vm1D5pkYBCdHNidqhR03TmThJ5y6Uo7vHQdgaqAvgiqXKZtNWp7._ULA.srC1TpKlVw QKnZSnUzBuwna2_hElT0k9nJZIceGn6Us_FE1DE_8r Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.ir2.yahoo.com with HTTP; Tue, 3 Dec 2019 18:15:35 +0000 Original-Received: by smtp422.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 38150f8377b4fb08ffe59cf03c0f404c; Tue, 03 Dec 2019 18:15:30 +0000 (UTC) In-reply-to: <87pnhh9h45.fsf@yahoo.de> X-Mailer: WebService/1.1.14728 hermes Apache-HttpAsyncClient/4.1.4 (Java/1.8.0_181) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:9479 Archived-At: --=-=-= Content-Type: text/plain Hello again, the attached patch also adds a unit test. I am not into how Guile is organized: Is there anything keeping us from adding the change? Tim. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-srfi-11-Do-not-expose-variables-to-later-clauses.patch >From 99d8fb795932eb92b7d5fb09115b6691f4bfe66d Mon Sep 17 00:00:00 2001 From: Tim Gesthuizen Date: Tue, 3 Dec 2019 18:50:37 +0100 Subject: [PATCH] srfi-11: Do not expose variables to later clauses The current implementation of srfi-11s let-values allows later clauses to access and modify variables bound in earlier clauses when the clause is not a proper list. * module/srfi/srfi-11.scm (let-values): Fix switched variable names. * test-suite/tests/srfi-11.test (let-values): Add test checking that the variable cannot be changed in later clauses. --- module/srfi/srfi-11.scm | 2 +- test-suite/tests/srfi-11.test | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/module/srfi/srfi-11.scm b/module/srfi/srfi-11.scm index 22bda21a2..7afac9c5f 100644 --- a/module/srfi/srfi-11.scm +++ b/module/srfi/srfi-11.scm @@ -91,7 +91,7 @@ (syntax (call-with-values (lambda () exp) (lambda (new-tmp ...) inner)))))) ((vars exp) - (with-syntax ((((new-tmp . new-var) ...) + (with-syntax ((((new-var . new-tmp) ...) (let lp ((vars (syntax vars))) (syntax-case vars () ((id . rest) diff --git a/test-suite/tests/srfi-11.test b/test-suite/tests/srfi-11.test index 40563dc18..9bfaa4300 100644 --- a/test-suite/tests/srfi-11.test +++ b/test-suite/tests/srfi-11.test @@ -74,7 +74,14 @@ '(unbound-variable . ".*") (let-values (((x) (values 1)) ((y) (values (1+ x)))) - #f)))) + #f)) + + (pass-if "first binding with rest invisible to second expr" + (let* ((a 1) + (b (let-values (((a . b) (values 2 3)) + (c (begin (set! a 9) 4))) + (list a b c)))) + (equal? (cons a b) '(9 2 (3) (4))))))) ;; ;; let*-values -- 2.24.0 --=-=-=--