From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thierry Volpiatto Newsgroups: gmane.emacs.devel Subject: Re: false warnings when compiling with lexical-binding and cl-lib. Date: Sat, 23 Nov 2013 07:13:12 +0100 Organization: Emacs Helm Message-ID: <87ob5bzlvr.fsf@gmail.com> References: <8761rl6ael.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1385187221 17960 80.91.229.3 (23 Nov 2013 06:13:41 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 23 Nov 2013 06:13:41 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Nov 23 07:13:46 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Vk6TO-0003xd-FP for ged-emacs-devel@m.gmane.org; Sat, 23 Nov 2013 07:13:42 +0100 Original-Received: from localhost ([::1]:42519 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vk6TO-0005vo-1h for ged-emacs-devel@m.gmane.org; Sat, 23 Nov 2013 01:13:42 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59331) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vk6TG-0005vd-CD for emacs-devel@gnu.org; Sat, 23 Nov 2013 01:13:39 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vk6TB-0002qf-02 for emacs-devel@gnu.org; Sat, 23 Nov 2013 01:13:34 -0500 Original-Received: from mail-bk0-x234.google.com ([2a00:1450:4008:c01::234]:47913) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vk6TA-0002qV-O2 for emacs-devel@gnu.org; Sat, 23 Nov 2013 01:13:28 -0500 Original-Received: by mail-bk0-f52.google.com with SMTP id u14so1070920bkz.25 for ; Fri, 22 Nov 2013 22:13:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:organization:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=ZCVbspkdEaGUGXzK5n0sbaXHJfGCNN2TWgJ/mrMCdWI=; b=iIGdSMReGhRKUDIDK8aaju5QkLDW9w30wQw86y+TmXsalJwY4Wn3oliX6gcCEmAJg1 oxRq6rR1n3iBlRJqYnobPWEKgi2euI++mOpNSOpQCylchOeXKqdjTXiciHqzNql90Sbt rwkYVhqp8u+X30hIB6nLoIdfPK6ruyzaHSFFRrghSlvoSPJc07+gCcEorCD534+2eWAJ V503O8GRwXj4RFID5hpINofDMnjyVMMYtzNhAzDb6dK+vlzI0q5k5JUE0nhe1PuN1IbJ 3PUfouckldcpAeAyr//oxWvbyn8MpTyn84OIZPhkQ53hTcNwfTw0AmoT8iw9UPRE6IMa BCsw== X-Received: by 10.204.114.68 with SMTP id d4mr2975175bkq.13.1385187206977; Fri, 22 Nov 2013 22:13:26 -0800 (PST) Original-Received: from dell-14z ([37.162.207.70]) by mx.google.com with ESMTPSA id z6sm35018693bkn.8.2013.11.22.22.13.22 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 22 Nov 2013 22:13:26 -0800 (PST) In-Reply-To: (Stefan Monnier's message of "Thu, 21 Nov 2013 20:19:43 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4008:c01::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:165602 Archived-At: Stefan Monnier writes: >> here a sample file containing a function using loop: > >> --8<---------------cut here---------------start------------->8--- >> ;;; test.el --- test loop -*- lexical-binding: t -*- > >> (require 'cl-lib) > >> (defun test-with (l) >> (cl-loop with lst >> for i in l >> unless (member i lst) >> collect i into lst >> finally return lst)) >> --8<---------------cut here---------------end--------------->8--- > >> When compiling this file I have a warning about unused arg `lst'. >> Is this wanted ? > > No, it's not wanted. But noone so far as been able to come up with > a patch to fix it (the code to fix is the cl-loop macro: look at the > macro-expanded code to see the unused `lst'). This patch avoid adding a new binding by the 'into' clause when the binding have been already added by a 'with' clause. I wonder if this is correct, real common-lisp return an error in such case, WDYT? --8<---------------cut here---------------start------------->8--- diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 2209297..63cf7a1 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1564,9 +1564,11 @@ If BODY is `setq', then use SPECS for assignments rather than for bindings." (defun cl--loop-handle-accum (def &optional func) ; uses loop-* (if (eq (car cl--loop-args) 'into) - (let ((var (cl--pop2 cl--loop-args))) + (let* ((var (cl--pop2 cl--loop-args)) + (binding (list (list var def)))) (or (memq var cl--loop-accum-vars) - (progn (push (list (list var def)) cl--loop-bindings) + (member binding cl--loop-bindings) + (progn (push binding cl--loop-bindings) (push var cl--loop-accum-vars))) var) (or cl--loop-accum-var --8<---------------cut here---------------end--------------->8--- -- Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997