From unknown Fri Aug 15 14:16:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#31792 <31792@debbugs.gnu.org> To: bug#31792 <31792@debbugs.gnu.org> Subject: Status: 27.0.50; Regression in #'labels, recent versions Reply-To: bug#31792 <31792@debbugs.gnu.org> Date: Fri, 15 Aug 2025 21:16:50 +0000 retitle 31792 27.0.50; Regression in #'labels, recent versions reassign 31792 emacs submitter 31792 Aidan Kehoe severity 31792 normal tag 31792 patch fixed thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 11 19:11:45 2018 Received: (at submit) by debbugs.gnu.org; 11 Jun 2018 23:11:46 +0000 Received: from localhost ([127.0.0.1]:43787 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSVyT-0007q9-Jo for submit@debbugs.gnu.org; Mon, 11 Jun 2018 19:11:45 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49729) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSVyR-0007pu-U8 for submit@debbugs.gnu.org; Mon, 11 Jun 2018 19:11:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSVyL-0000Eu-HP for submit@debbugs.gnu.org; Mon, 11 Jun 2018 19:11:38 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38281) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSVyL-0000Eo-DY for submit@debbugs.gnu.org; Mon, 11 Jun 2018 19:11:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSVyJ-0002Js-MI for bug-gnu-emacs@gnu.org; Mon, 11 Jun 2018 19:11:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSVyI-0000C4-75 for bug-gnu-emacs@gnu.org; Mon, 11 Jun 2018 19:11:35 -0400 Received: from mail.parhasard.net ([2a01:4f8:c17:36df::2]:59342) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSVyH-0000BK-QG for bug-gnu-emacs@gnu.org; Mon, 11 Jun 2018 19:11:34 -0400 Received: by mail.parhasard.net (Postfix, from userid 1000) id 721A24A25C5; Tue, 12 Jun 2018 01:11:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=parhasard.net; s=mail; t=1528758691; bh=Z9/ZVu4eX/4HR4QWLY626ovXv7wNnA61jpp7hjecJjk=; h=From:Date:To:Subject:From; b=ZQ9IVMvz1kq0Wv3jD4KNZbwyacdP9Fs4yDYqMC1LykRlcd0p78yIaxxVxxiFk7es/ yRezlvHlBnHtA7kHNePKyfs5XHxAcJdHMHzt9VJWc1bObviJiJUWrn5QWY95VVEKvC NC2HD87xxaLbLKDRwID99JNFTlPkoGJLYYUmuW+4= From: Aidan Kehoe MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Message-ID: <5b1f.0188.5dc11.f21c@parhasard.net> Date: Tue, 12 Jun 2018 00:11:04 +0100 To: bug-gnu-emacs@gnu.org Subject: 27.0.50; Regression in #'labels, recent versions X-Mailer: VM 8.2.0b under 21.5 (beta34) "kale" 06e4b596dc40 XEmacs Lucid (i386-apple-darwin10.8.0) X-NS5-file-as-sent: t Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.1 (-----) When I start this binary (see below for the details), do M-x byte-compile= -file /tmp/aidan/u.el RET, and then execute the following in *scratch*: (progn (load "/tmp/aidan/u.elc") (symbol-function 'my-package-accept-process-output)) I get: =3D> my-package-accept-process-output-1 When I do the same in the emacs 22.1.1 that Apple built and shipped with my OS, I get a compiled function object, as is much closer to being the correct behaviour. Contents of /tmp/aidan/u.el (a narrowed-down test case of some code I had planned to write):=20 ---- Begin: (require 'cl) (labels ((my-package-accept-process-output-1 (process-object &optional timeou= t-secs timeout-msecs) "Call `my-package-filter' and pass it the output of the last my-pa= ckage invocation." (if (null process-object) (error "No My-Package process to read output from!") (let ((buf my-package-output-buffer) my-package-output) (if (not (bufferp buf)) (setq my-package-filter nil) (with-current-buffer buf (setq my-package-output (buffer-substring-no-properties (point-min) (point-max)))) (my-package-filter t my-package-output) (with-current-buffer buf (erase-buffer))))))) (defalias 'my-package-accept-process-output (if (boundp 'my-package-async-processp) #'accept-process-output #'my-package-accept-process-output-1))) ---- End: In GNU Emacs 27.0.50 (build 3, i386-apple-darwin10.8.0, NS appkit-1038.36= Version 10.6.8 (Build 10K549)) of 2018-06-11 built on bonbon Repository revision: 94d60f59fc654706c3a52ed2c90c355b36be7898 Windowing system distributor 'Apple', version 10.3.1038 System Description: Mac OS X 10.6.8 Recent messages: Auto-saving...done Saving file /tmp/aidan/u.el... Wrote /tmp/aidan/u.el Compiling /tmp/aidan/u.el... =E2=80=98labels=E2=80=99 is an obsolete macro (as of 24.3); use =E2=80=98= cl-labels=E2=80=99 instead. Compiling /tmp/aidan/u.el...done Wrote /tmp/aidan/u.elc Loading /tmp/aidan/u.elc...done Quit Mark set [3 times] Configured using: 'configure --with-wide-int CC=3Dgcc-4.2 PKG_CONFIG_PATH=3D/usr/pkg/lib/pkgconfig:/X11/lib/pkgconfig' Configured features: RSVG IMAGEMAGICK DBUS NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS THREADS LCMS2 Important settings: value of $LANG: de_DE.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rmc puny seq dired dired-loaddefs format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-seq cl-macs disass cl-extra cl gv help-fns radix-tree help-mode easymenu cl-loaddefs cl-lib warnings byte-opt compile comint ansi-color ring bytecomp byte-compile cconv time-date elec-pair tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 225419 15013) (symbols 40 21102 1) (miscs 36 68 413) (strings 16 33618 3363) (string-bytes 1 872171) (vectors 12 37343) (vector-slots 8 742671 16894) (floats 8 49 351) (intervals 36 910 74) (buffers 860 18)) --=20 =E2=80=98As I sat looking up at the Guinness ad, I could never figure out= / How your man stayed up on the surfboard after forty pints of stout=E2=80=99 (C. Moore) From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 11 19:31:50 2018 Received: (at 31792) by debbugs.gnu.org; 11 Jun 2018 23:31:50 +0000 Received: from localhost ([127.0.0.1]:43794 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSWHt-0008J8-NF for submit@debbugs.gnu.org; Mon, 11 Jun 2018 19:31:49 -0400 Received: from mail-it0-f53.google.com ([209.85.214.53]:40433) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSWHr-0008Ir-QQ; Mon, 11 Jun 2018 19:31:48 -0400 Received: by mail-it0-f53.google.com with SMTP id 188-v6so12160082ita.5; Mon, 11 Jun 2018 16:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=gPsXO6k6/pSMbsozZbC8hI65L5tsmznw3vuC4KWL+Ao=; b=jWnDaylQlmUF3vbwJclitEwXRZqQmCiE/IaUc2zDy7bTmYRTOAKJkwNqD3ee5IfjG7 fbEsKAbdV6FjJKyfmU2wJjWbboK5B8uT88zBPVX4WeWgl6Mtylsk+rKDEi+H+VSNx1wN t9mPuffdTr/tSPxc41Fw/6yI9zo9sIZAIxag8mw+reSrou0Z4XjRQUYK2IXWTx0jGAVl 7ZU7oNIG9irtdSSdP4jlOAlQXXRM4XUFv+se9zrhgw2djmIykZIRLKXv3MduyJxea48N 0vscoF51y9nVllp36vM6jLsHQTYW3jY7LVHd3AEiICDTe3oADSse/kqF9uZ1i1rq56m8 WT/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=gPsXO6k6/pSMbsozZbC8hI65L5tsmznw3vuC4KWL+Ao=; b=f7bXbpT6/NXJ8LUd54iPJn6X1ByitiorBwyxZ7eRjVQ6oBM6ksM+SJMq19450SCrSJ VbIFrdiE3V9LJkfJ65sqEtrSZ8p3vVzjfOQORTtKaY+L13R7bYGfInFRs3ry08Mid10h 83nL9ygnrSOKqBGb5laNfjOAUWGcMfreG2jfqUUbwClVhk4pi0aTeXLVNnna224VEz9T 7SmVNNjdxz54JS74m86pdxbGK0Q7WI8X3nhd6sitJPjLJEhxzHX8zIDsO78rRkBu56A7 Q6SL0K679LXS1h0qBy2T4vsu15GFYv32o7tjyGHqyqfOexaiclFWIZff8UgYCoGwlM9j soVA== X-Gm-Message-State: APt69E10vSJD0HP1wH3gLt7RcnyIya8V3x4AsLUetG1ooNVVCemOilvK pZJ/YKikSh4YtZ0h5ry/mD76DA== X-Google-Smtp-Source: ADUXVKKG7n8FDvhqL+Krt/noRYAY4pI1IetLNzQyLF62pQclX+m4HCs59sLJVf43QkP/Nu+R8d71hQ== X-Received: by 2002:a24:3d49:: with SMTP id n70-v6mr1027528itn.4.1528759901813; Mon, 11 Jun 2018 16:31:41 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id f12-v6sm4641459itc.41.2018.06.11.16.31.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 11 Jun 2018 16:31:41 -0700 (PDT) From: Noam Postavsky To: Aidan Kehoe Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions References: <5b1f.0188.5dc11.f21c@parhasard.net> Date: Mon, 11 Jun 2018 19:31:39 -0400 In-Reply-To: <5b1f.0188.5dc11.f21c@parhasard.net> (Aidan Kehoe's message of "Tue, 12 Jun 2018 00:11:04 +0100") Message-ID: <878t7kzyqs.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 31792 Cc: 31792@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) found 31792 25.3 quit Aidan Kehoe writes: > When I do the same in the emacs 22.1.1 that Apple built and shipped with > my OS, I get a compiled function object, as is much closer to being the > correct behaviour. Seems to have regressed in Emacs 25, cl-labels still works correctly. Here's a smaller reproducer: (labels ((foo () t)) #'foo) ;=> foo (cl-labels ((foo () t)) #'foo) ;=> (lambda nil t) From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 12 18:58:39 2018 Received: (at 31792) by debbugs.gnu.org; 12 Jun 2018 22:58:39 +0000 Received: from localhost ([127.0.0.1]:45494 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSsFK-0004jv-Tk for submit@debbugs.gnu.org; Tue, 12 Jun 2018 18:58:39 -0400 Received: from mail-it0-f50.google.com ([209.85.214.50]:50372) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSsFJ-0004je-4e; Tue, 12 Jun 2018 18:58:37 -0400 Received: by mail-it0-f50.google.com with SMTP id u4-v6so1441217itg.0; Tue, 12 Jun 2018 15:58:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=2ZkFAWA51U10UI3ampUKbEzZVy5aIHpwYH+ncCw34r8=; b=Ui7NRBDx4pH7Lo2GzjtDVuYtVokinNbIsh4y6PVj5MUMSOlTONWtabNPrRhHvRD97O w0QsiQTWn3JNm813kuucSmjZ28eBL4qBbe9V2l9Uc93FCXG9+m0kkhLxE7HhvOfqxW7W Q98uBzSiedbDogMlllIJzCxuqyqsnlP/dZyTjtAWsKm+EZaTuUuHmOPCDEx+hs0fZ5VW GGvUFn9qNwHtxM86pyAaw35zuLKRpemmdUKI1bPYXt1XbLhJqmAoUctQ2Y6Kx7G7all0 zFQEFYlE5W20zwUtolmHeOlVGmqxUDtUWWzrLKQVAU6ZbFU4HzFsQlNM9l680HlA2c12 RiGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=2ZkFAWA51U10UI3ampUKbEzZVy5aIHpwYH+ncCw34r8=; b=bNP1FaL0MWAuK+oE4dcUVI536KhdllfGsy0gLu4l7MjqSuboypCiwRdEfz6bdnKQqh ge3jZqjgYjlPcDx3i2EjaxlWW7zenbcn7X1X9qYvDY5cp27J0vkKiidAoTe33xhL2TKN FQeAu1tFyL3pu8B9ZHpKmS1jKoF6UI9ZgWD5gnBsCy22FqvnTbtXFoWPi5TBqpW4cq+n QAcFMRHGRgw30fauUahAagG9j6nGOII71pcwqLuQrhS9MNjsvcINJ2+X8bS8IeQw6QCo fa4oQCr4o3O6hUReYbk/kqQJLrZzgLcP84/OXdu9Mre8dnDK4S5GO9cs/CLzu/2MxbZY 8SQQ== X-Gm-Message-State: APt69E39g0yqOFcTT2b8NxpioxVhJjS9DjIuDoV8YWefneDrrqMDCqec JvA6W4pWvB4PZAFapUuWqRNFNQ== X-Google-Smtp-Source: ADUXVKJvKEu8lwUqQ9J+xI6zm/xaTIEyn6EgO6jtr9eYkmfEtd1finduU9EFhGJe5DR732/d2Pmuzw== X-Received: by 2002:a24:d309:: with SMTP id n9-v6mr2644022itg.6.1528844311520; Tue, 12 Jun 2018 15:58:31 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id z68-v6sm540251ioz.79.2018.06.12.15.58.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Jun 2018 15:58:30 -0700 (PDT) From: Noam Postavsky To: Aidan Kehoe Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> Date: Tue, 12 Jun 2018 18:58:29 -0400 In-Reply-To: <878t7kzyqs.fsf@gmail.com> (Noam Postavsky's message of "Mon, 11 Jun 2018 19:31:39 -0400") Message-ID: <87k1r3y5m2.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 31792 Cc: 31792@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain tags 31792 + patch quit > Seems to have regressed in Emacs 25, cl-labels still works correctly. > Here's a smaller reproducer: > > (labels ((foo () t)) > #'foo) ;=> foo > > (cl-labels ((foo () t)) > #'foo) ;=> (lambda nil t) It looks like `labels' missed the update in [1: 69f36afa11], here's a patch to apply it. It's not immediately clear to me if the requirement to use a backquoted lambda vs closure is based on using lexical scoping where the macro is defined or where it's used, so I left that as is. Should be fine for emacs-26, I think. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Fix-fun-handling-inside-labels-Bug-31792.patch Content-Description: patch >From aa197176d0de4a6b7d1ee5d16d0fc1750f7237cf Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 12 Jun 2018 18:41:46 -0400 Subject: [PATCH] Fix #'fun handling inside `labels' (Bug#31792) * lisp/emacs-lisp/cl.el (labels): Apply the equivalent of the cl-labels change from 2015-01-16 "* lisp/emacs-lisp/cl-macs.el: Fix last change". --- lisp/emacs-lisp/cl.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index d53c8e0bbc..85deb8cb4f 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -466,8 +466,9 @@ labels (push var sets) (push (cons (car binding) `(lambda (&rest cl-labels-args) - (cl-list* 'funcall ',var - cl-labels-args))) + (if (eq (car cl-labels-args) cl--labels-magic) + (list cl--labels-magic ',var) + (cl-list* 'funcall ',var cl-labels-args)))) newenv))) (macroexpand-all `(lexical-let ,vars (setq ,@sets) ,@body) newenv))) -- 2.11.0 --=-=-= Content-Type: text/plain [1: 69f36afa11]: 2015-01-16 17:49:00 -0500 * lisp/emacs-lisp/cl-macs.el: Fix last change. https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=69f36afa11c0b754c40f4fc57408ccd85428e2b0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 13 09:16:05 2018 Received: (at 31792) by debbugs.gnu.org; 13 Jun 2018 13:16:05 +0000 Received: from localhost ([127.0.0.1]:45861 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT5d7-00054h-9l for submit@debbugs.gnu.org; Wed, 13 Jun 2018 09:16:05 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:50106) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT5d4-00054Y-Q2 for 31792@debbugs.gnu.org; Wed, 13 Jun 2018 09:16:04 -0400 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id w5DDG1OH021207; Wed, 13 Jun 2018 09:16:01 -0400 Received: by pastel.home (Postfix, from userid 20848) id 12EFA655DC; Wed, 13 Jun 2018 09:16:01 -0400 (EDT) From: Stefan Monnier To: Noam Postavsky Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions Message-ID: References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> <87k1r3y5m2.fsf@gmail.com> Date: Wed, 13 Jun 2018 09:16:01 -0400 In-Reply-To: <87k1r3y5m2.fsf@gmail.com> (Noam Postavsky's message of "Tue, 12 Jun 2018 18:58:29 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6307=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6307> : inlines <6692> : streams <1789565> : uri <2657488> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 31792 Cc: Aidan Kehoe , 31792@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el > index d53c8e0bbc..85deb8cb4f 100644 > --- a/lisp/emacs-lisp/cl.el > +++ b/lisp/emacs-lisp/cl.el > @@ -466,8 +466,9 @@ labels > (push var sets) > (push (cons (car binding) > `(lambda (&rest cl-labels-args) > - (cl-list* 'funcall ',var > - cl-labels-args))) > + (if (eq (car cl-labels-args) cl--labels-magic) > + (list cl--labels-magic ',var) > + (cl-list* 'funcall ',var cl-labels-args)))) > newenv))) > (macroexpand-all `(lexical-let ,vars (setq ,@sets) ,@body) newenv))) Looks good, but please add a comment before the call to macroexpand-all reminding that lexical-let installs a macroexpander for `function` that ends up calling cl--labels-convert. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 13 12:57:07 2018 Received: (at 31792) by debbugs.gnu.org; 13 Jun 2018 16:57:07 +0000 Received: from localhost ([127.0.0.1]:46836 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT951-0007pg-5j for submit@debbugs.gnu.org; Wed, 13 Jun 2018 12:57:07 -0400 Received: from colin.muc.de ([193.149.48.1]:40122 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1fT94y-0007pX-Uy for 31792@debbugs.gnu.org; Wed, 13 Jun 2018 12:57:05 -0400 Received: (qmail 46842 invoked by uid 3782); 13 Jun 2018 16:57:03 -0000 Date: 13 Jun 2018 16:57:03 -0000 Message-ID: <20180613165703.46841.qmail@mail.muc.de> From: Alan Mackenzie To: Noam Postavsky Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions Organization: muc.de e.V. In-Reply-To: X-Newsgroups: gnu.emacs.bug User-Agent: tin/2.4.2-20171224 ("Lochhead") (UNIX) (FreeBSD/11.1-RELEASE-p10 (amd64)) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 31792 Cc: 31792@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) In article you wrote: > found 31792 25.3 > quit > Aidan Kehoe writes: >> When I do the same in the emacs 22.1.1 that Apple built and shipped with >> my OS, I get a compiled function object, as is much closer to being the >> correct behaviour. > Seems to have regressed in Emacs 25, cl-labels still works correctly. > Here's a smaller reproducer: > (labels ((foo () t)) > #'foo) ;=> foo > (cl-labels ((foo () t)) > #'foo) ;=> (lambda nil t) Just as a matter of interest, the doc strings for both these functions are poor. That for cl-labels says "make temporary function bindings" without saying what a "function binding" is (it's not obvious), without saying what functions (?or symbols) are being bound, and doesn't say whether they get bound one after the other (in `let*' fashion) or all at once (in `let' fashion). It goes on to say "The bindings can be recursive, ...". This is gibberish to me. Further, "the scoping is lexical". The scoping of what is lexical? And in what? I dare say I could fathom out most of these things with effort, but I shouldn't have to. Maybe this macro could be of use to me, but with the doc string as it is, I'll never find out. Pity. -- Alan Mackenzie (Nuremberg, Germany). From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 13 13:03:08 2018 Received: (at 31792) by debbugs.gnu.org; 13 Jun 2018 17:03:08 +0000 Received: from localhost ([127.0.0.1]:46840 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT9Ap-0007zL-Su for submit@debbugs.gnu.org; Wed, 13 Jun 2018 13:03:08 -0400 Received: from mail-ot0-f182.google.com ([74.125.82.182]:35994) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT9Ao-0007yv-DE for 31792@debbugs.gnu.org; Wed, 13 Jun 2018 13:03:06 -0400 Received: by mail-ot0-f182.google.com with SMTP id c15-v6so3805690otl.3 for <31792@debbugs.gnu.org>; Wed, 13 Jun 2018 10:03:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=kNUlIqSjMHmLVrCYR3yb5Pdf5wApu+d/VjkvSZcPNuA=; b=BQdwcepHTfSfkZ6WCmRiBKusVPaXerrdMF+nMQmdrQ4hgItOV8RtVtE87iWZKupHMl ZYjEelpDEROeOHNgW8bUrpHp7S9uFBZ7DjcXv+CPopcWVkwePnHSaWUoFTOQBt7OHTOo 2STXUs+PpUfOKCjNYjH71zU2Jt4S24CkQJSdLypbCflV/naaJ1T3PwCWgUwiIe9VaKZa 7hDYIbd4nflmfcFnjg8R2mLQ3QyaAvpWWig9cHtJLCouO/3LtPFdmbwNZThKHJRWLAwa bapj+NZKa4H9e3z1zM6K7WpsF/mbc1ZiZ6+DLe2HNTnjXuFJLDFNyrq23PkTovUTo/rf 9+zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=kNUlIqSjMHmLVrCYR3yb5Pdf5wApu+d/VjkvSZcPNuA=; b=KxcVb0Q8ce8TrdwvRH8EaVZ2tqb4krrOEMzp4+E2+2nQ4FPpl6e3DH3jPUHV+849vD EVpTNd8teJvyxRdcSdpfBK01c8Oq03WX5ITKGmPeEKu7nqZLVryOIkGa4Nc/kMyjVZLB PZjLHYLbro5q1SD+LzuNipIox/d/qd4iajtqS8RUps3Bp80T6+Qb9n6Ua5K2s+QGzFE7 rBKq0TmlIRMEJJL4HHSDvxFLdTwuiZJ8LxvRDYSwhqe2PKDjY8m/24eszktG2zm/+usn 88GJ886YgPIGNa0Y/sn7s9gumiHC0CCEBIZIj58HJLO5Y6zlE/Sgo9beN631cM/lWHIz kVTw== X-Gm-Message-State: APt69E3RWeeZIQXRJeDdXxJxKC6+fglgOl8YvkSD5c+O6PCc3IgLYl15 xa9aXh9djeaP8FgIFu+E4NKnM+/n3jAUmCsXU8XLSw== X-Google-Smtp-Source: ADUXVKII+eKyqc/WxeXGmZwNNejLCVJfy9h01aLQgmUYF8ubUup0JZDfft0t8zr4UIUCgrJn/BpKK20d3ZcgUWqY48o= X-Received: by 2002:a9d:5550:: with SMTP id h16-v6mr3356487oti.24.1528909380844; Wed, 13 Jun 2018 10:03:00 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:3b84:0:0:0:0:0 with HTTP; Wed, 13 Jun 2018 10:03:00 -0700 (PDT) In-Reply-To: <20180613165703.46841.qmail@mail.muc.de> References: <20180613165703.46841.qmail@mail.muc.de> From: Noam Postavsky Date: Wed, 13 Jun 2018 13:03:00 -0400 Message-ID: Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions To: Alan Mackenzie Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 31792 Cc: 31792@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 13 June 2018 at 12:57, Alan Mackenzie wrote: >> (labels ((foo () t)) >> #'foo) ;=> foo > >> (cl-labels ((foo () t)) >> #'foo) ;=> (lambda nil t) > > Just as a matter of interest, the doc strings for both these functions > are poor. Yes; the manual's descriptions are much better. (cl) Function Bindings https://www.gnu.org/software/emacs/manual/html_node/cl/Function-Bindings.html From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 13 23:25:01 2018 Received: (at 31792) by debbugs.gnu.org; 14 Jun 2018 03:25:01 +0000 Received: from localhost ([127.0.0.1]:47133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTIse-0002kX-VR for submit@debbugs.gnu.org; Wed, 13 Jun 2018 23:25:01 -0400 Received: from mail-it0-f54.google.com ([209.85.214.54]:34783) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTIsd-0002kK-9f for 31792@debbugs.gnu.org; Wed, 13 Jun 2018 23:24:59 -0400 Received: by mail-it0-f54.google.com with SMTP id y127-v6so1218431itd.1 for <31792@debbugs.gnu.org>; Wed, 13 Jun 2018 20:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=3yQ9FrQWEnBCUw0ODA++6wcNHjKAsDjijVDnLGihh6M=; b=M4uG1hWaKrWBfC4RusnvOHIproab/AKkiQup5Cb8COt7RNlIveVHFovyDLAJosd2LO Jv05/B6FPZmAfGQ8PWdZ9hyFbY+epurtz5bcl0DdOCnEnssPLmu5Uq1GGb1gVAKabibQ M/rsBEvulsCdsGzbBjAFlDlB+MppnBxV7M2av8kwfoZcctJk0RHkkceDPZDbIfjhuCl7 qbpH8nkKYxGlKa+vY4groPkKCQfNvvb0KZ39lfZG/vVNjuxUIcVXeMWFciV5O5qdx3be q66+keaAm5ufyacuOiKXYv+oR4UHNCKVhN3X3UdV4FaS+YjKxrHB6NI20nzM4EXVLK0O SB+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=3yQ9FrQWEnBCUw0ODA++6wcNHjKAsDjijVDnLGihh6M=; b=UlBMRxTgSwn9aCo6/l21KjZG0rzKD94lf9/NEI7hyai/UcsdYoa/5GAeRPB+gZZXZJ Gjfun6EXI1Jz74/uSrHo90kI2j2cI+3uNNHXY6kOxhHO97XQPRiIElL8Qqcw1hQVNZ0K 4TlrIzKa5VsOvZTABtw56mmWGJYTCHmpHfsk4jrhB+ibSRkdHmOz8tDyFhGxtdZQ6ahb Zx1WooCdvJpcHcepj5BtZjGQEZNhbC8D8afaOGe6F7zBRqABCH35tCIo0r9+c+K+m/xV GrEBKa5jymH0uhXr4MkZWt8VX9TqxVlPtPCYmeFqKvu3NdQTSHHBdtMazOrgGc78eZCJ 8mgw== X-Gm-Message-State: APt69E2xiCfYfaaUHuMmyIoWl7fi0YS8FUKdDJgEnX9KrPJscTBmub4C K7FVTvj/UoLh7AKW1TQ4jAA= X-Google-Smtp-Source: ADUXVKIUy2qffryr02OwMmx/i7kKxMiXAiw1BfDkkr2ujqXMUZar7vHHTZZOymqSqXSCp4eWOWju0g== X-Received: by 2002:a24:2e58:: with SMTP id i85-v6mr685683ita.114.1528946693781; Wed, 13 Jun 2018 20:24:53 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id c102-v6sm526296itd.3.2018.06.13.20.24.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 13 Jun 2018 20:24:52 -0700 (PDT) From: Noam Postavsky To: Stefan Monnier Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> <87k1r3y5m2.fsf@gmail.com> Date: Wed, 13 Jun 2018 23:24:50 -0400 In-Reply-To: (Stefan Monnier's message of "Wed, 13 Jun 2018 09:16:01 -0400") Message-ID: <87muvyvym5.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 31792 Cc: Aidan Kehoe , 31792@debbugs.gnu.org, Alan Mackenzie X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Stefan Monnier writes: > Looks good, but please add a comment before the call to macroexpand-all > reminding that lexical-let installs a macroexpander for `function` that > ends up calling cl--labels-convert. Ok, I extended the docstrings of cl-labels and cl-flet a bit and added a test too. --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=0001-Fix-fun-handling-inside-labels-Bug-31792.patch Content-Description: patch >From c344010e7e2922a75769926896d585d367bbc5a8 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 12 Jun 2018 18:41:46 -0400 Subject: [PATCH] Fix #'fun handling inside `labels' (Bug#31792) * lisp/emacs-lisp/cl.el (labels): Apply the equivalent of the cl-labels change from 2015-01-16 "* lisp/emacs-lisp/cl-macs.el: Fix last change". * lisp/emacs-lisp/cl-macs.el (cl-flet, cl-labels): Improve docstring, link to relevant manual page. * test/lisp/emacs-lisp/cl-tests.el (labels-function-quoting): New test. --- lisp/emacs-lisp/cl-macs.el | 16 ++++++++++++---- lisp/emacs-lisp/cl.el | 7 +++++-- test/lisp/emacs-lisp/cl-tests.el | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 test/lisp/emacs-lisp/cl-tests.el diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 9c47ceae18..e80efecac9 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1964,13 +1964,17 @@ cl--labels-convert ;;;###autoload (defmacro cl-flet (bindings &rest body) "Make local function definitions. -Like `cl-labels' but the definitions are not recursive. +Bind the function cells of symbols within FORM. Each binding can take the form (FUNC EXP) where FUNC is the function name, and EXP is an expression that returns the function value to which it should be bound, or it can take the more common form \(FUNC ARGLIST BODY...) which is a shorthand for (FUNC (lambda ARGLIST BODY)). +The bindings only take effect within FORM, not BODY, so you can't +write recursive function definitions. Use `cl-labels' for that. +See info node `(cl) Function Bindings' for details. + \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" (declare (indent 1) (debug ((&rest (cl-defun)) cl-declarations body))) (let ((binds ()) (newenv macroexpand-all-environment)) @@ -2012,9 +2016,13 @@ cl-flet* ;;;###autoload (defmacro cl-labels (bindings &rest body) - "Make temporary function bindings. -The bindings can be recursive and the scoping is lexical, but capturing them -in closures will only work if `lexical-binding' is in use. + "Make local function definitions. +Bind the function cells of symbols within FORM. Each binding can +take the form (FUNC ARGLIST BODY...) where FUNC is the function +name, ARGLIST its arguments, and BODY the forms of the function +body. The bindings can be referenced from any BODY, as well as +FORM, so you can write recursive and mutually recursive function +definitions. See info node `(cl) Function Bindings' for details. \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" (declare (indent 1) (debug cl-flet)) diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index d53c8e0bbc..f6643158d2 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -466,9 +466,12 @@ labels (push var sets) (push (cons (car binding) `(lambda (&rest cl-labels-args) - (cl-list* 'funcall ',var - cl-labels-args))) + (if (eq (car cl-labels-args) cl--labels-magic) + (list cl--labels-magic ',var) + (cl-list* 'funcall ',var cl-labels-args)))) newenv))) + ;; `lexical-let' adds `cl--function-convert' (which calls + ;; `cl--labels-convert') as a macroexpander for `function'. (macroexpand-all `(lexical-let ,vars (setq ,@sets) ,@body) newenv))) ;; Generalized variables are provided by gv.el, but some details are diff --git a/test/lisp/emacs-lisp/cl-tests.el b/test/lisp/emacs-lisp/cl-tests.el new file mode 100644 index 0000000000..b673822cd9 --- /dev/null +++ b/test/lisp/emacs-lisp/cl-tests.el @@ -0,0 +1,35 @@ +;;; cl-tests.el --- tests for emacs-lisp/cl.el -*- lexical-binding:t -*- + +;; Copyright (C) 2018 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; This program is free software: you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation, either version 3 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see `https://www.gnu.org/licenses/'. + +;;; Commentary: + +;;; Code: + +(require 'cl) +(require 'ert) + + + +(ert-deftest labels-function-quoting () + "Test that #'foo does the right thing in `labels'." ; Bug#31792. + (should (eq (funcall (labels ((foo () t)) + #'foo)) + t))) + +;;; cl-tests.el ends here -- 2.11.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 13 23:32:07 2018 Received: (at 31792) by debbugs.gnu.org; 14 Jun 2018 03:32:07 +0000 Received: from localhost ([127.0.0.1]:47147 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTIzW-0002vZ-TG for submit@debbugs.gnu.org; Wed, 13 Jun 2018 23:32:07 -0400 Received: from chene.dit.umontreal.ca ([132.204.246.20]:36864) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTIzV-0002vR-44 for 31792@debbugs.gnu.org; Wed, 13 Jun 2018 23:32:06 -0400 Received: from ceviche.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id w5E3WVGe026409; Wed, 13 Jun 2018 23:32:31 -0400 Received: by ceviche.home (Postfix, from userid 20848) id 613BE660EB; Wed, 13 Jun 2018 23:32:02 -0400 (EDT) From: Stefan Monnier To: Noam Postavsky Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions Message-ID: References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> <87k1r3y5m2.fsf@gmail.com> <87muvyvym5.fsf@gmail.com> Date: Wed, 13 Jun 2018 23:32:02 -0400 In-Reply-To: <87muvyvym5.fsf@gmail.com> (Noam Postavsky's message of "Wed, 13 Jun 2018 23:24:50 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6307=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6307> : inlines <6696> : streams <1789622> : uri <2657827> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 31792 Cc: Aidan Kehoe , 31792@debbugs.gnu.org, Alan Mackenzie X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > (defmacro cl-flet (bindings &rest body) > "Make local function definitions. > -Like `cl-labels' but the definitions are not recursive. > +Bind the function cells of symbols within FORM. I think this is wrong: it makes it sound like it does `fset`, which is what CL's `flet` did, but not what `cl-flet` does. If you look at the implementation, you'll see that it doesn't touch any "function cell". > +The bindings only take effect within FORM, not BODY, so you can't > +write recursive function definitions. Use `cl-labels' for that. > +See info node `(cl) Function Bindings' for details. This is good, thanks. > (defmacro cl-labels (bindings &rest body) > - "Make temporary function bindings. > -The bindings can be recursive and the scoping is lexical, but capturing them > -in closures will only work if `lexical-binding' is in use. > + "Make local function definitions. > +Bind the function cells of symbols within FORM. Same here about "function cells". > diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el > index d53c8e0bbc..f6643158d2 100644 > --- a/lisp/emacs-lisp/cl.el > +++ b/lisp/emacs-lisp/cl.el > @@ -466,9 +466,12 @@ labels > (push var sets) > (push (cons (car binding) > `(lambda (&rest cl-labels-args) > - (cl-list* 'funcall ',var > - cl-labels-args))) > + (if (eq (car cl-labels-args) cl--labels-magic) > + (list cl--labels-magic ',var) > + (cl-list* 'funcall ',var cl-labels-args)))) > newenv))) > + ;; `lexical-let' adds `cl--function-convert' (which calls > + ;; `cl--labels-convert') as a macroexpander for `function'. > (macroexpand-all `(lexical-let ,vars (setq ,@sets) ,@body) newenv))) Good, thanks. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 14 00:14:02 2018 Received: (at 31792) by debbugs.gnu.org; 14 Jun 2018 04:14:02 +0000 Received: from localhost ([127.0.0.1]:47212 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTJe6-0007wZ-5p for submit@debbugs.gnu.org; Thu, 14 Jun 2018 00:14:02 -0400 Received: from mail-it0-f48.google.com ([209.85.214.48]:35238) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTJe2-0007vw-Bq for 31792@debbugs.gnu.org; Thu, 14 Jun 2018 00:14:01 -0400 Received: by mail-it0-f48.google.com with SMTP id a3-v6so6933360itd.0 for <31792@debbugs.gnu.org>; Wed, 13 Jun 2018 21:13:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=FXLd+n1bwgMiDoHTB7FBUfTqV+I//81XReFerKRitE8=; b=EKrRB+H+CX5nCLxm7a/oTbEX5N/n2k+9Y14Bz7lNHUUBOswcmi76G2xMuV6HGoluP4 Kn0CeYWR5DXcb9GMcBoTxU7I/pCjhzDOoF1Nzdlfk2d5GALdoeuns0I046ifzX8u1Kmw vkHQcsA9eTx4gEigixqYnYDOlvbLFRXuJnQHcb2Eym3iz/RP/rBQPKqzFSNXlu/hAxbT TbZ+rz1lRvVem6LgH6okvmLXuy7guGILzFmJTE7IQAT2Q3cN1Ze/M2QmZ5o5w4+iCQ6c 3VeNCoab78rnsOqzoJu/pg8lJbJIfETEHspPCxMNer/cpxLflxQ0rbN9G9j91prOJoiw Tr1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=FXLd+n1bwgMiDoHTB7FBUfTqV+I//81XReFerKRitE8=; b=l8MFL1PJrMabS2mvdoET/M0hECCLnJSALYntqNME/Ad2QbzWLzRMVsrPfrUw5bNP1W 4M+ag2rFaubHsoFoTcSQbLdp/vh0NjGW28qPEN1u7Zb7rbkbBawes9//mSmOs2HugEmN a5vMS7Dnk9GoFnqAGY+LJqDJ9mWmPoSNe6L3RR/A5VbzcVQYVG28ZqKwv9k5TaKbnaTc AUtOijN7PRArOTL5FQA3Ia52Qo6M949YvS86ldLnfEI2FLJriaSC3QtyL3voSx0DXbVh daWEhSFYqrH7O5Jkem+H5gBzgjmgkz1COEZoMNmDgjVaElgcE9NMcdmxPvtZfHWlGt7+ pN2w== X-Gm-Message-State: APt69E2jnzfdIL3QJIJ2UVCTd/RgI8OfbLsNWcjvT0HLeika9WuvMZ5h CVVH7R9ucqQiOI5DdSvGMPo= X-Google-Smtp-Source: ADUXVKLN3vHE0x8qGSOOBG7zcOJ1sYeMLLDLd6TsBK9WnhazBig6wGGgdtwvv/qvSXv+DnnmSUO2pQ== X-Received: by 2002:a24:148f:: with SMTP id 137-v6mr713415itg.58.1528949632927; Wed, 13 Jun 2018 21:13:52 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id z6-v6sm2428355ita.21.2018.06.13.21.13.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 13 Jun 2018 21:13:51 -0700 (PDT) From: Noam Postavsky To: Stefan Monnier Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> <87k1r3y5m2.fsf@gmail.com> <87muvyvym5.fsf@gmail.com> Date: Thu, 14 Jun 2018 00:13:50 -0400 In-Reply-To: (Stefan Monnier's message of "Wed, 13 Jun 2018 23:32:02 -0400") Message-ID: <87h8m6vwch.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 31792 Cc: Aidan Kehoe , 31792@debbugs.gnu.org, Alan Mackenzie X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Stefan Monnier writes: >> +Bind the function cells of symbols within FORM. > > I think this is wrong: it makes it sound like it does `fset`, which > is what CL's `flet` did, but not what `cl-flet` does. > If you look at the implementation, you'll see that it doesn't touch any > "function cell". Hmm, the manual page says something similar: -- Macro: cl-flet (bindings...) forms... This form establishes `let'-style bindings on the function cells of symbols rather than on the value cells. It also wrongly claims that (quote FUNC) would work: A "reference" to a function name is either a call to that function, or a use of its name quoted by `quote' or `function' to ^^^^^^^ be passed on to, say, `mapcar'. Perhaps both of those are leftovers from the original `flet' description. How about this: --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v3-0001-Fix-fun-handling-inside-labels-Bug-31792.patch Content-Description: patch >From f83d79ca2707f4bbe0bc1b0a74ee78d7cc64cbe5 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 12 Jun 2018 18:41:46 -0400 Subject: [PATCH v3] Fix #'fun handling inside `labels' (Bug#31792) * lisp/emacs-lisp/cl.el (labels): Apply the equivalent of the cl-labels change from 2015-01-16 "* lisp/emacs-lisp/cl-macs.el: Fix last change". * test/lisp/emacs-lisp/cl-tests.el (labels-function-quoting): New test. * lisp/emacs-lisp/cl-macs.el (cl-flet, cl-labels): Improve docstring, link to relevant manual page. * doc/misc/cl.texi (Function Bindings): Don't imply that function cells of symbols are modified by cl-flet. Don't claim that cl-flet or cl-labels affect references of the form (quote FUNC). --- doc/misc/cl.texi | 23 ++++++++++------------- lisp/emacs-lisp/cl-macs.el | 17 ++++++++++++----- lisp/emacs-lisp/cl.el | 7 +++++-- test/lisp/emacs-lisp/cl-tests.el | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 20 deletions(-) create mode 100644 test/lisp/emacs-lisp/cl-tests.el diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index bf85b00e93..553b935b1e 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -1299,17 +1299,18 @@ Function Bindings of variables. @defmac cl-flet (bindings@dots{}) forms@dots{} -This form establishes @code{let}-style bindings on the function -cells of symbols rather than on the value cells. Each @var{binding} -must be a list of the form @samp{(@var{name} @var{arglist} -@var{forms}@dots{})}, which defines a function exactly as if -it were a @code{cl-defun} form. The function @var{name} is defined -accordingly but only within the body of the @code{cl-flet}, hiding any external -definition if applicable. +This form establishes @code{let}-style bindings for functions rather +than values. Each @var{binding} must be a list of the form +@samp{(@var{name} @var{arglist} @var{body}@dots{})}. Within +@var{forms}, any reference to the function @var{name} uses the local +definition instead of the global one. + +A ``reference'' to a function name is either a call to that function, +or a use of its name quoted by @code{function} to be passed on to, +say, @code{mapcar}. The bindings are lexical in scope. This means that all references to -the named functions must appear physically within the body of the -@code{cl-flet} form. +the named functions must appear physically within @var{forms}. Functions defined by @code{cl-flet} may use the full Common Lisp argument notation supported by @code{cl-defun}; also, the function @@ -1336,10 +1337,6 @@ Function Bindings the functions themselves. Thus, @code{cl-labels} can define local recursive functions, or mutually-recursive sets of functions. -A ``reference'' to a function name is either a call to that -function, or a use of its name quoted by @code{quote} or -@code{function} to be passed on to, say, @code{mapcar}. - Note that the @file{cl.el} version of this macro behaves slightly differently. @xref{Obsolete Macros}. @end defmac diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 9c47ceae18..0854e665b9 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1964,13 +1964,16 @@ cl--labels-convert ;;;###autoload (defmacro cl-flet (bindings &rest body) "Make local function definitions. -Like `cl-labels' but the definitions are not recursive. -Each binding can take the form (FUNC EXP) where +Each definition can take the form (FUNC EXP) where FUNC is the function name, and EXP is an expression that returns the function value to which it should be bound, or it can take the more common form \(FUNC ARGLIST BODY...) which is a shorthand for (FUNC (lambda ARGLIST BODY)). +FUNC is defined only within FORM, not BODY, so you can't write +recursive function definitions. Use `cl-labels' for that. See +info node `(cl) Function Bindings' for details. + \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" (declare (indent 1) (debug ((&rest (cl-defun)) cl-declarations body))) (let ((binds ()) (newenv macroexpand-all-environment)) @@ -2012,9 +2015,13 @@ cl-flet* ;;;###autoload (defmacro cl-labels (bindings &rest body) - "Make temporary function bindings. -The bindings can be recursive and the scoping is lexical, but capturing them -in closures will only work if `lexical-binding' is in use. + "Make local (recursive) function definitions. +Each definition can take the form (FUNC ARGLIST BODY...) where +FUNC is the function name, ARGLIST its arguments, and BODY the +forms of the function body. FUNC is defined in any BODY, as well +as FORM, so you can write recursive and mutually recursive +function definitions. See info node `(cl) Function Bindings' for +details. \(fn ((FUNC ARGLIST BODY...) ...) FORM...)" (declare (indent 1) (debug cl-flet)) diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index d53c8e0bbc..f6643158d2 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -466,9 +466,12 @@ labels (push var sets) (push (cons (car binding) `(lambda (&rest cl-labels-args) - (cl-list* 'funcall ',var - cl-labels-args))) + (if (eq (car cl-labels-args) cl--labels-magic) + (list cl--labels-magic ',var) + (cl-list* 'funcall ',var cl-labels-args)))) newenv))) + ;; `lexical-let' adds `cl--function-convert' (which calls + ;; `cl--labels-convert') as a macroexpander for `function'. (macroexpand-all `(lexical-let ,vars (setq ,@sets) ,@body) newenv))) ;; Generalized variables are provided by gv.el, but some details are diff --git a/test/lisp/emacs-lisp/cl-tests.el b/test/lisp/emacs-lisp/cl-tests.el new file mode 100644 index 0000000000..b673822cd9 --- /dev/null +++ b/test/lisp/emacs-lisp/cl-tests.el @@ -0,0 +1,35 @@ +;;; cl-tests.el --- tests for emacs-lisp/cl.el -*- lexical-binding:t -*- + +;; Copyright (C) 2018 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; This program is free software: you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation, either version 3 of the +;; License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see `https://www.gnu.org/licenses/'. + +;;; Commentary: + +;;; Code: + +(require 'cl) +(require 'ert) + + + +(ert-deftest labels-function-quoting () + "Test that #'foo does the right thing in `labels'." ; Bug#31792. + (should (eq (funcall (labels ((foo () t)) + #'foo)) + t))) + +;;; cl-tests.el ends here -- 2.11.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 14 14:05:14 2018 Received: (at 31792) by debbugs.gnu.org; 14 Jun 2018 18:05:14 +0000 Received: from localhost ([127.0.0.1]:48410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTWcU-0007up-7V for submit@debbugs.gnu.org; Thu, 14 Jun 2018 14:05:14 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:40182) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fTWcS-0007uf-MV for 31792@debbugs.gnu.org; Thu, 14 Jun 2018 14:05:13 -0400 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id w5EI5BnQ028006; Thu, 14 Jun 2018 14:05:11 -0400 Received: by pastel.home (Postfix, from userid 20848) id 3DD13656D5; Thu, 14 Jun 2018 14:05:11 -0400 (EDT) From: Stefan Monnier To: Noam Postavsky Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions Message-ID: References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> <87k1r3y5m2.fsf@gmail.com> <87muvyvym5.fsf@gmail.com> <87h8m6vwch.fsf@gmail.com> Date: Thu, 14 Jun 2018 14:05:11 -0400 In-Reply-To: <87h8m6vwch.fsf@gmail.com> (Noam Postavsky's message of "Thu, 14 Jun 2018 00:13:50 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6308=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6308> : inlines <6698> : streams <1789680> : uri <2658181> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 31792 Cc: Aidan Kehoe , 31792@debbugs.gnu.org, Alan Mackenzie X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> I think this is wrong: it makes it sound like it does `fset`, which >> is what CL's `flet` did, but not what `cl-flet` does. >> If you look at the implementation, you'll see that it doesn't touch any >> "function cell". > > Hmm, the manual page says something similar: > > -- Macro: cl-flet (bindings...) forms... > This form establishes `let'-style bindings on the function cells > of symbols rather than on the value cells. > > It also wrongly claims that (quote FUNC) would work: > > A "reference" to a function name is either a call to that > function, or a use of its name quoted by `quote' or `function' to > ^^^^^^^ > be passed on to, say, `mapcar'. > > Perhaps both of those are leftovers from the original `flet' > description. Sounds like it, yes. > How about this: Looks good to me, thank you, Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 19 20:08:23 2018 Received: (at 31792) by debbugs.gnu.org; 20 Jun 2018 00:08:24 +0000 Received: from localhost ([127.0.0.1]:56748 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fVQff-0000Eu-Ky for submit@debbugs.gnu.org; Tue, 19 Jun 2018 20:08:23 -0400 Received: from mail-io0-f170.google.com ([209.85.223.170]:33701) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fVQfd-0000Eb-Ml; Tue, 19 Jun 2018 20:08:21 -0400 Received: by mail-io0-f170.google.com with SMTP id d185-v6so1892801ioe.0; Tue, 19 Jun 2018 17:08:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=QUWoTqxlAJ1CUs5V3gVb5RKAJCh/1UwEKInIW8N6tek=; b=SNixh8T4VDdEUOLsBj01heWlDKpFZHD3bEmMyY9zZQncXi3xPF9WkV/InZn+55XU1Z 4z/7RSAqzomNLgZ4Wcm2llXZxlM2v2zoECGc9d9UTdvkV75Tw5Q78Fp8dWhpU70UpeDA FCEaOlV3lem6F2yoE4mGKMle4VtM0UdpMEwzRYhod4RkfwmIS+Bvov/ocnHqxIgwLSkm BgYByViY6xQgRuGuUucH4hSI4HyJheTWhz/frdsmvJH2/8pCIat3XCaLzuOu+tAya/1a G73APsGZYzjVaTwQcrsg9EBBYi4UjzchczUfLj31T09UcRJVTN95QM+VntLXhRZ+C2Tt GIRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=QUWoTqxlAJ1CUs5V3gVb5RKAJCh/1UwEKInIW8N6tek=; b=auTX0jzEwUFVOMqoYTi5pMIDh1/Gjv9PoWxhHNsSK6NqiLh/7HrRva8tWEZrZOqriG qSRubaUxRTdWJLvHaP21eRJTb6x/Ot3FJpoLxPsSK2YqVKBuiKCA63mPKG+asd5Byh0t 4g+o3jBnYWhz0ZnqF8JX72s3GUOmKW6UjiGuf1tTaVYK8F7P1YF2P6q6SgAix9e25UWi 2yOVN/FqgZWYd1EKnCLxaFpLA5B1RVjH98opUaUbLDTOBHtx/JzXcYT06kmKFfavOLO2 2pefCpVfBSdVuGN2vkAwTqki9XYDKwN37H+dNknDiXqAbWGtlm05Lb0+Dt7yiPCXf3IG W4EA== X-Gm-Message-State: APt69E0tvo/Q6N0o9Z458IxoFDyg8PEa2RBxbkAdIaoUbQM5VDsiV6Kf ESBZlegAR9Eo7vf8zkAvRuFiow== X-Google-Smtp-Source: ADUXVKJyCNpt9T6LwhxyAHOcmYMGNIMqJPBpBYE8bDVkv/HWCfJxf53Udqo/59sfruTZ0LomzJVzqQ== X-Received: by 2002:a6b:b288:: with SMTP id b130-v6mr15954555iof.153.1529453295992; Tue, 19 Jun 2018 17:08:15 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id x97-v6sm716288ita.18.2018.06.19.17.08.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Jun 2018 17:08:15 -0700 (PDT) From: Noam Postavsky To: Stefan Monnier Subject: Re: bug#31792: 27.0.50; Regression in #'labels, recent versions References: <5b1f.0188.5dc11.f21c@parhasard.net> <878t7kzyqs.fsf@gmail.com> <87k1r3y5m2.fsf@gmail.com> <87muvyvym5.fsf@gmail.com> <87h8m6vwch.fsf@gmail.com> Date: Tue, 19 Jun 2018 20:08:13 -0400 In-Reply-To: (Stefan Monnier's message of "Thu, 14 Jun 2018 14:05:11 -0400") Message-ID: <87vaaes4k2.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 31792 Cc: Aidan Kehoe , 31792@debbugs.gnu.org, Alan Mackenzie X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 31792 fixed close 31792 26.2 quit Stefan Monnier writes: > Looks good to me, thank you, Pushed to emacs-26. [1: e292c0973c]: 2018-06-19 20:02:16 -0400 Fix #'fun handling inside `labels' (Bug#31792) https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e292c0973cf7a92819d312ea8a828b67e6adf1ab From unknown Fri Aug 15 14:16:50 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 18 Jul 2018 11:24:07 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator