From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Gemini Lasswell Newsgroups: gmane.emacs.bugs Subject: bug#25965: 26.0.50; iter-lambda may evaluate certain forms twice Date: Thu, 21 Sep 2017 14:36:34 -0700 Message-ID: <87r2uzwx7h.fsf@runbox.com> References: <87efydcvvr.fsf@luca> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1506029837 2850 195.159.176.226 (21 Sep 2017 21:37:17 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 21 Sep 2017 21:37:17 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.60 (gnu/linux) Cc: 25965@debbugs.gnu.org, Stefan Monnier , Andreas Politz To: Daniel Colascione Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Sep 21 23:37:13 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dv99i-0000HV-J8 for geb-bug-gnu-emacs@m.gmane.org; Thu, 21 Sep 2017 23:37:10 +0200 Original-Received: from localhost ([::1]:55611 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dv99p-0005Nb-Le for geb-bug-gnu-emacs@m.gmane.org; Thu, 21 Sep 2017 17:37:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37342) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dv99g-0005Mb-9o for bug-gnu-emacs@gnu.org; Thu, 21 Sep 2017 17:37:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dv99b-00086C-Bs for bug-gnu-emacs@gnu.org; Thu, 21 Sep 2017 17:37:08 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:43265) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dv99a-00085e-VR for bug-gnu-emacs@gnu.org; Thu, 21 Sep 2017 17:37:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dv99a-0004m2-FN for bug-gnu-emacs@gnu.org; Thu, 21 Sep 2017 17:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Gemini Lasswell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Sep 2017 21:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25965 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 25965-submit@debbugs.gnu.org id=B25965.150602980918329 (code B ref 25965); Thu, 21 Sep 2017 21:37:02 +0000 Original-Received: (at 25965) by debbugs.gnu.org; 21 Sep 2017 21:36:49 +0000 Original-Received: from localhost ([127.0.0.1]:51946 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dv99N-0004lU-BZ for submit@debbugs.gnu.org; Thu, 21 Sep 2017 17:36:49 -0400 Original-Received: from aibo.runbox.com ([91.220.196.211]:60874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dv99K-0004lC-U1; Thu, 21 Sep 2017 17:36:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=vUTe7cnEW7nlMlAskKI4ShhO0ZHkXikuK6Ohk4YAR6A=; b=ZmSA4q/PSsVeahhqR+7nQs5g5i 2siDWYT3rnvl36AHz5j1slRKUFDpdTQ1cgjVfl1I0b29jEogT3pnS5YRQpsWvFVQbXY/VMuvBiGat WdQ4wo1NYW0Tmx9eISiZd5mn1HVCD9tJQJ0xj8OZp1c1AJAXygFEAXItmeYlr6psziF4b7XS2KQJP 73M6a92f66KY/IMP73lVpAgwUtgHhIR8QlPqtbKSp8yqtUXVr8Ho+UN2fYtpfSNeQ/w9iwu4ezWjJ RmI5bVE7g1giYlqjKlmynljImFKdrjG8/vUnsb0rxgVHkm8BLiRr4NtCy3eity+i36DOwzddJHQPS zqtONr8A==; Original-Received: from [10.9.9.210] (helo=mailfront10.runbox.com) by mailtransmit02.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1dv99E-0006D8-Ks; Thu, 21 Sep 2017 23:36:40 +0200 Original-Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront10.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1dv99B-0001RQ-40; Thu, 21 Sep 2017 23:36:37 +0200 In-Reply-To: (Daniel Colascione's message of "Wed, 08 Mar 2017 14:08:07 -0800") 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: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:137224 Archived-At: --=-=-= Content-Type: text/plain tags 25965 patch quit Daniel Colascione writes: > I think it's safe to remove it. Let's make > sure to add a test too. Here's a patch which removes the second ,form and adds a test: --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=0001-Fix-dynamic-binding-wrapper-in-iter-lambda-bug-25965.patch >From 46720f235ff11f64a35b91e74110fd3a8e01be4f Mon Sep 17 00:00:00 2001 From: Gemini Lasswell Date: Wed, 20 Sep 2017 10:17:35 -0700 Subject: [PATCH] Fix dynamic binding wrapper in iter-lambda (bug#25965) * lisp/emacs-lisp/generator.el (cps--make-dynamic-binding-wrapper): Remove extra evaluation of form. * test/lisp/emacs-lisp/generator-tests.el (cps-iter-lambda-with-dynamic-binding): New test. --- lisp/emacs-lisp/generator.el | 3 +-- test/lisp/emacs-lisp/generator-tests.el | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el index f3597cc387..3e9885900c 100644 --- a/lisp/emacs-lisp/generator.el +++ b/lisp/emacs-lisp/generator.el @@ -142,8 +142,7 @@ cps--make-dynamic-binding-wrapper `(let ((,dynamic-var ,static-var)) (unwind-protect ; Update the static shadow after evaluation is done ,form - (setf ,static-var ,dynamic-var)) - ,form))) + (setf ,static-var ,dynamic-var))))) (defmacro cps--with-dynamic-binding (dynamic-var static-var &rest body) "Evaluate BODY such that generated atomic evaluations run with diff --git a/test/lisp/emacs-lisp/generator-tests.el b/test/lisp/emacs-lisp/generator-tests.el index 4cc6c841da..cbb136ae91 100644 --- a/test/lisp/emacs-lisp/generator-tests.el +++ b/test/lisp/emacs-lisp/generator-tests.el @@ -282,3 +282,13 @@ cps-test-closed-flag (ert-deftest cps-test-declarations-preserved () (should (equal (documentation 'generator-with-docstring) "Documentation!")) (should (equal (get 'generator-with-docstring 'lisp-indent-function) 5))) + +(ert-deftest cps-iter-lambda-with-dynamic-binding () + "`iter-lambda' with dynamic binding produces correct result (bug#25965)." + (should (= 1 + (iter-next + (funcall (iter-lambda () + (let* ((fill-column 10) ;;any special variable will do + (i 0) + (j (setq i (1+ i)))) + (iter-yield i)))))))) -- 2.14.1 --=-=-=--